단일 값 vs. 다중 값 컨텍스트 키 - AWS Identity and Access Management

단일 값 vs. 다중 값 컨텍스트 키

단일 값 및 다중 값 컨텍스트 키의 차이점은 정책 조건의 값 수가 아니라 요청 컨텍스트의 값 수에 있습니다.

  • 단일 값 조건 컨텍스트 키는 요청 컨텍스트에서 최대 하나의 값을 갖습니다. 예를 들어 AWS에서 리소스에 태그를 지정하면 각 리소스 태그가 키 값 페어로 저장됩니다. 리소스 태그 키는 단일 태그 값만 가질 수 있으므로 aws:ResourceTag/tag-key는 단일 값 컨텍스트 키입니다. 단일 값 컨텍스트 키에는 조건 집합 연산자를 사용하지 마세요.

  • 다중 값 조건 컨텍스트 키는 요청 컨텍스트에서 여러 값을 가질 수 있습니다. 예를 들어, AWS에서 리소스에 태그를 지정하면 단일 요청에 여러 태그 키 값 페어를 포함할 수 있습니다. 따라서 aws:TagKeys는 다중 값 컨텍스트 키입니다. 다중 값 컨텍스트 키에는 조건 집합 연산자가 필요합니다.

중요

다중 값 컨텍스트 키에는 조건 집합 연산자가 필요합니다. 단일 값 컨텍스트 키에는 조건 집합 연산자 ForAllValues 또는 ForAnyValue를 사용하지 마세요. 조건 집합 연산자에 대한 자세한 내용은 다중 값 컨텍스트 키 섹션을 참조하세요.

단일 값 및 다중 값 분류는 AWS 글로벌 조건 컨텍스트 키 주제의 값 유형으로 각 조건 컨텍스트 키의 설명에 포함됩니다. 서비스 승인 참조ArrayOf 접두사 및 조건 연산자 범주 유형(예: ArrayOfString 또는 ArrayOfARN)을 사용해 다중 값 컨텍스트 키에 대해 서로 다른 값 유형 분류를 사용합니다.

예를 들어, 요청은 최대 하나의 VPC 엔드포인트에서 시작될 수 있으므로 aws:SourceVpce의 경우 단일 값 컨텍스트 키입니다. 서비스에는 서비스에 속한 서비스 보안 주체 이름이 두 개 이상 있을 수 있으므로 aws:PrincipalServiceNamesList의 경우 다중 값 컨텍스트 키입니다.

사용 가능한 단일 값 컨텍스트 키를 정책 변수로 사용할 수 있습니다. 하지만 다중 값 컨텍스트 키는 정책 변수로 사용할 수 없습니다. 정책 변수에 대한 자세한 내용은 IAM 정책 요소: 변수 및 태그 섹션을 참조하세요.

키 값 페어가 포함된 컨텍스트 키를 사용하는 경우 태그 키 값이 여러 개 있을 수 있지만 각 tag-key에는 하나의 값만 보유할 수 있습니다. 따라서 aws:RequestTagaws:ResourceTag는 모두 단일 값 컨텍스트 키입니다. 단일 값 컨텍스트 키와 함께 조건 집합 연산자를 사용하면 정책이 과도하게 허용될 수 있습니다.

다중 값 컨텍스트 키

조건 컨텍스트 키를 여러 키 값이 있는 요청 컨텍스트와 비교하려면 ForAllValues 또는 ForAnyValue 집합 연산자를 사용해야 합니다. 이러한 집합 연산자는 요청의 태그 집합 및 정책 조건의 태그 집합과 같이 두 값 집합을 비교하는 데 사용됩니다.

ForAllValuesForAnyValue 한정자는 조건 연산자에 집합 연산 기능을 추가하므로 여러 값이 포함된 요청 컨텍스트 키를 정책 조건의 여러 컨텍스트 키 값에 대해 테스트할 수 있습니다. 또한 와일드카드 또는 변수를 사용하여 정책에 다중 값 문자열 컨텍스트 키를 포함하는 경우 StringLike 조건 연산자를 사용해야 합니다. 여러 조건 키 값은 배열처럼 대괄호로 묶어야 합니다(예: "Key2":["Value2A", "Value2B"]).

  • ForAllValues - 이 한정자는 요청 집합의 모든 멤버 값이 조건 컨텍스트 키 집합의 하위 집합인지 여부를 테스트합니다. 요청의 모든 컨텍스트 키 값이 정책에 있는 하나 이상의 컨텍스트 키 값과 일치하면 조건이 true를 반환합니다. 요청에 컨텍스트 키가 없거나 컨텍스트 키 값이 빈 문자열과 같은 null 데이터세트로 확인되는 경우에도 true를 반환합니다. 누락된 컨텍스트 키나 값이 비어 있는 컨텍스트 키가 true로 평가되지 않도록 하려면 정책의 Null 조건 연산자에 false 값을 포함하여 컨텍스트 키가 존재하고 그 값이 null이 아닌지 확인할 수 있습니다.

    중요

    Allow 효과와 함께 ForAllValues를 사용하는 경우 요청 컨텍스트에 컨텍스트 키가 누락되거나 컨텍스트 키의 값이 비어 있는 것을 예상할 수 없으면 지나치게 허용적일 수 있으므로 주의하세요. 정책의 Null 조건 연산자에 false 값을 포함하여 컨텍스트 키가 존재하는지와 그 값이 null이 아닌지 여부를 확인할 수 있습니다. 예시는 태그 키를 기반으로 액세스 제어을 확인하세요.

  • ForAnyValue - 이 한정자는 요청 컨텍스트 키 값 집합에서 하나 이상의 멤버가 정책 조건의 컨텍스트 키 값 집합에서 하나 이상의 멤버와 일치하는지 테스트합니다. 요청의 컨텍스트 키 값 중 하나가 정책의 컨텍스트 키 값 중 하나와 일치하면 컨텍스트 키는 true를 반환합니다. 일치하는 컨텍스트 키가 없거나 null 데이터세트의 경우 조건에서 false를 반환합니다.

참고

단일 값 컨텍스트 키와 다중 값 컨텍스트 키의 차이는 정책 조건의 값 수가 아니라 요청 컨텍스트의 값 수에 따라 달라집니다.