Skip to content

三員分立

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 つのデフォルトアカウントが作成されます。

デフォルトアカウント

ロールユーザー名初期パスワード
システム管理者adminadmin123
セキュリティ管理者securitysecurity123
監査管理者auditorauditor123

⚠️ 本番環境ではすべてのデフォルトパスワードを変更する必要があります。

業務データアクセス

通常の認証済みユーザー(ROLE_USER)は BUSINESS_DATA 権限で業務データに正常にアクセスできますが、管理操作は実行できません。

MIT ライセンスでオープンソース | Copyright © 2026 Doggy