용 ABACAC 사용AWS KMS - AWS Key Management Service

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

용 ABACAC 사용AWS KMS

ABAC(속성 기반 액세스 제어)는 속성을 기반으로 권한을 정의하는 권한 부여 전략입니다.AWS KMSCMK와 연관된 태그와 별칭을 기반으로 CMK (고객 마스터 키) 에 대한 액세스를 제어할 수 있도록 하여 ABAC를 지원합니다. 에서 ABAC를 활성화하는 태그 및 별칭 조건 키AWS KMS는 정책을 편집하거나 권한 부여를 관리하지 않고도 주도자가 CMK를 사용하도록 권한을 부여할 수 있는 강력하고 유연한 방법을 제공합니다. 그러나 보안 주체가 실수로 액세스가 허용되거나 거부되지 않도록 주의해서 이러한 기능을 사용해야 합니다.

ABAC를 사용하는 경우 이제 태그 및 별칭을 관리할 수 있는 권한이 액세스 제어 권한이라는 점에 유의하십시오. 태그 또는 별칭에 따라 달라지는 정책을 배포하기 전에 모든 CMK의 기존 태그와 별칭을 알고 있어야 합니다. 별칭을 추가, 삭제 및 업데이트하거나 키에 태그를 지정하고 태그를 해제할 때 합리적인 예방 조치를 취하십시오. 태그 및 별칭을 필요로 하는 보안 주체에게만 관리하고 관리할 수 있는 태그와 별칭을 제한할 수 있습니다.

Notes

ABAC를 사용하는 경우AWS KMS를 사용하는 경우 보안 주체에 태그 및 별칭을 관리할 수 있는 권한을 부여하는 데 주의해야 합니다. 태그 또는 별칭을 변경하면 CMK에 대한 권한을 허용하거나 거부할 수 있습니다. 키 정책을 변경하거나 권한을 생성할 권한이 없는 주요 관리자는 태그 또는 별칭을 관리할 권한이 있는 경우 CMK에 대한 액세스를 제어할 수 있습니다.

태그와 별칭 변경이 CMK 인증에 영향을 미치려면 최대 5분이 걸릴 수 있습니다. 최근 변경 사항은 권한 부여에 영향을 미치기 전에 API 작업에 표시될 수 있습니다.

별칭을 기반으로 CMK에 대한 액세스를 제어하려면 조건 키를 사용해야 합니다. 별칭을 사용하여 CMK를 나타낼 수 없습니다.Resource정책 문의 요소. 별칭이 속성 매니저에서 나타나면Resource요소의 경우 정책 문은 연결된 CMK가 아닌 별칭에 적용됩니다.

자세히 알아보기

에 대한 ABAC 조건 키AWS KMS

태그와 별칭을 기반으로 CMK에 대한 액세스 권한을 부여하려면 키 정책 또는 IAM 정책에서 다음 조건 키를 사용합니다.

ABAC 조건 키 설명 정책 유형 AWS KMS연산
aws:ResourceTag/tag-key CMK의 태그 (키 및 값) 가 정책의 태그 (키 및 값) 또는 태그 패턴과 일치합니다. IAM 정책 전용 CMK 리소스 작업2
aws:RequestTag/tag-key 요청의 태그 (키와 값) 가 정책의 태그 (키와 값) 또는 태그 패턴과 일치합니다. 주요 정책 및 IAM 정책1 TagResource,UntagResource
aws:TagKeys 요청의 태그 키가 정책의 태그 키와 일치합니다. 주요 정책 및 IAM 정책1 TagResource,UntagResource
KMS:리소스 별칭 CMK와 연결된 별칭은 정책의 별칭 또는 별칭 패턴과 일치합니다. IAM 정책 전용 CMK 리소스 작업2
KMS:요청별칭 요청의 CMK를 나타내는 별칭은 정책의 별칭 또는 별칭 패턴과 일치합니다. 주요 정책 및 IAM 정책1 암호화 작업,DescribeKey,GetPublicKey

1키 정책에서 사용할 수 있는 모든 조건 키는 IAM 정책에서도 사용할 수 있지만키 정책에서 허용하는.

2ACMK 리소스 작업특정 CMK에 대해 승인된 작업인 CMK에 대해 승인된 작업입니다. CMK 리소스 작업을 식별하려면AWS KMS사용 권한 테이블에서 CMK의 값을 찾습니다.Resources열에서 작업을 선택합니다.

