IAM 인증 절차 상세 퀴즈
이 퀴즈는 Lattice IAM Auth의 4단계 절차, SigV4 서명 함정, 403 진단에 대한 이해도를 테스트합니다.
객관식 문제
- VPC Lattice 데이터 평면 요청을 SigV4로 서명할 때 사용하는 서비스명은?
- A)
vpc-lattice - B)
vpc-lattice-svcs - C)
lattice - D)
execute-api
- A)
정답 보기
정답: B) vpc-lattice-svcs
설명:vpc-lattice-svcs가 데이터 평면 요청의 서명 서비스명입니다. vpc-lattice는 Lattice 제어 평면 API(서비스·리스너 생성 등)의 서비스명이라 혼동하기 쉽습니다. 서비스명은 signing key 파생 과정(secret key → 날짜 → 리전 → 서비스명 → 종료 문자열의 HMAC-SHA256 4회 연쇄)의 입력값이므로 틀리면 서명이 검증되지 않습니다. 서비스 DNS 이름 자체가 ...vpc-lattice-svcs.<region>.on.aws 형태인 것과 일관됩니다.
- Lattice IAM Auth에서 403이 발생하는 가장 흔한 원인은?
- A) Lattice 서비스의 auth policy에 principal이 누락된 경우
- B) 호출자 IAM Role의 identity-based policy에
vpc-lattice-svcs:Invoke권한이 없는 경우 - C) 노드 Security Group이 Lattice prefix list를 허용하지 않은 경우
- D) Target Group의 health check가 실패한 경우
정답 보기
정답: B) 호출자 IAM Role의 identity-based policy에 vpc-lattice-svcs:Invoke 권한이 없는 경우
설명: "서비스 쪽 auth policy에서 이 Role을 허용했으니 됐다"고 생각하기 쉽지만, 호출자 Role 자신에게도 Invoke 권한이 필요합니다. 리소스 정책만으로는 통과하지 못합니다. 실제 에러 메시지의 마지막 절이 because no identity-based policy allows the vpc-lattice-svcs:Invoke action으로 원인을 알려주므로, 403을 만나면 이 문구를 먼저 확인해야 합니다. 참고로 C는 403이 아니라 연결 실패나 타임아웃으로 나타납니다.
- custom domain을 도입한 직후 403이 발생하기 시작했다면 가장 먼저 확인할 것은?
- A) Target Group의 프로토콜 설정
- B)
Host헤더 — SigV4에서 Host는 항상 서명 대상이므로, 서명할 때 쓴 Host 값과 실제 요청의 Host 헤더가 일치해야 한다 - C) Lattice의 quotas 초과 여부
- D) VPC의 DNS 확인 설정
정답 보기
정답: B) Host 헤더 — SigV4에서 Host는 항상 서명 대상이므로, 서명할 때 쓴 Host 값과 실제 요청의 Host 헤더가 일치해야 한다
설명: SigV4는 Host 헤더를 항상 서명 대상에 포함합니다. custom domain을 붙이면 클라이언트는 그 도메인으로 요청을 보내므로 그 값으로 서명해야 하는데, 서명 로직이 Lattice 생성 도메인을 쓰고 있으면 불일치가 발생합니다. 이 문제는 전환 초기가 아니라 custom domain을 붙이는 시점에 터지기 때문에 놓치기 쉽습니다. custom domain 도입은 SNI 통제, 서명 대상 Host, 인증서 관리를 함께 결정해야 하는 항목입니다.
- "특정 노드에 있는 Pod만 간헐적으로 403이 발생한다"면 가장 유력한 원인은?
- A) 그 노드의 Security Group 설정 오류
- B) 그 노드의 시각 동기화 문제 —
x-amz-date는 서명 대상이며 SigV4의 허용 오차는 약 5분이다 - C) 그 노드에 Gateway API Controller가 없기 때문
- D) 그 노드의 kubelet 버전이 낮기 때문
정답 보기
정답: B) 그 노드의 시각 동기화 문제 — x-amz-date는 서명 대상이며 SigV4의 허용 오차는 약 5분이다
설명: 일반 AWS SigV4 안내는 대부분의 요청이 timestamp부터 5분 안에 도착해야 한다고 설명합니다. 실제 service 오류와 UTC 시계를 확인하며 별도 실측 Lattice 전용 보장으로 보지 않습니다.
- 서명과 Lattice 검증 사이에서 무엇을 확인해야 합니까?
- A) 프록시가 여러 개면 레이턴시가 증가하기 때문
- B) Canonical 서명 필드 변경은 검증을 깨뜨릴 수 있으며 Lattice의 UNSIGNED-PAYLOAD 본문은 TLS/앱 제어로 보호한다
- C) 프록시는 credential을 캐시할 수 없기 때문
- D) IAM Role은 하나의 프록시에만 연결할 수 있기 때문
정답 보기
정답: B) Canonical 서명 필드 변경은 검증을 깨뜨릴 수 있으며 Lattice의 UNSIGNED-PAYLOAD 본문은 TLS/앱 제어로 보호한다
설명: 서명한 Host/path/query 값은 실제 요청과 같아야 합니다. Canonical sorting 때문에 동등한 query 순서 변경은 반드시 변화가 아닙니다. Lattice는 payload signing을 지원하지 않으며 x-amz-content-sha256: UNSIGNED-PAYLOAD header가 필요합니다.
- auth policy를 설정했는데도 클러스터 내부에서 인가가 적용되지 않는 경우의 원인은?
- A) auth policy가 IPv6 트래픽을 지원하지 않기 때문
- B) 클라이언트가 Kubernetes Service DNS로 직접 호출하면 Lattice를 거치지 않으므로 auth policy가 평가되지 않기 때문
- C) auth policy는 계정 간 호출에만 적용되기 때문
- D) Gateway API Controller가 정책을 아직 반영하지 않았기 때문
정답 보기
정답: B) 클라이언트가 Kubernetes Service DNS로 직접 호출하면 Lattice를 거치지 않으므로 auth policy가 평가되지 않기 때문
설명: AWS Gateway API Controller 문서가 명시하는 제약입니다. IAMAuthPolicy는 Gateway, HTTPRoute, GRPCRoute를 통과하는 트래픽에 대해서만 인가를 수행하며, http://svc.ns.svc.cluster.local처럼 클러스터 내부 DNS로 직접 보내면 Lattice를 우회해 정책이 평가되지 않습니다. 전환 기간 중 두 경로가 공존하면 인가가 적용되는 경로와 안 되는 경로가 동시에 존재하므로, NetworkPolicy로 직접 호출을 차단하는 등의 보완이 필요합니다. 또 다른 흔한 원인은 authType이 AWS_IAM이 아니라 NONE인 경우입니다.
- AS-IS(App Mesh + SPIRE mTLS) 대비 TO-BE(Lattice IAM Auth)에서 인증의 "단위"와 "방향성"은 어떻게 바뀌는가?
- A) connection 단위 양방향 → 요청 단위 양방향
- B) connection 단위 양방향 상호 인증 → 요청 단위 단방향(클라이언트 증명) + TLS 서버 인증서
- C) 요청 단위 단방향 → connection 단위 양방향
- D) 단위와 방향성 모두 변화가 없다
정답 보기
정답: B) connection 단위 양방향 상호 인증 → 요청 단위 단방향(클라이언트 증명) + TLS 서버 인증서
설명: mTLS는 연결을 수립할 때 양쪽 peer의 SVID로 서로를 인증합니다. Lattice IAM Auth는 요청마다 호출자의 SigV4 서명을 검증하며 경로·메서드·헤더 정책 조건을 적용할 수 있습니다. SigV4는 canonical request의 서명 대상 필드를 보호하지만, Lattice는 UNSIGNED-PAYLOAD를 요구하고 payload signing을 지원하지 않습니다. 본문은 TLS로 보호하고 credential 탈취·요청 유효 시간·replay를 별도로 평가해야 하며, 요청 서명이 연결 탈취를 보편적으로 차단한다고 단정하면 안 됩니다. HTTPS listener 설계에서 서버 인증은 peer의 SPIFFE identity 대신 TLS 서버 인증서를 사용합니다.