한 주 동안 본 그림은 AWS의 물리 지도(Region / AZ / Edge), 그 위에서 누가 무엇을 책임지는가(Shared Responsibility), 누가 무엇을 할 수 있게 할까(IAM의 6단계 평가 알고리즘), 그리고 수십·수백 개 계정을 한 거버넌스 아래 묶는 법(Organizations / SCP / Identity Center) 네 가지였다. 이 네 그림이 SOA-C02 모든 시나리오의 배경이다. 시험 문제를 풀 때 답이 바로 안 보이면 "이 시나리오는 네 개 중 어디를 묻는가"부터 분류하는 습관을 들이면, 보기에서 정답이 자연스럽게 떠오른다.
이 주의 내용이 머릿속에 깔려 있어야 다음 주의 CloudWatch·Config·CloudTrail이 자연스럽게 위에 얹힌다. 알람이 울렸을 때 "어느 리전의 어느 AZ에서, 누구(IAM principal)가, 어떤 권한 평가 경로로, 어떤 계정에서, 어떤 SCP·boundary 한도 안에서" 일을 했는지를 거꾸로 추적하는 게 운영자의 일상이다. 그 추적을 가능하게 만드는 인프라가 이 주의 주제였다.
┌─────────────────────────────────────────────────────────┐
│ [AWS Global Infrastructure] │
│ Region > AZ > Edge / Local Zones / Outposts │
│ - Control plane은 us-east-1에 자주 묶임 (IAM/R53/CF) │
│ - AZ는 격리 최소 단위. NAT GW / EBS / RDS Standby는 AZ │
│ - ZoneId(apne2-az1)만 계정 간 일치, ZoneName은 셔플 │
├─────────────────────────────────────────────────────────┤
│ [Shared Responsibility] │
│ AWS: Security OF the Cloud │
│ Customer: Security IN the Cloud │
│ - 추상화 레벨↑ ⇒ 책임 경계선↑ (EC2 < ECS < Fargate < L)│
│ - 데이터 분류·IAM·암호화 키 정책은 늘 고객 │
├─────────────────────────────────────────────────────────┤
│ [IAM Evaluation 6-step] │
│ Explicit Deny → Org SCP → Resource Policy → │
│ Identity Policy → Permission Boundary → │
│ Session Policy → 최종 Allow/Deny │
│ - Deny는 어디서든 한 번이라도 나오면 즉시 차단 │
│ - Cross-Account는 양쪽 다 Allow가 필요 │
├─────────────────────────────────────────────────────────┤
│ [Multi-Account Governance] │
│ Organizations / SCP / RAM / Control Tower / IdC │
│ - Management Account엔 SCP 안 통함 (워크로드 두지 말 것)│
│ - Delegated Administrator로 보안 서비스 중앙화 │
│ - Identity Center + IdP 페더레이션 = IAM User 없는 운영 │
└─────────────────────────────────────────────────────────┘
운영자의 일상 디버깅 흐름은 이 그림 위에서 다음 순서로 흐른다.
이 흐름이 머릿속에 있으면 "장애 났다"는 한 줄에서 "5분 안에 콘솔의 어느 화면을 열어야 하는가"가 자동으로 결정된다. 시험에서 "처음에 봐야 할 도구는?" 같은 문제는 거의 이 표에서 답이 나온다.
선택지를 클릭하면 정답·해설이 펼쳐집니다.
문제 1
한국 사용자 대상 게임 회사가 ap-northeast-2에서 운영 중이다. 운영팀이 us-east-1 장애 중에도 "콘솔 로그인은 가능, 단 새 IAM 사용자 생성·Route 53 레코드 변경 같은 write는 못 할 수 있다"는 사실을 미리 알고 대비하려고 한다. SDK·CLI 측에서 추가로 해야 할 가장 적절한 조치는?
문제 2
한 운영팀이 ASG로 운영 중인 웹 서비스에서 AZ-a 장애 발생 시 모든 트래픽이 끊겼다. 원인 분석 결과 NAT GW가 AZ-a 한 곳에만 있었고, AZ-b·AZ-c의 private subnet 라우팅 테이블도 모두 AZ-a NAT GW를 가리키고 있었다. 정답은?
문제 3
EC2 인스턴스가 KMS CMK로 SSE-KMS 암호화된 S3 버킷에 PUT을 시도하는데 AccessDenied. IAM Policy에 `s3:PutObject Allow`가 있고 Bucket Policy에도 Allow가 있다. CloudTrail에는 `s3.amazonaws.com` 이벤트와 `kms.amazonaws.com` 이벤트 두 줄이 모두 실패로 찍혔다. 가장 가능성 높은 원인은?
문제 4
회사가 200명 직원에 60개 AWS 계정을 운영 중이다. 직원이 매주 입·퇴사하며, 보안팀은 access key 회전과 offboarding 누락에 지쳤다. 가장 효율적인 변경은?
문제 5
한 회사가 Organizations로 50개 계정을 운영 중이고, 모든 계정에서 `us-east-1`과 `ap-northeast-2` 외 리전을 사용 못하게 강제하려고 한다. 데이터 주권 준수가 목적. 가장 효율적인 방법은?
문제 6
운영자가 개발자에게 IAM Role 생성을 위임하되, 그 Role의 effective permission이 회사 표준 정책 범위를 넘지 못하게 강제하려고 한다. 어떤 조합이 정답인가?
문제 7
한 회사가 50개 member 계정의 CloudTrail 로그를 한 곳에 모으고, 운영자가 그 로그를 수정·삭제하지 못하게 하려고 한다. PCI-DSS 10.5.5 요구사항 충족이 목적. 표준 패턴은?
문제 8
운영팀이 EC2 인스턴스의 메타데이터 SSRF 공격을 막으려고 한다. 가장 강력한 운영 표준 4중 방어는?
문제 9
운영자가 100개 계정의 EC2 인스턴스 인벤토리를 한 번에 보고 싶다. 보안팀은 OS 패치 적용 현황·태그·인스턴스 타입을 알고 싶어 한다. 가장 효율적인 방법은?
문제 10
한 운영팀이 새벽 3시 us-east-1 장애 알림을 받기 위해 EventBridge `aws.health` 룰을 만들었다. 누락 없이 모든 이벤트를 받기 위한 표준 패턴은?
문제 11
보안 운영자가 5개 부서별로 200대 EC2의 시작/중지 권한을 분리해야 한다. 100명 직원과 200대 EC2가 있고, 직원이 매주 입·퇴사하며 부서 이동도 잦다. 가장 확장성 있는 방식은?
문제 12
보안 운영자가 100개 계정의 GuardDuty finding·Security Hub 점수·Inspector vulnerability·Macie 데이터 분류 결과를 한 곳에서 보려고 한다. 표준 패턴은?
이 주의 내용을 종합하면 다음 6가지가 운영자가 같은 사고를 반복하는 패턴이다.
이 여섯 가지를 다 피하는 게 운영자의 출발선이다. 시험은 이 함정들을 시나리오로 변형해서 묻는다.
콘솔이 아니라 CLI로 한 번씩 쳐본 명령은 시험장에서도 기억난다. Week 1 핵심 CLI를 한 카드로 모은다.
# 1) ZoneId 확인 — cross-account 비용 최적화의 출발점
aws ec2 describe-availability-zones --region ap-northeast-2 \
--query 'AvailabilityZones[*].[ZoneName,ZoneId,State]' --output table
# 2) Health 이벤트 — 진행 중 / 예정된 이벤트 모두
aws health describe-events \
--filter "eventStatusCodes=open,upcoming" --region us-east-1
aws health describe-events \
--filter "eventStatusCodes=open,upcoming" --region us-west-2
# 3) IAM 최근 사용 — 90일 이상 안 쓴 access key 찾기
aws iam generate-credential-report
aws iam get-credential-report --query 'Content' --output text \
| base64 --decode
# 4) IAM Access Analyzer — 외부 노출 리소스 점검
aws accessanalyzer list-analyzers
aws accessanalyzer list-findings --analyzer-arn arn:aws:access-analyzer:...
# 5) Organizations 구조 보기
aws organizations list-roots
aws organizations list-organizational-units-for-parent --parent-id r-xxxx
aws organizations list-accounts-for-parent --parent-id ou-xxxx-yyyy
# 6) SCP 효과 확인 — 특정 계정에 적용된 정책 모두
aws organizations list-policies-for-target \
--target-id 123456789012 --filter SERVICE_CONTROL_POLICY
# 7) Identity Center Permission Set 할당 조회
aws sso-admin list-permission-sets --instance-arn arn:aws:sso:::instance/...
# 8) Policy Simulator — 사전 검증
aws iam simulate-principal-policy \
--policy-source-arn arn:aws:iam::111:user/alice \
--action-names s3:PutObject \
--resource-arns arn:aws:s3:::my-bucket/key여기서 가장 자주 잊는 게 generate-credential-report → get-credential-report 두 단계라는 점이다. 첫 호출은 비동기 생성 트리거이고 두 번째 호출이 실제 다운로드다.
🔍 더 깊이:
simulate-principal-policy는 SCP, Permission Boundary, Resource Policy까지 한 번에 평가해 실제 운영의 권한 거부 원인을 찾아준다. CloudTrail의errorMessage에 "explicit deny from SCP"라고 찍히는 경우가 가장 친절한 케이스이고, 그렇지 않을 땐 simulator로 한 단계씩 좁혀야 한다. Simulator는--context-entries로 MFA·SourceIp 같은 조건도 흉내 낼 수 있어 IP 화이트리스트 조건 디버깅에도 쓴다.
💡 암기 팁: 운영자의 "권한 문제 1차 진단 3단 콤보"는 ① CloudTrail의
errorCode/errorMessage→ ②simulate-principal-policy→ ③ Access Analyzer "Reachable from outside"이다. 이 순서가 머리에 박혀 있으면 어떤 IAM 시나리오 문제도 푼다.
다음 11개 질문에 모두 "예"라고 답할 수 있어야 Week 2로 넘어가도 무리가 없다.
aws.health 룰을 어느 리전에 둬야 하는지 안다?다음 주는 운영자 도구 중 가장 자주 쓰는 CloudWatch Metrics와 Logs의 내부 구조다. 모든 알람과 디버깅의 출발점.
Week 2를 다 보고 나면 콘솔의 그래프 더미를 보고 5초 안에 "지금 우리 서비스가 죽고 있는가"를 판단하는 감각이 생긴다. 그 감각이 SOA-C02 시험과 실무 운영의 50%다.