graph TD
  subgraph Users["IAM Users (identity/members.yaml)"]
    U_byungeun[byungeun]
    U_hyemin[hyemin]
    U_hyeri[hyeri]
    U_jaewon[jaewon]
    U_jinhyuk[jinhyuk]
    U_junhwan[junhwan]
    U_taehyung[taehyung]
    U_yunha[yunha]
  end

  subgraph Groups["IAM Groups (identity/groups.yaml)"]
    G_Attack[WHS4_Attack]
    G_Infra[WHS4_Infra]
    G_SIEM[WHS4_SIEM_Detect]
  end

  subgraph UserPolicies["사용자 개별 정책 (identity/users.tf, 8명 전원)"]
    P_SelfSvc["self-service-credentials<br/>본인 비번/키/MFA 관리"]
    P_MFA["require-mfa<br/>MFA 미인증시 전체 Deny (guardrail)"]
  end

  subgraph GroupPolicies["그룹 부착 정책"]
    P_EC2[AmazonEC2FullAccess]:::broad
    P_IAMFull[IAMFullAccess]:::broad
    P_S3[AmazonS3FullAccess]:::broad
    P_CTFull[AWSCloudTrail_FullAccess]:::broad
    P_CWLogs[CloudWatchLogsFullAccess]
    P_CWRO[CloudWatchReadOnlyAccess]
    P_GDRO[AmazonGuardDutyReadOnlyAccess]
    P_IAMRO[IAMReadOnlyAccess]
    P_CTRO[AWSCloudTrail_ReadOnlyAccess]
    P_SelfMgmt["WHS4_SelfAccountManagement<br/>(코드에 정의 없음, 외부/수동)"]:::external
    P_Login["aws-login (platform)<br/>로컬 브라우저 로그인 전용<br/>⚠ platform 코드상 attach 리소스 삭제됨"]:::external
    P_PortFwd["wazuh-ssm-port-forwarding (platform)<br/>Wazuh EC2 한정<br/>⚠ platform 코드상 attach 리소스 삭제됨"]:::external
  end

  subgraph Roles["IAM Roles"]
    R_plan["github-actions-plan<br/>(bootstrap/oidc.tf)"]
    R_apply["github-actions-apply<br/>(bootstrap/oidc.tf)"]
    R_wazuh["wazuh-role<br/>(platform/wazuh/iam.tf)"]
  end

  subgraph RolePolicies["Role 부착 정책"]
    P_RO[ReadOnlyAccess]
    P_TFState["kintoun-tfstate-access<br/>state버킷 키 한정"]
    P_PUA[PowerUserAccess]:::broad
    P_WazuhSSM["ec2-ssm-role<br/>(구 wazuh-ec2-ssm-role, 이름 변경됨)"]
  end

  U_byungeun --> G_SIEM
  U_hyemin --> G_SIEM
  U_hyeri --> G_Infra
  U_hyeri --> G_SIEM
  U_jaewon --> G_SIEM
  U_jinhyuk --> G_SIEM
  U_junhwan --> G_Infra
  U_taehyung --> G_Attack
  U_taehyung --> G_SIEM
  U_yunha --> G_Attack

  U_byungeun -.-> P_SelfSvc & P_MFA
  U_hyemin -.-> P_SelfSvc & P_MFA
  U_hyeri -.-> P_SelfSvc & P_MFA
  U_jaewon -.-> P_SelfSvc & P_MFA
  U_jinhyuk -.-> P_SelfSvc & P_MFA
  U_junhwan -.-> P_SelfSvc & P_MFA
  U_taehyung -.-> P_SelfSvc & P_MFA
  U_yunha -.-> P_SelfSvc & P_MFA

  G_Attack --> P_EC2 & P_IAMFull & P_S3 & P_SelfMgmt & P_Login & P_PortFwd
  G_Infra --> P_IAMFull & P_CWLogs & P_S3 & P_CTFull & P_SelfMgmt & P_Login & P_PortFwd
  G_SIEM --> P_CWRO & P_GDRO & P_CWLogs & P_IAMRO & P_CTRO & P_SelfMgmt & P_Login & P_PortFwd

  R_plan --> P_RO
  R_plan --> P_TFState
  R_apply --> P_PUA
  R_apply --> P_IAMFull
  R_apply --> P_TFState
  R_wazuh --> P_WazuhSSM

  classDef broad fill:#ffdddd,stroke:#cc0000,stroke-width:2px,color:#900
  classDef external fill:#eeeeee,stroke:#999999,stroke-dasharray: 4 3,color:#555

1. 그룹별 소속 인원 및 권한

그룹 소속 인원 부여 정책 비고
WHS4_Attack yunha, taehyung AmazonEC2FullAccess ⚠, IAMFullAccess ⚠, AmazonS3FullAccess, aws-login, wazuh-ssm-port-forwarding 공격 실습용, 권한 넓음
WHS4_Infra hyeri, junhwan IAMFullAccess ⚠, CloudWatchLogsFullAccess, AmazonS3FullAccess, AWSCloudTrail_FullAccess ⚠, aws-login, wazuh-ssm-port-forwarding 감사 로그 삭제 가능 권한 포함
WHS4_SIEM_Detect hyemin, hyeri, byungeun, jaewon, jinhyuk, taehyung CloudWatchReadOnlyAccess, GuardDutyReadOnlyAccess, CloudWatchLogsFullAccess, IAMReadOnlyAccess, CloudTrailReadOnlyAccess, aws-login, wazuh-ssm-port-forwarding 읽기 전용 위주

+) ⚠: 이 정책은 필요 이상으로 넓은 권한이라 주의 대상

2. Role 별 권한

Role 용도 부여 정책 비고
github-actions-plan CI plan 단계 ReadOnlyAccess, kintoun-tfstate-access 조회 전용
github-actions-apply CI apply 단계 PowerUserAccess ⚠, IAMFullAccess ⚠, kintoun-tfstate-access CI 자격증명 탈취 시 사실상 계정 전체 장악 가능
wazuh-role Wazuh EC2 assume role ec2-ssm-role (구 wazuh-ec2-ssm-role) platform/wazuh/iam.tf로 이동, 정책명 변경으로 재생성 예정 (아래 4번 참고)
PR #35(feat/logging) 머지 시 guardduty_logging_wazuh, wazuh_waf_read 정책 추가 예정?

3. ⚠ 과다 권한 플래그