삼원 분립
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초기화 후 세 개의 기본 계정이 생성됩니다.
기본 계정
| 역할 | 사용자명 | 초기 비밀번호 |
|---|---|---|
| 시스템 관리자 | admin | admin123 |
| 보안 담당자 | security | security123 |
| 보안 감사자 | auditor | auditor123 |
⚠️ 프로덕션 환경에서는 모든 기본 비밀번호를 반드시 변경해야 합니다.
비즈니스 데이터 접근
일반 인증 사용자(ROLE_USER)는 BUSINESS_DATA 권한으로 비즈니스 데이터에 정상적으로 접근할 수 있지만 관리 작업은 수행할 수 없습니다.