다중 값 컨텍스트 키 사용 예시
다중 값 컨텍스트 키 사용 예시
조건 키가 요청 컨텍스트에서 여러 값을 가질 수 있을 때 Condition 요소를 쓰는 예시를 보여 주는 페이지예요. aws:TagKeys, s3:prefix 같은 다중 값 키를 ForAllValues/ForAnyValue 집합 연산자와 함께 다뤄요.
출처: 문서
본문
여기서 다루는 컨텍스트 키는 요청 컨텍스트에서 여러 값을 가질 수 있어요. 다중 값 키를 검사할 때는 집합 연산자(set operators)로 평가 방식을 명시해야 의도한 대로 동작해요.
- ForAllValues — 요청의 모든 값이 정책의 값 중 하나와 매칭되어야 해요.
- ForAnyValue — 요청의 값 중 하나 이상이 정책의 값과 매칭되어야 해요.
예시: 모든 요청 태그 키가 허용 목록에 있어야 함
aws:TagKeys는 요청에 포함된 모든 태그 키를 나타내는 다중 값 키예요. 다음 정책은 요청의 모든 태그 키가 environment 또는 costcenter 중 하나여야 함을 ForAllValues로 요구해요.
{
"Version":"2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": "ec2:CreateTags",
"Resource": "arn:aws:ec2:*:*:instance/*",
"Condition": {
"ForAllValues:StringEquals": {
"aws:TagKeys": ["environment", "costcenter"]
}
}
}
}
예시: 요청 태그 키 중 하나만 매칭되면 됨
ForAnyValue를 쓰면 요청의 태그 키 중 하나 이상이 매칭되면 조건이 참이에요.
{
"Version":"2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": "ec2:CreateTags",
"Resource": "arn:aws:ec2:*:*:instance/*",
"Condition": {
"ForAnyValue:StringEquals": {
"aws:TagKeys": "environment"
}
}
}
}
예시: 특정 접두사 목록에 매칭
ForAllValues 와 StringLike를 조합해 모든 값이 특정 접두사 패턴 중 하나에 매칭되도록 검사해요.
{
"Version":"2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
"Condition": {
"ForAllValues:StringLike": {
"s3:prefix": ["home/*", "shared/*"]
}
}
}
}
집합 연산자 평가 논리에 대한 자세한 내용은 다중 값 컨텍스트 키용 집합 연산자를 참고하세요.