IAM 정책으로 접근 제어
IAM 정책으로 접근 제어 (Controlling access with IAM policies)
IAM은 아웃바운드 아이덴티티 페더레이션 기능에 대한 접근을 제어하는 여러 정책 유형을 제공해요. 아이덴티티 기반 정책으로 어떤 IAM 프린시펄이 토큰을 요청할 수 있는지 제어하고, 오디언스, 수명, 서명 알고리즘 같은 특정 토큰 속성을 강제할 수 있어요. **SCP(서비스 제어 정책)**로 AWS Organizations의 모든 계정에 걸쳐 토큰 생성에 대한 조직 전체 제한을 강제할 수 있어요. **RCP(리소스 제어 정책)**는 리소스 수준에서 접근을 제어해요. 또한 VPC 엔드포인트 정책으로 VPC 엔드포인트를 통해 AWS STS GetWebIdentityToken API에 접근할 수 있는 프린시펄을 제한해 보안 상태에 네트워크 수준 제어를 추가할 수 있어요. 이 섹션은 이러한 정책 유형과 조건 키로 세분화된 접근 제어를 구현하는 방법을 설명해요.
출처: 문서
본문
아이덴티티 토큰을 요청하려면 IAM 프린시펄이 sts:GetWebIdentityToken 권한이 있어야 해요. 이 권한은 IAM 사용자·역할에 연결된 아이덴티티 정책으로 부여해요. GetWebIdentityToken 호출에 태그(키, 값 쌍)를 전달하도록 허용하려면 IAM 프린시펄이 sts:TagGetWebIdentityToken 권한이 있어야 해요.
sts:IdentityTokenAudience조건 키 — 어떤 외부 서비스가 토큰을 받을 수 있는지 제한해요.sts:DurationSeconds조건 키 — 최대 토큰 수명을 강제해요.sts:SigningAlgorithm조건 키 — 특정 암호화 알고리즘을 요구해요.aws:RequestTag조건 키 — 요청에서 전달된 태그 키-값 쌍을 정책에서 지정한 태그 쌍과 비교해요.aws:TagKeys조건 키 — 요청의 태그 키를 정책에서 지정한 키와 비교해요.
IAM 정책에서 사용할 수 있는 조건 키에 대해 더 알아보려면 IAM과 AWS STS 조건 키를 참고하세요.
이 샘플 아이덴티티 정책은 여러 조건 키를 결합해요.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowTokenGenerationWithRestrictions",
"Effect": "Allow",
"Action": "sts:GetWebIdentityToken",
"Resource": "*",
"Condition": {
"ForAnyValue:StringEquals": {
"sts:IdentityTokenAudience": [
"https://api1.example.com",
"https://api2.example.com"
]
},
"NumericLessThanEquals": {
"sts:DurationSeconds": 300
},
"StringEquals": {
"sts:SigningAlgorithm": "ES384"
}
}
}
]
}
모범 사례
AWS 아이덴티티를 외부 서비스에 안전하게 페더레이션하려면 다음 권장 사항을 따르세요.
- 짧은 토큰 수명 사용 — 운영 요구를 충족하는 가장 짧은 수명의 토큰을 요청하세요.
- IAM 정책으로 최소 권한 접근 구현 및 토큰 속성 제한 —
sts:GetWebIdentityToken권한을 필요로 하는 IAM 프린시펄에게만 부여하세요. 조건 키로 서명 알고리즘, 허용된 토큰 오디언스, 최대 토큰 수명을 필요에 따라 지정하세요. - 외부 서비스에서 클레임 검증 — 보안을 위해 항상 주체("sub"), 오디언스("aud") 같은 관련 클레임이 예상 값과 일치하는지 검증하세요. 가능하면 커스텀 클레임도 검증해 외부 서비스에서 세분화된 인가 결정을 가능하게 하세요.
더 알아보기 (Learn more)
- 아웃바운드 아이덴티티 페더레이션 시작하기 — 설정 방법을 확인해 보세요.
- 토큰 클레임 이해 — JWT의 클레임을 살펴보세요.
- AWS 아이덴티티를 외부 서비스로 페더레이션 — 아웃바운드 페더레이션의 개요를 참고하세요.