다수의 컨텍스트 키 또는 값을 사용하는 조건
정책의 Condition
요소를 사용하여 요청에서 다수의 컨텍스트 키, 혹은 단일 컨텍스트 키에 대한 다수의 값을 테스트할 수 있습니다. 프로그래밍 방식이든, AWS Management Console을 사용하든 상관없이 AWS에게 요청할 경우 요청에 보안 주체, 작업, 태그 등에 대한 정보가 포함됩니다. 컨텍스트 키를 사용하여 정책 조건에서 컨텍스트 키가 지정된 요청에서 일치하는 컨텍스트 키의 값을 테스트할 수 있습니다. 요청에 포함되는 정보 및 데이터에 대한 자세한 내용은 요청 컨텍스트 섹션을 참조하세요.
다수의 컨텍스트 키 또는 값에 대한 평가 로직
Condition
요소에는 여러 조건 연산자를 추가할 수 있으며, 각 조건 연산자마다 다수의 컨텍스트 키-값 페어가 포함될 수 있습니다. 대부분의 컨텍스트 키에는 별도로 지정되지 않는 한 여러 개의 값을 사용할 수 있습니다.
-
정책 문에 여러 개의 조건 연산자가 있는 경우 조건 연산자는 논리 연산자
AND
를 사용하여 평가됩니다. -
정책 문에서 다수의 컨텍스트 키가 단일 조건 연산자에 추가되어 있는 경우 논리 연산자
AND
를 사용하여 컨텍스트 키가 평가됩니다. -
단일 조건 연산자에 하나의 컨텍스트 키에 대한 다수의 값이 포함된 경우 이러한 값은 논리 연산자
OR
을 사용하여 평가됩니다. -
단일 부정 일치 조건 연산자에 하나의 컨텍스트 키에 대한 다수의 값이 포함된 경우 이러한 값은 논리 연산자
NOR
을 사용하여 평가됩니다.
조건 요소 블록의 모든 컨텍스트 키가 true로 확인되어야 원하는 Allow
또는 Deny
효과를 간접적으로 호출할 수 있습니다. 다음 그림은 여러 조건 연산자와 컨텍스트 키-값 쌍이 있는 조건에 대한 평가 로직을 보여줍니다.
예를 들어, 다음 S3 버킷 정책은 이전 그림이 정책에 어떻게 표시되는지 보여줍니다. 조건 블록에는 조건 연산자 StringEquals
및 ArnLike
와, 컨텍스트 키 aws:PrincipalTag
및 aws:PrincipalArn
이 포함됩니다. 원하는 Allow
또는 Deny
효과를 간접적으로 호출하기 위해 조건 블록의 모든 컨텍스트 키가 true로 확인되어야 합니다. 요청하는 사용자는 정책에 지정된 태그 키 값 중 하나를 포함하는 두 개의 보안 주체 태그 키(department와 role)를 모두 가지고 있어야 합니다. 또한 요청하는 사용자의 보안 주체 ARN이 정책에서 지정된 aws:PrincipalArn
값 중 하나와 일치해야 true로 평가됩니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ExamplePolicy", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::222222222222:root" }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket", "Condition": { "StringEquals": { "aws:PrincipalTag/department": [ "finance", "hr", "legal" ], "aws:PrincipalTag/role": [ "audit", "security" ] }, "ArnLike": { "aws:PrincipalArn": [ "arn:aws:iam::222222222222:user/Ana", "arn:aws:iam::222222222222:user/Mary" ] } } } ] }
부정 일치 조건 연산자에 대한 평가 로직
StringNotEquals
또는 ArnNotLike
와 같은 일부 조건 연산자는 부정 일치를 사용하여 정책의 컨텍스트 키-값 쌍과 요청의 컨텍스트 키-값 쌍을 비교합니다. 부정 일치 조건 연산자가 포함된 정책의 단일 컨텍스트 키에 대해 다수의 값이 지정되면 유효한 권한은 논리 연산자 NOR
와 같이 작동합니다. 부정 일치에서 논리 연산자 NOR
또는 NOT
OR
은 모든 값이 false로 평가되는 경우에만 true를 반환합니다.
다음 그림은 여러 조건 연산자와 컨텍스트 키-값 쌍이 있는 조건에 대한 평가 로직을 보여줍니다. 그림에는 컨텍스트 키 3에 대한 부정 일치 조건 연산자가 포함되어 있습니다.
예를 들어, 다음 S3 버킷 정책은 이전 그림이 정책에 어떻게 표시되는지 보여줍니다. 조건 블록에는 조건 연산자 StringEquals
및 ArnNotLike
와, 컨텍스트 키 aws:PrincipalTag
및 aws:PrincipalArn
이 포함됩니다. 원하는 Allow
또는 Deny
효과를 간접적으로 호출하기 위해 조건 블록의 모든 컨텍스트 키가 true로 확인되어야 합니다. 요청하는 사용자는 정책에 지정된 태그 키 값 중 하나를 포함하는 두 개의 보안 주체 태그 키(department와 role)를 모두 가지고 있어야 합니다. ArnNotLike
조건 연산자가 부정 일치를 사용하므로 요청하는 사용자의 보안 주체 ARN이 정책에서 지정된 aws:PrincipalArn
값 중에서 일치하는 게 없어야 true로 평가됩니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ExamplePolicy", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::222222222222:root" }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket", "Condition": { "StringEquals": { "aws:PrincipalTag/department": [ "finance", "hr", "legal" ], "aws:PrincipalTag/role": [ "audit", "security" ] }, "ArnNotLike": { "aws:PrincipalArn": [ "arn:aws:iam::222222222222:user/Ana", "arn:aws:iam::222222222222:user/Mary" ] } } } ] }