예를 들어 이러한 조건 키를 사용하여 다음 정책을 만들 수 있습니다.

  • IAM 정책kms:ResourceAliases특정 별칭 또는 별칭 패턴과 함께 CMK를 사용할 수 있는 권한을 허용합니다. 이것은 태그에 의존하는 정책과는 약간 다릅니다. 정책에서 별칭 패턴을 사용할 수 있지만 각 별칭은 AWS 계정 및 리전. 이렇게 하면 정책 설명에 CMK의 키 ARN을 나열하지 않고 선택한 CMK 집합에 정책을 적용할 수 있습니다. 집합에서 CMK를 추가하거나 제거하려면 CMK의 별칭을 변경합니다.

  • 다음과 같은 주요 정책aws:RequestAlias에서 CMK를 사용할 수 있도록 허용합니다.Encrypt작업을 수행할 수 있지만Encrypt요청은 해당 별칭을 사용하여 CMK를 식별합니다.

  • IAM 정책aws:ResourceTag/tag-key특정 태그 키와 태그 값을 가진 CMK를 사용할 수 있는 권한을 거부합니다. 이렇게 하면 정책 설명에 CMK의 키 ARN을 나열하지 않고 선택한 CMK 집합에 정책을 적용할 수 있습니다. 세트에서 CMK를 추가하거나 제거하려면 CMK에 태그를 지정하거나 태그를 해제합니다.

  • IAM 정책aws:RequestTag/tag-key보안 주체만 삭제할 수 있는"Purpose"="Test"CMK 태그.

  • IAM 정책aws:TagKeys로 CMK에 태그 지정 또는 태그 해제 권한을 거부하는Restricted태그 키 키.

ABAC는 액세스 관리를 유연하고 확장 가능하게 합니다. 예를 들어, 사용할 수 있습니다.aws:ResourceTag/tag-key조건 키를 사용하여 CMK에Purpose=Test태그입니다. 이 정책은 모든 리전 내의 모든 CMK에 적용됩니다. AWS 계정 .

