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:#5551. 그룹별 소속 인원 및 권한
그룹 | 소속 인원 | 부여 정책 | 비고 |
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 | 읽기 전용 위주 |
+) ⚠: 이 정책은 필요 이상으로 넓은 권한이라 주의 대상
- 전 인원 공통 개별 부착: self-service-credentials(본인 계정 관리), require-mfa(MFA 미인증 시 전체 차단 가드레일)
- WHS4_SelfAccountManagement 정책은 팀원 전원에게 붙어있지만 레포 코드엔 정의 없음(콘솔 등 외부에서 수동 생성 추정)
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 정책 추가 예정? |
plan 단계
terraform plan은 이렇게 바뀔 예정이라고 미리 보여주는 단계
- 실제로 아무것도 안 바꾸고 조회만 함
→ 그래서 ReadOnlyAccess로 충분
apply 단계
terraform plan에서 확인한 대로 실제로 AWS에 반영하는 단계
- 리소스 생성/수정/삭제가 실제로 일어남
→ 그래서 PowerUserAccess(거의 전체 관리) + IAMFullAccess 같은 넓은 권한이 필요한 거고 동시에 이게 CI 자격증명 탈취 시 가장 위험한 이유이기도 함
3. ⚠ 과다 권한 플래그
- WHS4_Attack / WHS4_Infra의
IAMFullAccess→ 권한 상승 경로 가능
- WHS4_Infra의
AWSCloudTrail_FullAccess→ 감사 로그 자체를 끄거나 삭제 가능
- github-actions-apply의
PowerUserAccess+IAMFullAccess→ 준-관리자급, CI 시크릿이 곧 최고 권한


