단일 값 vs. 다중 값 컨텍스트 키
단일 값 컨텍스트 키와 다중 값 컨텍스트 키의 차이는 정책 조건의 값 수가 아니라 요청 컨텍스트의 값 수에 따라 달라집니다.
-
단일 값 조건 컨텍스트 키는 요청 컨텍스트에서 최대 하나의 값을 갖습니다. 예를 들어, AWS에서 리소스에 태그를 지정할 수 있습니다. 리소스 태그는 태그 키-값 페어로 저장됩니다. 리소스 태그 키는 단일 태그 값을 가질 수 있습니다. 따라서 aws:ResourceTag/tag-key는 단일 값 컨텍스트 키입니다. 단일 값 컨텍스트 키에는 조건 집합 연산자를 사용하지 마세요.
-
다중 값 조건 컨텍스트 키는 요청 컨텍스트에서 여러 값을 가질 수 있습니다. 예를 들어, AWS의 리소스에 태그를 지정하고 요청에 여러 태그 키-값 페어를 포함할 수 있습니다. 따라서 aws:TagKeys는 다중 값 컨텍스트 키입니다. 다중 값 컨텍스트 키에는 조건 집합 연산자가 필요합니다.
중요
다중 값 컨텍스트 키에는 조건 집합 연산자가 필요합니다. 단일 값 컨텍스트 키에는 조건 집합 연산자 ForAllValues
또는 ForAnyValue
를 사용하지 마세요. 조건 집합 연산자에 대한 자세한 내용은 다중 값 컨텍스트 키 섹션을 참조하세요.
단일 값 및 다중 값 분류는 AWS 글로벌 조건 컨텍스트 키 주제의 값 유형으로 각 조건 컨텍스트 키의 설명에 포함됩니다. 서비스 승인 참조는 ArrayOf
접두사 뒤에 조건 연산자 범주 유형이 붙는 형식으로 다중 값 컨텍스트 키에 대해 서로 다른 값 유형 분류를 사용합니다. 예: ArrayOfString
또는 ArrayOfARN
.
예를 들어, 요청은 최대 하나의 VPC 엔드포인트에서 시작될 수 있으므로 aws:SourceVpce의 경우 단일 값 컨텍스트 키입니다. 서비스에는 서비스에 속한 서비스 보안 주체 이름이 두 개 이상 있을 수 있으므로 aws:PrincipalServiceNamesList의 경우 다중 값 컨텍스트 키입니다.
사용 가능한 단일 값 컨텍스트 키를 정책 변수로 사용할 수 있습니다. 다중 값 컨텍스트 키는 정책 변수로 사용할 수 없습니다. 정책 변수에 대한 자세한 내용은 IAM 정책 요소: 변수 및 태그 섹션을 참조하세요.
다중 값 컨텍스트 키에는 조건 집합 연산자 ForAllValues
또는 ForAnyValue
가 필요합니다. aws:RequestTag/tag-key 및 aws:ResourceTag/tag-key와 같은 키-값 쌍을 포함하는 컨텍스트 키는 여러
값이 있을 수 있으므로 혼란을 야기할 수 있습니다. 하지만 각 tag-key
의 경우 하나의 값만 가질 수 있으므로 tag-key
aws:RequestTag
및 aws:ResourceTag
는 둘 다 단일 값 컨텍스트 키입니다. 단일 값 컨텍스트 키와 함께 조건 집합 연산자를 사용하면 정책이 과도하게 허용될 수 있습니다.
다중 값 컨텍스트 키
조건 컨텍스트 키를 여러 키 값이 있는 요청 컨텍스트와 비교하려면 ForAllValues
또는 ForAnyValue
집합 연산자를 사용해야 합니다. 이러한 집합 연산자는 요청의 태그 집합 및 정책 조건의 태그 집합과 같이 두 값 집합을 비교하는 데 사용됩니다.
ForAllValues
및 ForAnyValue
한정자는 조건 연산자에 집합 연산 기능을 추가하므로 여러 값이 포함된 요청 컨텍스트 키를 정책 조건의 여러 컨텍스트 키 값에 대해 테스트할 수 있습니다. 또한 와일드카드 또는 변수를 사용하여 정책에 다중 값 문자열 컨텍스트 키를 포함하는 경우 StringLike
조건 연산자를 사용해야 합니다. 여러 조건 키 값은 배열처럼 대괄호로 묶어야 합니다. 예: "Key2":["Value2A", "Value2B"]
.
-
ForAllValues
- 이 한정자는 요청 집합의 모든 멤버 값이 조건 컨텍스트 키 집합의 하위 집합인지 여부를 테스트합니다. 요청의 모든 컨텍스트 키 값이 정책에 있는 하나 이상의 컨텍스트 키 값과 일치하면 조건이 true를 반환합니다. 요청에 컨텍스트 키가 없거나 컨텍스트 키 값이 빈 문자열과 같은 null 데이터 세트로 확인되는 경우에도 true를 반환합니다. 누락된 컨텍스트 키나 값이 비어 있는 컨텍스트 키가 true로 평가되지 않도록 하려면 정책의 Null 조건 연산자에 false 값을 포함하여 컨텍스트 키가 존재하고 그 값이 null이 아닌지 확인할 수 있습니다.중요
Allow
효과에ForAllValues
를 사용하는 경우 요청 컨텍스트에 컨텍스트 키가 누락되거나 컨텍스트 키의 값이 비어 있는 것을 예상할 수 없으면 지나치게 허용적일 수 있으므로 주의하세요. 정책의Null
조건 연산자에 false 값을 포함하여 컨텍스트 키가 존재하는지와 그 값이 null이 아닌지 여부를 확인할 수 있습니다. 예시는 태그 키를 기반으로 액세스 제어에서 확인하세요. -
ForAnyValue
- 이 한정자는 요청 컨텍스트 키 값 집합에서 하나 이상의 멤버가 정책 조건의 컨텍스트 키 값 집합에서 하나 이상의 멤버와 일치하는지 테스트합니다. 요청의 컨텍스트 키 값 중 하나가 정책의 컨텍스트 키 값 중 하나와 일치하면 컨텍스트 키는 true를 반환합니다. 일치하는 컨텍스트 키가 없거나 null 데이터 세트의 경우 조건에서 false를 반환합니다.
참고
단일 값 컨텍스트 키와 다중 값 컨텍스트 키의 차이는 정책 조건의 값 수가 아니라 요청 컨텍스트의 값 수에 따라 달라집니다.