다중 값 컨텍스트 키 사용 예시

다중 값 컨텍스트 키 사용 예시

조건 키가 요청 컨텍스트에서 여러 값을 가질 수 있을 때 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/*"]
            }
        }
    }
}

집합 연산자 평가 논리에 대한 자세한 내용은 다중 값 컨텍스트 키용 집합 연산자를 참고하세요.

더 알아보기 (Learn more)