三員分立
Doggy は中国の等保(情報セキュリティ等級保護)基準に適合する三員分立セキュリティモデルを実装しています。ThreeOfficersVoter で権限制御を実現します。
概要
三員分立はシステム管理権限を 3 つの独立したロールに分離し、App\Security\Voter\ThreeOfficersVoter で細粒度の権限チェックを実現します:
| ロール | 権限範囲 |
|---|---|
ROLE_SYS_ADMIN | システム設定、ユーザー管理 |
ROLE_SEC_ADMIN | セキュリティポリシー設定 |
ROLE_AUDITOR | 監査ログの閲覧 |
三員は相互に独立し、相互に牽制します。単一のロールだけではシステムを完全に制御できません。
Voter 権限定義
php
// src/Security/Voter/ThreeOfficersVoter.php
class ThreeOfficersVoter extends Voter
{
public const SYSTEM_CONFIG = 'SYSTEM_CONFIG'; // 系统管理员
public const USER_MANAGE = 'USER_MANAGE'; // 安全保密员
public const AUDIT_VIEW = 'AUDIT_VIEW'; // 安全审计员
public const BUSINESS_DATA = 'BUSINESS_DATA'; // 普通用户访问业务数据
}ロールの責務
システム管理者(ROLE_SYS_ADMIN)
- ユーザーアカウント管理
- システム設定の保守(
SYSTEM_CONFIG権限) - アプリケーションデプロイ管理
- 監査ログを閲覧できない
- セキュリティポリシーを変更できない
セキュリティ管理者(ROLE_SEC_ADMIN)
- パスワードポリシー設定
- 権限ポリシー管理(
USER_MANAGE権限) - セキュリティイベント処理
- ユーザーアカウントを管理できない
- 監査ログを閲覧できない
監査管理者(ROLE_AUDITOR)
- すべての操作ログの閲覧(
AUDIT_VIEW権限) - 監査レポートの生成
- 異常行動の検出
- システム設定を一切変更できない
- ユーザーを管理できない
初期化
InitOfficersCommand コマンドで 3 つの管理者アカウントを初期化します:
bash
php bin/console app:init-officers初期化後、3 つのデフォルトアカウントが作成されます。
デフォルトアカウント
| ロール | ユーザー名 | 初期パスワード |
|---|---|---|
| システム管理者 | admin | admin123 |
| セキュリティ管理者 | security | security123 |
| 監査管理者 | auditor | auditor123 |
⚠️ 本番環境ではすべてのデフォルトパスワードを変更する必要があります。
業務データアクセス
通常の認証済みユーザー(ROLE_USER)は BUSINESS_DATA 権限で業務データに正常にアクセスできますが、管理操作は実行できません。