Skip to content

삼원 분립

Doggy는 중국 등급 보호(등보) 표준에 부합하는 삼원 분립 보안 모델을 구현하며, ThreeOfficersVoter로 권한 통제를 실현합니다.

개요

삼원 분립은 시스템 관리 권한을 세 개의 독립된 역할로 분리하며, 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 명령으로 세 개의 관리자 계정을 초기화합니다:

bash
php bin/console app:init-officers

초기화 후 세 개의 기본 계정이 생성됩니다.

기본 계정

역할사용자명초기 비밀번호
시스템 관리자adminadmin123
보안 담당자securitysecurity123
보안 감사자auditorauditor123

⚠️ 프로덕션 환경에서는 모든 기본 비밀번호를 반드시 변경해야 합니다.

비즈니스 데이터 접근

일반 인증 사용자(ROLE_USER)는 BUSINESS_DATA 권한으로 비즈니스 데이터에 정상적으로 접근할 수 있지만 관리 작업은 수행할 수 없습니다.

MIT 라이선스 오픈소스 | Copyright © 2026 Doggy