사용자 또는 역할에 연결된 경우 다음 IAM 정책은 보안 주체가Purpose=Test지정된 작업에 대한 태그. 새 CMK 또는 기존 CMK에 대한 액세스를 제공하기 위해 정책을 변경할 필요는 없습니다. 그냥 첨부합니다.Purpose=Test태그를 CMK에 추가합니다. 마찬가지로, 이 액세스를 CMK에서 제거하려면Purpose=Test태그에서 태그를 편집하거나 삭제합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AliasBasedIAMPolicy", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "arn:aws:kms:*:111122223333:key/*", "Condition": { "StringEquals": { "aws:ResourceTag/Purpose": "Test" } } } ] }

그러나 이 기능을 사용하는 경우 태그와 별칭을 관리할 때는 주의해야 합니다. 태그 또는 별칭을 추가, 변경 또는 삭제하면 실수로 CMK에 대한 액세스를 허용하거나 거부할 수 있습니다. 키 정책을 변경하거나 권한 부여를 생성할 권한이 없는 주요 관리자는 태그 및 별칭을 관리할 수 있는 권한이 있는 경우 CMK에 대한 액세스를 제어할 수 있습니다. 이 위험을 완화하기 위해태그 관리를 위한 권한 제한별칭. 예를 들어, 선택한 주도자만 관리하도록 허용할 수 있습니다.Purpose=Test태그입니다. 자세한 내용은 별칭을 사용하여 CMK에 대한 액세스 제어태그를 사용하여 CMK에 대한 액세스 제어 단원을 참조하십시오.

태그 또는 별칭?

AWS KMS는 태그 및 별칭이 있는 ABAC를 지원합니다. 두 옵션 모두 유연하고 확장 가능한 액세스 제어 전략을 제공하지만 서로 약간 다릅니다.

당신은 당신의 특정 기반으로 태그를 사용하거나 별칭을 사용하기로 결정할 수 있습니다AWS패턴을 사용합니다. 예를 들어 대부분의 관리자에게 이미 태그 사용 권한을 부여한 경우 별칭을 기반으로 권한 부여 전략을 제어하는 것이 더 쉬울 수 있습니다. 또는 할당량에 가까운 경우CMK당 별칭를 사용하는 경우 태그를 기반으로 한 권한 부여 전략을 선호 할 수 있습니다.

일반적으로 다음과 같은 이점이 있습니다.

태그 기반 액세스 제어의 이점

  • 다른 유형의 동일한 인증 메커니즘AWS있습니다.

    동일한 태그 또는 태그 키를 사용하여 Amazon RDS (관계형 데이터베이스 서비스) 클러스터, Amazon EBS (Amazon 엘라스틱 블록 스토어) 볼륨 및AWS KMSCMK. 이 기능을 사용하면 기존의 역할 기반 액세스 제어보다 유연한 여러 가지 권한 부여 모델을 사용할 수 있습니다.

  • CMK 그룹에 대한 액세스 권한을 부여합니다.

    태그를 사용하여 의 CMK 그룹에 대한 액세스를 관리할 수 있습니다. AWS 계정 및 리전. 선택한 CMK에 동일한 태그 또는 태그 키를 할당합니다. 그런 다음 태그 또는 태그 키를 기반으로 유지 관리가 간편한 정책 설명을 만듭니다. 권한 부여 그룹에서 CMK를 추가하거나 제거하려면 태그를 추가하거나 제거합니다. 정책을 편집할 필요가 없습니다.

별칭 기반 액세스 제어의 이점

  • 별칭을 기반으로 암호화 작업에 대한 액세스 권한을 부여합니다.

    다음을 포함하여 속성에 대한 대부분의 요청 기반 정책 조건AWS:RequestTag/tag-key과 속성을 추가, 편집 또는 삭제하는 작업에만 영향을 줍니다. 그러나KMS:요청별칭조건 키는 요청에서 CMK를 식별하는 데 사용되는 별칭을 기반으로 암호화 작업에 대한 액세스를 제어합니다. 예를 들어, 보안 주체에 CMK를 사용할 수 있는 권한을 부여할 수 있습니다.Encrypt작업의 값이 일 경우에만 해당됩니다.KeyId매개 변수는alias/restricted-key-1. 이 조건을 충족하려면 다음 사항이 모두 필요합니다.

    • CMK가 해당 별칭과 연결되어야 합니다.

    • 이 요청은 별칭을 사용하여 CMK를 식별해야 합니다.

    • 보안 주체는 CMK를 사용할 수 있는 권한을 가지고 있어야 합니다.kms:RequestAlias조건.

    이 기능은 애플리케이션에서 일반적으로 CMK를 참조하기 위해 별칭 이름이나 별칭 ARN을 사용하는 경우에 특히 유용합니다.

  • 매우 제한된 권한을 제공합니다.

    별칭은 고유해야 합니다. AWS 계정 및 리전. 따라서 보안 주체에 별칭을 기반으로 CMK에 대한 액세스 권한을 부여하는 것이 태그를 기반으로 액세스 권한을 부여하는 것보다 훨씬 제한적일 수 있습니다. 별칭과 달리 태그는 동일한 계정 및 리전에 있는 여러 CMK에 할당될 수 있습니다. 선택할 경우 다음과 같은 별칭 패턴을 사용할 수 있습니다.alias/test*를 사용하여 보안 주체에게 동일한 계정 및 지역의 CMK 그룹에 대한 액세스 권한을 부여할 수 있습니다. 그러나 특정 별칭에 대한 액세스를 허용하거나 거부하면 CMK를 매우 엄격하게 제어할 수 있습니다.

용 ABAC 문제 해결AWS KMS

태그와 별칭을 기반으로 CMK에 대한 액세스를 제어하는 것은 편리하고 강력합니다. 그러나 몇 가지 예측 가능한 오류가 발생하기 쉽습니다.

태그 변경으로 인해 액세스 변경

태그가 삭제되거나 해당 값이 변경되면 해당 태그만 기반으로 CMK에 액세스할 수 있는 보안 주체는 CMK에 대한 액세스가 거부됩니다. 거부 정책 문에 포함된 태그가 CMK에 추가되는 경우에도 이러한 문제가 발생할 수 있습니다. CMK에 정책 관련 태그를 추가하면 CMK에 대한 액세스가 거부되어야 하는 보안 주체에 액세스할 수 있습니다.

예를 들어 보안 주체가 에 따라 CMK에 대한 액세스를 갖고 있다고 가정해 보겠습니다.Project=Alpha태그 (예: 다음 예제 IAM 정책 설명에서 제공한 권한) 를 사용할 수 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "IAMPolicyWithResourceTag", "Effect": "Allow", "Action": [ "kms:GenerateDataKeyWithoutPlaintext", "kms:Decrypt" ], "Resource": "arn:aws:kms:ap-southeast-1:111122223333:key/*", "Condition": { "StringEquals": { "aws:ResourceTag/Project": "Alpha" } } } ] }

해당 CMK에서 태그가 삭제되거나 태그 값이 변경되면 보안 주체는 지정된 작업에 CMK를 사용할 수 있는 권한을 더 이상 갖지 않습니다. 이는 보안 주체가 데이터를 읽거나 쓰려고 할 때 분명해질 수 있습니다.AWS고객 관리형 CMK를 사용하는 서비스. 태그 변경을 추적하려면 CloudTrail 로그에서TagResource또는UntagResource 항목.

정책을 업데이트하지 않고 액세스를 복원하려면 CMK에서 태그를 변경합니다. 이 작업을 통해 적용되는 동안 짧은 기간 이외의 영향을 최소화합니다.AWS KMS. 이와 같은 오류를 방지하려면 태그 지정 및 태그 해제 권한을 필요한 보안 주체에게만 부여하고태그 지정 사용 권한 제한를 관리해야하는 태그에 추가합니다. 태그를 변경하기 전에 정책을 검색하여 태그에 따라 달라지는 액세스를 감지하고 태그가 있는 모든 지역에서 CMK를 가져옵니다. 특정 태그가 변경되면 Amazon CloudWatch 경보를 생성하는 것을 고려할 수 있습니다.

별칭 변경으로 인한 액세스 변경

별칭이 삭제되거나 다른 CMK와 연결된 경우 해당 별칭만 기반으로 CMK에 액세스할 수 있는 보안 주체는 CMK에 대한 액세스가 거부됩니다. CMK와 연결된 별칭이 거부 정책 설명에 포함된 경우에도 이러한 문제가 발생할 수 있습니다. CMK에 정책 관련 별칭을 추가하면 CMK에 대한 액세스를 거부해야 하는 보안 주체에 대한 액세스를 허용할 수도 있습니다.

예를 들어 다음 IAM 정책 문은KMS:리소스 별칭조건 키를 사용하여 지정된 별칭을 가진 계정의 다른 지역에 있는 CMK에 대한 액세스를 허용할 수 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AliasBasedIAMPolicy", "Effect": "Allow", "Action": [ "kms:List*", "kms:Describe*", "kms:Decrypt" ], "Resource": "arn:aws:kms:*:111122223333:key/*", "Condition": { "ForAnyValue:StringEquals": { "kms:ResourceAliases": [ "alias/ProjectAlpha", "alias/ProjectAlpha_Test", "alias/ProjectAlpha_Dev" ] } } } ] }

별칭 변경을 추적하려면 CloudTrail 로그에서CreateAlias,UpdateAlias, 및DeleteAlias항목을 연결합니다.

정책을 업데이트하지 않고 액세스를 복원하려면 CMK와 연결된 별칭을 변경합니다. 각 별칭은 계정 및 지역에서 하나의 CMK에만 연결할 수 있으므로 별칭을 관리하는 것은 태그를 관리하는 것보다 조금 더 어렵습니다. 한 CMK의 일부 보안 주체에 대한 액세스를 복원하면 동일한 보안 주체 또는 다른 보안 주체가 다른 CMK에 대한 액세스를 거부할 수 있습니다.

이 오류를 방지하려면 별칭 관리 권한을 필요한 보안 주체에게만 부여하고별칭 관리 권한 제한를 관리해야하는 별칭으로 설정합니다. 별칭을 업데이트하거나 삭제하기 전에 정책을 검색하여 별칭에 종속된 액세스를 검색하고 별칭과 연결된 모든 리전에서 CMK를 찾습니다.

별칭 할당량으로 인해 액세스가 거부되었습니다.

CMK를 사용할 수 있는 권한이 있는 사용자KMS:리소스 별칭조건을 얻을 것이다AccessDeniedCMK가 기본값을 초과하는 경우 예외CMK당 별칭할당량 및 지역입니다.

액세스를 복원하려면 CMK와 연결된 별칭을 삭제하여 할당량을 준수합니다. 또는 대체 메커니즘을 사용하여 사용자에게 CMK에 대한 액세스 권한을 부여합니다.

지연된 권한 부여 변경

태그와 별칭을 변경하면 CMK의 권한 부여에 영향을 주는 데 최대 5분이 걸릴 수 있습니다. 따라서 권한 부여에 영향을 미치기 전에 API 작업의 응답에 태그 또는 별칭 변경이 반영될 수 있습니다. 이 지연은 대부분의 영향을 미치는 짧은 최종 일관성 지연보다 길어질 수 있습니다.AWS KMS작업을 수행합니다.

예를 들어, 특정 보안 주체가 모든 CMK를"Purpose"="Test"태그입니다. 그런 다음 추가"Purpose"="Test"태그를 CMK에 연결합니다. 비록TagResource작업이 완료되고ListResourceTags응답에서 태그가 CMK에 할당되었음을 확인하면 보안 주체가 CMK에 최대 5분 동안 액세스하지 못할 수 있습니다.

오류를 방지하려면이 예상 지연을 코드에 빌드하십시오.

별칭 업데이트로 인해 실패한 요청

별칭을 업데이트하면 기존 별칭을 다른 CMK와 연결합니다.

암호화 해제ReEncrypt지정 하는 요청별칭 이름또는별칭 ARN별칭이 암호문을 암호화하지 않은 CMK와 연결되어 있기 때문에 실패할 수 있습니다. 이 상황은 일반적으로IncorrectKeyException또는NotFoundException. 또는 요청에KeyId또는DestinationKeyId매개 변수를 사용하여 작업이 실패할 수 있습니다.AccessDenied예외입니다. 호출자가 암호문을 암호화한 CMK에 더 이상 액세스할 수 없기 때문입니다.

CloudTrail 로그에서 변경 사항을 추적할 수 있습니다.CreateAlias,UpdateAlias, 및DeleteAlias로그 항목을 생성합니다. 값을 사용할 수도 있습니다.LastUpdatedDate필드의 속성ListAliases응답을 사용하여 변경 사항을 감지합니다.

예를 들어 다음ListAliases예제 응답은ProjectAlpha_Test별칭을 생성합니다.kms:ResourceAliases조건이 업데이트되었습니다. 따라서 별칭을 기반으로 액세스 권한이 있는 보안 주체는 이전에 연결된 CMK에 대한 액세스 권한을 잃게 됩니다. 대신 새로 연결된 CMK에 액세스할 수 있습니다.

$ aws kms list-aliases --query 'Aliases[?starts_with(AliasName, `alias/ProjectAlpha`)]' { "Aliases": [ { "AliasName": "alias/ProjectAlpha_Test", "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/ProjectAlpha_Test", "TargetKeyId": "0987dcba-09fe-87dc-65ba-ab0987654321", "CreationDate": 1566518783.394, "LastUpdatedDate": 1605308931.903 }, { "AliasName": "alias/ProjectAlpha_Restricted", "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/ProjectAlpha_Restricted", "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "CreationDate": 1553410800.010, "LastUpdatedDate": 1553410800.010 } ] }

이 변경에 대한 치료법은 간단하지 않습니다. 별칭을 다시 업데이트하여 원래 CMK와 연결할 수 있습니다. 그러나 행동하기 전에 변경 사항이 현재 연결된 CMK에 미치는 영향을 고려해야합니다. 보안 주체가 암호화 작업에 후자의 CMK를 사용한 경우 보안 주체에 계속 액세스해야 할 수 있습니다. 이 경우 보안 주체가 두 CMK를 모두 사용할 수 있는 권한을 갖도록 정책을 업데이트할 수 있습니다.

다음과 같은 오류를 방지 할 수 있습니다. 별칭을 업데이트하기 전에 별칭에 종속된 액세스를 검색하는 정책을 검색합니다. 그런 다음 별칭과 연결된 모든 리전에서 CMK를 가져옵니다. 별칭 관리 권한을 필요한 보안 주체에게만 부여하고별칭 관리 권한 제한를 관리해야하는 별칭으로 설정합니다.