의 정책 조건 사용AWS KMS - AWS Key Management Service

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

의 정책 조건 사용AWS KMS

키 정책 및 AWS Identity and Access Management 정책(IAM 정책)에서 AWS KMS 리소스에 대한 액세스를 제어하는 조건을 지정할 수 있습니다. 이 정책 설명은 조건이 true일 때만 유효합니다. 예를 들어, 특정 날짜 이후에만 정책 설명이 적용되기를 원할 수 있습니다. 또는 API 요청에 특정 값이 있는 경우에만 정책 설명이 액세스를 제어하기를 원할 수 있습니다.

조건을 지정하려면 조건 정책 연산자Condition와 함께 정책 설명의 요소에 미리 정의된 IAM조건 키를 사용합니다. 일부 조건 키는AWS 에 전체적으로 적용되고 일부는AWS KMS. 에만 적용됩니다.

AWS 전역 조건 키

AWS는 액세스 제어를 위해 를 사용하는 모든 서비스에 대한 정책 조건 키 세트인 AWS전역 조건 키IAM를 정의합니다. AWS KMS 키 정책 및 IAM 정책에서 전역 조건 키를 사용할 수 있습니다.

예를 들어, 요청의 보안 주체가 조건 키 값에 Amazon 리소스 이름(ARN)으로 표시되는 경우에만 aws:PrincipalArn 전역 조건 키를 사용하여 고객 마스터 키(CMK)에 대한 액세스를 허용할 수 있습니다. 에서 속성 기반 액세스 제어(ABAC)를 지원하려면 AWS KMS 정책에서 aws:ResourceTag 전역 조건 키를 사용하여 특정 태그로 에 대한 액세스를 허용할 수 있습니다.IAMCMKs

AWS KMS는 다음을 제외한 모든 AWS 전역 조건 키를 지원합니다.

사용 가능한 요청 유형을 포함하여 AWS 전역 조건 키에 대한 자세한 내용은 AWS의 전역 조건 컨텍스트 키를 참조하십시오.IAM 사용 설명서 정책에서 전역 조건 키를 사용하는 예제는 IAM요청에 대한 액세스 제어태그 키 제어를 참조하십시오.IAM 사용 설명서

다음 주제에서는 IP 주소 및 VPC 엔드포인트를 기반으로 조건 키를 사용하기 위한 특별한 지침을 제공합니다.

AWS KMS 권한으로 정책에서 IP 주소 조건 사용

AWS KMS를 사용하여 통합 AWS 서비스.에서 데이터를 보호할 수 있습니다. 하지만 에 대한 액세스를 허용하거나 거부하는 동일한 정책 설명에 조건 키 또는 aws:SourceIpIP 주소 조건 연산자AWS KMS를 지정할 때는 주의해야 합니다. 예를 들어 AWS의 정책: 소스 IP를 기반으로 AWS에 대한 액세스 거부는 AWS 작업을 지정된 IP 범위의 요청으로 제한합니다.

다음 시나리오를 고려하십시오.

  1. : 소스 IP를 기반으로 AWS에 대한 액세스 거부AWS에 표시된 정책과 같은 정책을 사용자에게 연결합니다.IAM aws:SourceIp 조건 키의 값을 사용자 회사의 IP 주소 범위로 설정합니다. 이 IAM 사용자에게는 Amazon EBS, Amazon EC2, AWS KMS. 사용을 허용하는 다른 정책이 연결되어 있습니다.

  2. 사용자가 암호화된 EBS 볼륨을 EC2 인스턴스에 연결하려고 합니다. 사용자가 모든 관련 서비스를 이용할 권한을 가지고 있음에도 인증 오류로 인해 이 작업은 실패합니다.

볼륨의 암호화된 데이터 키를 해독하라는 AWS KMS에 대한 요청이 Amazon EC2 인프라와 연결된 IP 주소에서 이루어지기 때문에 2단계는 실패합니다. 요청이 성공하려면 원래 사용자의 IP 주소에서 이루어져야 합니다. 1단계의 정책은 지정된 IP 주소 이외에서 이루어진 모든 요청을 명시적으로 거부하기 때문에, EBS 볼륨의 암호화된 데이터 키를 해독할 수 있는 권한이 Amazon EC2에 부여되지 않습니다.

또한 요청이 aws:sourceIP 엔드포인트Amazon VPC에서 이루어지는 경우 조건 키는 유효하지 않습니다. VPC 엔드포인트를 포함하여 VPC 엔드포인트로 요청을 제한하려면 AWS KMS 또는 조건 키를 사용합니다.aws:sourceVpceaws:sourceVpc 자세한 내용은 Amazon VPC 사용 설명서VPC 엔드포인트 - 엔드포인트 사용 제어를 참조하십시오.

AWS KMS 권한으로 정책에서 VPC 엔드포인트 조건 사용

는 AWS KMSAmazon Virtual Private CloudAmazon VPC 로 구동되는 (AWS) 엔드포인트PrivateLink를 지원합니다. VPC에서 요청을 보내거나 VPC 엔드포인트를 사용할 때 키 정책 및 정책에서 다음 전역 조건 키IAM를 사용하여 AWS KMS 리소스에 대한 액세스를 제어할 수 있습니다. 자세한 내용은 을(를) 참조하십시오.정책 설명에 VPC 엔드포인트 사용.

  • aws:SourceVpc는 지정된 VPC의 요청으로 액세스를 제한합니다.

  • aws:SourceVpce는 지정된 VPC 엔드포인트의 요청으로 액세스를 제한합니다.

AWS KMS에 대한 액세스를 허용하거나 거부하는 키 정책 설명에 이러한 조건 키를 사용하면 사용자를 대신하여 CMKs를 사용하는 AWS 서비스에 대한 액세스를 실수로 거부할 수 있습니다.AWS KMS

IP 주소 조건 키 예제와 같은 상황을 피하도록 주의하십시오. 에 대한 요청을 VPC 또는 VPC 엔드포인트로 제한하면 CMK 또는 AWS KMS와 같은 통합 서비스에서 Amazon S3를 호출하지 못할 수 있습니다.Amazon EBS 원본 요청이 궁극적으로 VPC 또는 VPC 엔드포인트에서 시작된 경우에도 이러한 상황이 발생할 수 있습니다.

AWS KMS 조건 키

AWS KMS는 키 정책과 IAM 정책에 사용할 수 있는 사전 정의된 조건 키 집합을 추가 제공합니다. 에만 해당되는 특정한 조건 키입니다.AWS KMS. 예를 들어 kms:EncryptionContext 대칭 ()에 대한 액세스를 제어할 때 AWS KMS 조건 키를 사용하여 특정 고객 마스터 키암호화 컨텍스트CMK를 요구할 수 있습니다.

API 작업 요청에 대한 조건

많은 AWS KMS 조건 키는 CMK 작업 요청의 파라미터 값을 기반으로 AWS KMS에 대한 액세스를 제어합니다. 예를 들어, 정책에서 CustomerMasterKeySpeckms:IAM 조건 키를 사용하여 요청의 CreateKey 파라미터 값이 인 경우에만 CustomerMasterKeySpec 작업의 사용을 허용할 수 있습니다.CreateKeyRSA_4096

이 유형의 조건은 파라미터의 기본값을 사용하는 경우와 같이 요청에 파라미터가 나타나지 않는 경우에도 작동합니다. 예를 들어 kms:CustomerMasterKeySpec 조건 키를 사용하여 CreateKey 파라미터 값이 기본값인 CustomerMasterKeySpec인 경우에만 사용자가 SYMMETRIC_DEFAULT 작업을 사용하도록 허용할 수 있습니다. 이 조건은 CustomerMasterKeySpec 파라미터 값이 SYMMETRIC_DEFAULT인 요청과 CustomerMasterKeySpec 파라미터가 없는 요청을 허용합니다.

API 작업에 사용되는 CMKs의 조건

일부 AWS KMS 조건 키는 작업에 사용되는 CMK의 속성을 기반으로 작업에 대한 액세스를 제어할 수 있습니다. 예를 들어 kms:KeyOrigin 조건을 사용하여 의 GenerateDataKey가 인 경우에만 보안 주체가 CMK에 대해 Origin를 호출하도록 허용할 수 있습니다.CMKAWS_KMS 이러한 방식으로 조건 키를 사용할 수 있는지 확인하려면 조건 키의 설명을 참조하십시오.

작업은 특정 CMK에 대해 승인된 작업인 CMK 리소스 작업이어야 합니다. CMK 리소스 작업을 식별하려면 작업 및 리소스 테이블에서, 해당 작업에 대한 Resources 열에서 CMK 값을 찾습니다.이 유형의 조건 키를 특정 CMK 리소스(예: ListKeys)에 대해 권한이 부여되지 않은 작업과 함께 사용하면 조건을 충족할 수 없으므로 권한이 유효하지 않습니다. 작업 권한 부여와 관련된 CMK 리소스는 없으며 ListKeys 속성도 없습니다.CustomerMasterKeySpec

다음 주제는 각 AWS KMS 조건 키를 설명하고, 정책 구문을 보여주는 정책 설명 예제를 포함합니다.

kms:BypassPolicyLockoutSafetyCheck

AWS KMS 조건 키 조건 유형 API 작업 정책 유형

kms:BypassPolicyLockoutSafetyCheck

부울(Boolean)

CreateKey

PutKeyPolicy

IAM 정책만 해당

키 정책 및 IAM 정책

조건 키는 요청의 kms:BypassPolicyLockoutSafetyCheck 파라미터 값에 따라 CreateKey 및 PutKeyPolicy 작업에 대한 액세스를 제어합니다.BypassPolicyLockoutSafetyCheck

다음 예제 IAM 정책 설명은 CMKs 요청의 BypassPolicyLockoutSafetyCheck 파라미터 값이 CreateKey인 경우 사용자가 true. 생성 권한을 거부하여 정책 잠금 안전 점검을 우회하지 못하도록 합니다.

{ "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": "kms:CreateKey", "Resource": "*", "Condition": { "Bool": { "kms:BypassPolicyLockoutSafetyCheck": true } } } }

또한 kms:BypassPolicyLockoutSafetyCheck 정책 또는 키 정책의 IAM 조건 키를 사용하여 PutKeyPolicy 작업에 대한 액세스를 제어할 수도 있습니다. 키 정책의 다음 예제 정책 설명은 CMK의 정책을 변경할 때 사용자가 정책 잠금 안전 점검을 우회하지 못하도록 합니다.

명시적 Deny를 사용하는 대신에, 이 정책 설명에서는 AllowNull condition operator를 함께 사용하여 요청에 BypassPolicyLockoutSafetyCheck 파라미터가 포함되지 않을 때만 액세스를 허용합니다. 파라미터를 사용하지 않을 경우 기본값은 false입니다. 드문 경우이지만 우회가 필요한 경우 이 약간 약한 정책 설명을 재정의할 수 있습니다.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "kms:PutKeyPolicy", "Resource": "*", "Condition": { "Null": { "kms:BypassPolicyLockoutSafetyCheck": true } } } }

다음 사항도 참조하십시오.

kms:CallerAccount

AWS KMS 조건 키 조건 유형 API 작업 정책 유형

kms:CallerAccount

문자열

CMK 리소스 작업

Key policies only

이 조건 키를 사용해 IAM 계정 내 모든 자격 증명( AWS사용자와 역할)에 대한 액세스를 허용하거나 거부할 수 있습니다. 키 정책에서 Principal 요소를 이용해 정책 설명이 적용될 자격 증명을 지정합니다. Principal 요소에 대한 구문은 AWS 계정의 모든 자격 증명을 지정하는 방법을 제공하지 않지만 모든 Principal 자격 증명을 지정하는 AWS 요소와 이 조건 키를 결합하여 이러한 효과를 얻을 수 있습니다.

이 조건은 키 정책에서만 유효하므로 이 조건을 사용하여 모든 CMK리소스 작업, 즉 특정 AWS KMS를 사용하는 모든 CMK 작업에 대한 액세스를 제어할 수 있습니다. CMK 리소스 작업을 식별하려면 작업 및 리소스 테이블에서, 해당 작업에 대한 Resources 열에서 CMK 값을 찾습니다..

예를 들어 다음 정책 설명은 kms:CallerAccount 조건 키를 사용하는 방법을 보여줍니다. 이 정책 설명은 AWS용 CMK 관리형 Amazon EBS의 키 정책에 있습니다. 이 문은 모든 Principal 자격 증명을 지정하는 AWS 요소와 kms:CallerAccount 조건 키를 결합해 AWS 계정 111122223333.에서 모든 자격 증명에 액세스하도록 효과적으로 허용합니다. 여기에 추가 AWS KMS 조건 키(kms:ViaService)가 포함되어 있어, Amazon EBS.를 통해 수신되는 요청만 허용하여 권한을 더욱 제한합니다. 자세한 내용은 단원을 참조하십시오.kms:ViaService.

{ "Sid": "Allow access through EBS for all principals in the account that are authorized to use EBS", "Effect": "Allow", "Principal": {"AWS": "*"}, "Condition": { "StringEquals": { "kms:CallerAccount": "111122223333", "kms:ViaService": "ec2.us-west-2.amazonaws.com" } }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey" ], "Resource": "*" }

kms:CustomerMasterKeySpec

AWS KMS 조건 키 조건 유형 API 작업 정책 유형

kms:CustomerMasterKeySpec

문자열

CreateKey

CMK 리소스 작업

IAM 정책

키 정책 및 IAM 정책

조건 키는 작업에 의해 생성되거나 작업에 사용되는 kms:CustomerMasterKeySpecCustomerMasterKeySpec 속성 값에 따라 작업에 대한 액세스를 제어합니다.CMK

정책에서 이 조건 키를 사용하여 IAM 요청의 CreateKey 파라미터 값에 따라 CustomerMasterKeySpec 작업에 대한 액세스를 제어할 수 있습니다.CreateKey 예를 들어 이 조건을 사용하여 사용자가 대칭 CMKs만 생성하거나 RSA 키가 있는 CMKs만 생성하도록 허용할 수 있습니다.

다음 예제 IAM 정책 문은 kms:CustomerMasterKeySpec 조건 키를 사용하여 요청의 CMK가 CustomerMasterKeySpec인 경우에만 보안 주체가 RSA_4096를 생성하도록 허용합니다.

{ "Effect": "Allow", "Action": "kms:CreateKey", "Resource": "*", "Condition": { "StringEquals": { "kms:CustomerMasterKeySpec": "RSA_4096" } } }

또한 kms:CustomerMasterKeySpec 조건 키를 사용하여 작업에 사용되는 CMK의 CustomerMasterKeySpec 속성을 기반으로 CMK를 사용하거나 관리하는 작업에 대한 액세스를 제어할 수 있습니다.작업은 특정 CMK에 대해 승인된 작업인 CMK 리소스 작업이어야 합니다. CMK 리소스 작업을 식별하려면 작업 및 리소스 테이블에서, 해당 작업에 대한 Resources 열에서 CMK 값을 찾습니다.

예를 들어 다음 IAM 정책은 보안 주체가 지정된 CMK 리소스 작업을 수행하도록 허용하지만 계정의 대칭 CMKs에 대해서만 허용합니다.

{ "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:DescribeKey" ], "Resource": { "arn:aws:kms:us-west-2:111122223333:key/*" }, "Condition": { "StringEquals": { "kms:CustomerMasterKeySpec": "SYMMETRIC_DEFAULT" } } }

다음 사항도 참조하십시오.

kms:CustomerMasterKeyUsage

AWS KMS 조건 키 조건 유형 API 작업 정책 유형

kms:CustomerMasterKeyUsage

문자열

CreateKey

CMK 리소스 작업

IAM 정책

키 정책 및 IAM 정책

조건 키는 작업에 의해 생성되거나 작업에 사용되는 kms:CustomerMasterKeyUsageKeyUsage 속성 값에 따라 작업에 대한 액세스를 제어합니다.CMK

이 조건 키를 사용하여 요청의 CreateKey 파라미터 값에 따라 KeyUsage 작업에 대한 액세스를 제어할 수 있습니다. 에 유효한 값은 KeyUsageENCRYPT_DECRYPT입니다.SIGN_VERIFY

예를 들어 CMK이 KeyUsage인 경우에만 사용자가 ENCRYPT_DECRYPT을 생성하도록 허용하거나 KeyUsageSIGN_VERIFY인 경우 사용자 권한을 거부할 수 있습니다.

다음 예제 IAM 정책 문은 kms:CustomerMasterKeyUsage 조건 키를 사용하여 CMK이 KeyUsage인 경우에만 사용자가 ENCRYPT_DECRYPT을 생성하도록 허용합니다.

{ "Effect": "Allow", "Action": "kms:CreateKey", "Resource": "*", "Condition": { "StringEquals": { "kms:CustomerMasterKeyUsage": "ENCRYPT_DECRYPT" } } }

또한 kms:CustomerMasterKeyUsage 조건 키를 사용하여 작업에 사용되는 CMK의 KeyUsage 속성을 기반으로 CMK를 사용하거나 관리하는 작업에 대한 액세스를 제어할 수 있습니다.작업은 특정 CMK에 대해 승인된 작업인 CMK 리소스 작업이어야 합니다. CMK 리소스 작업을 식별하려면 작업 및 리소스 테이블에서, 해당 작업에 대한 Resources 열에서 CMK 값을 찾습니다.

예를 들어, 다음 IAM 정책은 보안 주체가 지정된 CMK 리소스 작업을 수행하도록 허용하지만, 서명 및 확인에 사용되는 계정의 CMKs에 대해서만 허용합니다.

{ "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:DescribeKey", "kms:GetPublicKey", "kms:ScheduleKeyDeletion" ], "Resource": { "arn:aws:kms:us-west-2:111122223333:key/*" }, "Condition": { "StringEquals": { "kms:CustomerMasterKeyUsage": "SIGN_VERIFY" } } }

다음 사항도 참조하십시오.

kms:DataKeyPairSpec

AWS KMS 조건 키 조건 유형 API 작업 정책 유형

kms:DataKeySpec

문자열

GenerateDataKeyPair

GenerateDataKeyPairWithoutPlaintext

키 정책 및 IAM 정책

이 조건 키를 사용하여 요청의 파라미터 값에 따라 GenerateDataKeyPairGenerateDataKeyPairWithoutPlaintext 작업에 대한 액세스를 제어할 수 있습니다.KeyPairSpec 예를 들어 사용자가 특정 유형의 데이터 키 페어만 생성하도록 허용할 수 있습니다.

다음 예제 키 정책 문은 kms:DataKeyPairSpec 조건 키를 사용하여 사용자가 CMK를 사용하여 RSA 데이터 키 페어만 생성하도록 허용합니다.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": [ "kms:GenerateDataKeyPair", "kms:GenerateDataKeyPairWithoutPlaintext" ], "Resource": "*", "Condition": { "StringLike": { "kms:DataKeyPairSpec": "RSA*" } } }

다음 사항도 참조하십시오.

kms:EncryptionAlgorithm

AWS KMS 조건 키 조건 유형 API 작업 정책 유형

kms:EncryptionAlgorithm

문자열

Decrypt

Encrypt

GenerateDataKey

GenerateDataKeyPair

GenerateDataKeyPairWithoutPlaintext

GenerateDataKeyWithoutPlaintext

ReEncrypt

키 정책 및 IAM 정책

kms:EncryptionAlgorithm 조건 키를 사용하여 작업에 사용되는 암호화 알고리즘을 기반으로 암호화 작업에 대한 액세스를 제어할 수 있습니다. Encrypt, DecryptReEncrypt 작업의 경우 요청의 EncryptionAlgorithm 파라미터 값에 따라 액세스를 제어합니다. 데이터 키 및 데이터 키 페어를 생성하는 작업의 경우 데이터 키를 암호화하는 데 사용되는 암호화 알고리즘을 기반으로 액세스를 제어합니다.

이 조건 키는 AWS KMS 외부에서 비대칭 CMK 페어의 퍼블릭 키를 사용하여 암호화하는 것과 같이 AWS KMS 외부에서 수행되는 작업에는 영향을 주지 않습니다.

EncryptionAlgorithm 요청의 파라미터

사용자가 CMK에서 특정 암호화 알고리즘만 사용하도록 허용하려면 Deny 효과 및 StringNotEquals 조건 연산자가 포함된 정책 설명을 사용합니다. 예를 들어 다음 예제 키 정책 문은 요청의 암호화 알고리즘이 ExampleRole이 아닌 한 CMK 역할을 수임할 수 있는 보안 주체가 지정된 암호화 작업에서 이 대칭 RSAES_OAEP_SHA_256를 사용하는 것을 금지합니다.

사용자가 특정 암호화 알고리즘을 사용하도록 허용하는 정책 문과 달리, 이와 같은 이중 부정을 가진 정책 문은 이 CMK에 대한 다른 정책 및 권한 부여를 통해 이 역할이 다른 암호화 알고리즘을 사용할 수 없도록 합니다. 이 정책 설명의 Deny는 IAM 효과가 있는 모든 키 정책 또는 Allow 정책보다 우선하며, 이 CMK 및 해당 보안 주체에 대한 모든 권한 부여보다 우선합니다.

{ "Sid": "Allow only one encryption algorithm with this asymmetric CMK", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*" ], "Resource": "*", "Condition": { "StringNotEquals": { "kms:EncryptionAlgorithm": "RSAES_OAEP_SHA_256" } } }

작업에 사용되는 암호화 알고리즘

kms:EncryptionAlgorithm 조건 키를 사용하여 데이터 키 및 데이터 키 페어를 생성하는 작업에 대한 액세스도 제어할 수 있습니다. 이러한 작업은 대칭 CMKs 및 SYMMETRIC_DEFAULT 알고리즘만 사용합니다.

예를 들어 다음 IAM 정책은 보안 주체를 대칭 암호화로 제한합니다. 요청에 지정되거나 작업에 사용된 암호화 알고리즘이 SYMMETRIC_DEFAULT가 아닌 한 예제 계정에서 암호화 작업에 대한 액세스를 거부합니다.CMK 비대칭 또는 비대칭 암호화 알고리즘을 사용하여 데이터 키를 암호화하거나 데이터 키 페어의 프라이빗 키를 암호화할 수 없기 때문에 GenerateDataKey, GenerateDataKeyWithoutPlaintext, , GenerateDataKeyPair, GenerateDataKeyPairWithoutPlaintext를 추가하면 즉각적인 실질적인 효과가 없습니다.CMK

{ "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:GenerateDataKeyPair*" ], "Resource": { "arn:aws:kms:us-west-2:111122223333:key/*" }, "Condition": { "StringNotEquals": { "kms:EncryptionAlgorithm": "SYMMETRIC_DEFAULT" } } }

다음 사항도 참조하십시오.

kms:EncryptionContext:

AWS KMS 조건 키 조건 유형 API 작업 정책 유형

kms:EncryptionContext:

문자열

CreateGrant

Encrypt

Decrypt

GenerateDataKey

GenerateDataKeyPair

GenerateDataKeyPairWithoutPlaintext

GenerateDataKeyWithoutPlaintext

ReEncrypt

키 정책 및 IAM 정책

조건 키 접두사를 사용하여 암호화 작업 요청의 암호화 컨텍스트를 기반으로 kms:EncryptionContext:대칭 CMK에 대한 액세스를 제어할 수 있습니다. 이 조건 키 접두어를 사용하여 암호화 컨텍스트 쌍의 키와 값을 평가합니다. 암호화 컨텍스트 키만 평가하려면 kms:EncryptionContextKeys 조건 키를 사용합니다.

암호화 컨텍스트는 대칭 (–EncryptAWS KMS, CMKDecrypt, , , GenerateDataKey) 및 GenerateDataKeyWithoutPlaintext 작업을 사용하는 모든 암호화 작업에 대한 요청에 포함할 수 있는 보안되지 않은 키값 페어 집합입니다.ReEncryptCreateGrant 암호화 작업에서 암호화 컨텍스트를 지정하는 경우 해독 작업에서 동일한 암호화 컨텍스트를 지정해야 합니다. 그렇지 않으면 해독 요청이 실패합니다.

비대칭 CMK를 사용하여 암호화 작업에서 암호화 컨텍스트를 지정할 수 없습니다. AWS KMS에서 사용하는 표준 비대칭 암호화 알고리즘은 암호화 컨텍스트를 지원하지 않습니다.

kms:EncryptionContext:조건 키 접두어를 사용하려면 encryption_context_key 자리 표시자를 암호화 컨텍스트 키로 바꿉니다. encryption_context_value 자리 표시자를 암호화 컨텍스트 값으로 바꿉니다.

"kms:EncryptionContext:encryption_context_key": "encryption_context_value"

예를 들어, 다음 조건 키는 키가 AppName이고 값이 ExampleApp. 인 암호화 컨텍스트를 지정합니다.

"kms:EncryptionContext:AppName": "ExampleApp"

다음 예제 키 정책 명령문은 이 조건 키를 사용합니다. 한 요청에 여러 암호화 컨텍스트 쌍이 있을 수 있으므로 조건 연산자에는 ForAnyValue 또는 ForAllValues.이(가) 포함되어야 합니다.

이 정책은 요청의 암호화 컨텍스트 쌍이 하나 이상 CMK인 경우에만 보안 주체가 GenerateDataKey 요청에서 "AppName": "ExampleApp"를 사용하도록 허용합니다.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContext:AppName": "ExampleApp" } } }

여러 암호화 컨텍스트 쌍 요구

둘 이상의 암호화 컨텍스트 쌍을 요구하려면 kms:EncryptionContext: 조건의 여러 인스턴스를 포함시킬 수 있습니다. 예를 들어, 다음 예시 정책문에서는 ForAllValues 연산자로 다음의 두 암호화 컨텍스트 쌍을 모두 요구합니다(다른 쌍은 요구하지 않음). 쌍이 지정된 순서는 중요하지 않습니다.

  • "AppName": "ExampleApp"

  • "FilePath": "/var/opt/secrets/"

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "kms:EncryptionContext:AppName": "ExampleApp", "kms:EncryptionContext:FilePath": "/var/opt/secrets/" } } }

암호화 컨텍스트 조건의 대/소문자 구분

암호 해독 작업에 지정된 암호화 컨텍스트는 암호화 작업에 지정된 암호화 컨텍스트에 대해 대소문자가 정확히 일치해야 합니다. 여러 쌍이 있는 암호화 컨텍스트에서 쌍의 순서만 다를 수 있습니다.

그러나 정책 조건에서 조건 키는 대소문자를 구분하지 않습니다. 조건 값의 대/소문자 구분은 또는 와 같이 사용하는 StringEquals정책 조건 연산자StringEqualsIgnoreCase에 의해 결정됩니다.

따라서 kms:EncryptionContext: 접두사와 로 구성된 조건 키가 encryption_context_key 대소문자를 구분하지 않습니다. 이 조건을 사용하는 정책은 조건 키의 두 요소의 대소문자를 검사하지 않습니다. 값의 대/소문자 구분, 즉 encryption_context_value replacement는 정책 조건 연산자에 의해 결정됩니다.

예를 들어 다음 정책 명령문은 대문자 사용에 관계없이 암호화 컨텍스트에 Appname키가 포함 된 경우 작업을 허용합니다. 예를 들어 다음 정책 명령문은 대문자 사용에 관계없이 암호화 컨텍스트에 StringEquals 키가 포함 된 경우 작업을 허용합니다ExampleApp

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContext:Appname": "ExampleApp" } } }

대/소문자를 구분하는 암호화 컨텍스트 키를 요구하려면 kms: EncryptionContextKeys 정책 조건을 대/소문자를 구분하는 조건 연산자(예: )와 함께 사용합니다.StringEquals 이 정책 조건에서는 암호화 컨텍스트 키가 정책 조건 값이기 때문에 대/소문자 구분은 조건 연산자에 의해 결정됩니다.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContextKey": "AppName" } } }

암호화 컨텍스트 키와 값 모두에 대해 대소문자가 구분된 평가가 필요하면 kms:EncryptionContextKeyskms:EncryptionContext: 정책 조건을 동일한 정책문에 함께 사용하십시오. 예를 들어, StringEquals 연산자는 대소문자를 구분하기 때문에 다음 정책문 예문에서는 암호화 컨텍스트 키와 암호화 컨텍스트 값 모두 대소문자를 구분합니다.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": "AppName", "kms:EncryptionContext:AppName": "ExampleApp" } } }

암호화 컨텍스트 조건에 변수 사용

암호화 컨텍스트 쌍의 키와 값은 단순 리터럴 문자열이어야 합니다. 정수나 객체, 또는 완전히 해결되지 않는 어떤 형식도 사용할 수 없습니다. 정수 또는 부동 소수점과 같은 다른 형식을 사용할 경우 AWS KMS는 이를 리터럴 문자열로 해석합니다.

"encryptionContext": { "department": "10103.0" }

그러나 kms:EncryptionContext: 조건 키 페어의 값은 IAM 정책 변수.일 수 있습니다. 이러한 정책 변수는 런타임에 요청에 포함된 값을 기반으로 확인됩니다. 예를 들어 aws:CurrentTime 은 요청의 시간으로 확인되고 aws:username은 호출자의 표시 이름으로 확인됩니다.

이러한 정책 변수를 사용하여 암호화 컨텍스트에서 매우 구체적인 정보(예: 호출자의 사용자 이름)를 요구하는 조건을 포함하는 정책 문을 생성할 수 있습니다. 변수를 포함하기 때문에 특정 역할을 수임할 수 있는 모든 사용자에 동일한 정책 문을 사용할 수 있습니다. 사용자마다 따로 정책 문을 작성할 필요가 없습니다.

모든 사용자가 동일한 CMK를 사용하여 데이터를 암호화 및 암호화 해제하도록 역할을 수임할 수 있는 상황을 고려해 보십시오. 그러나 모든 사용자가 직접 암호화한 데이터만 암호화를 해제하도록 허용하려고 합니다. 먼저 AWS KMS에 대한 모든 요청이 키가 user이고 값이 다음과 같은 호출자의 AWS 사용자 이름을 포함하도록 요구하는 것으로 시작합니다.

"encryptionContext": { "user": "bob" }

그런 다음 이 요구 사항을 시행하려면 다음 예제와 같은 정책 문을 사용할 수 있습니다. 이 정책 문은 TestTeam 역할에게 CMK를 사용하여 데이터를 암호화하고 해독할 수 있는 권한을 부여합니다. 그러나 이 권한은 요청의 암호화 컨텍스트가 "user": "<username>" 쌍을 포함하는 경우에만 유효합니다. 사용자 이름을 표현하기 위해 조건은 aws:username 정책 변수를 사용합니다.

요청이 평가될 때 호출자의 사용자 이름이 조건의 변수를 대체합니다. 따라서 조건은 "bob"에 대해서는 암호화 컨텍스트 "user": "bob"을 요구하고 "alice"에 대해서는 "user": "alice"를 요구합니다.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/TestTeam" }, "Action": [ "kms:Decrypt", "kms:Encrypt" ] "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContext:user": "${aws:username}" } } }

IAM 정책 변수는 kms:EncryptionContext: 조건 키 페어의 값에만 사용할 수 있습니다. 키에는 변수를 사용할 수 없습니다.

또한 변수에서 공급자별 컨텍스트 키를 사용할 수도 있습니다. 이러한 컨텍스트 키는 웹 자격 증명 연동을 사용하여 AWS에 로그인한 사용자를 고유하게 식별합니다.

다른 모든 변수와 마찬가지로 이러한 변수도 실제 암호화 컨텍스트가 아니라 kms:EncryptionContext: 정책 조건에서만 사용할 수 있습니다. 또한 키가 아니라 조건의 값에만 사용할 수 있습니다.

예를 들어 다음 키 정책 문은 이전 것과 비슷합니다. 그러나 조건에는 키가 sub이고 값이 Amazon Cognito 사용자 풀에 로그인한 사용자를 고유하게 식별하는 암호화 컨텍스트가 필요합니다. 에서 사용자 및 역할을 식별하는 방법에 대한 자세한 내용은 Amazon Cognito의 IAM 역할을 참조하십시오.Amazon Cognito 개발자 안내서

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/TestTeam" }, "Action": [ "kms:Decrypt", "kms:Encrypt" ] "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContext:sub": "${cognito-identity.amazonaws.com:sub}" } } }

다음 사항도 참조하십시오.

kms:EncryptionContextKeys

AWS KMS 조건 키 조건 유형 API 작업 정책 유형

kms:EncryptionContextKeys

문자열(목록)

CreateGrant

Decrypt

Encrypt

GenerateDataKey

GenerateDataKeyPair

GenerateDataKeyPairWithoutPlaintext

GenerateDataKeyWithoutPlaintext

ReEncrypt

키 정책 및 IAM 정책

조건 키를 사용하여 암호화 작업 요청의 암호화 컨텍스트를 기반으로 kms:EncryptionContextKeys대칭 CMK에 대한 액세스를 제어할 수 있습니다. 이 조건 키 접두어를 사용하여 암호화 컨텍스트 쌍의 키와 값을 평가합니다. 키와 값을 모두 평가하려면 kms:EncryptionContext: 조건 키 접두사를 사용합니다.

비대칭 CMK를 사용하여 암호화 작업에서 암호화 컨텍스트를 지정할 수 없습니다. AWS KMS에서 사용하는 표준 비대칭 암호화 알고리즘은 암호화 컨텍스트를 지원하지 않습니다.

이 조건 키를 사용하여 API 요청의 암호화 컨텍스트AWS KMS를 기반으로 액세스를 제어할 수 있습니다. 암호화 컨텍스트는 대칭 –(AWS KMSEncryptCMKs, Decrypt, https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html, GenerateDataKey, GenerateDataKeyWithoutPlaintext, ) 및 등의 ReEncrypt 암호화 작업에 포함할 수 있는 키값 페어 집합입니다.CreateGrant 한 요청에 여러 암호화 컨텍스트 쌍이 있을 수 있으므로 조건 연산자에는 ForAnyValue 또는 ForAllValues.이(가) 포함되어야 합니다.

다음 예제 정책 설명은 값과 상관없이 요청의 암호화 컨텍스트 쌍 중 하나 이상에 kms:EncryptionContextKeys 키가 포함된 경우에만 CMK 조건 키를 사용하여 지정된 작업에 대해 AppName 사용을 허용합니다.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": [ "kms:Encrypt", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": "AppName" } } }

StringEquals 조건 작업은 대소문자를 구분하므로 이전 정책 문에는 암호화 컨텍스트 키의 철자와 대소문자가 필요합니다. 그러나 과 같은 키 대소문자를 무시하는 조건 연산자를 사용할 수 있습니다.StringEqualsIgnoreCase.

각 명령에서 여러 마스터 키를 지정할 수 있습니다. 예를 들어 다음 정책 명령문은 값과 상관없이 요청의 암호화 컨텍스트에 ForAllValues 키와 StringEquals 키가 모두 포함될 때만(다른 키는 포함되지 않음) 지정된 작업을 AppNameFilePath 조건 연산자로 허용합니다. 암호화 컨텍스트의 키 순서는 중요하지 않습니다.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": [ "kms:Encrypt", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "kms:EncryptionContextKeys": [ "AppName", "FilePath" ] } } }

조건 키를 사용하여 kms:EncryptionContextKeys를 사용하는 암호화 작업에서 암호화 컨텍스트를 요구할 수도 있습니다.CMK

다음 예제 키 정책 문은 kms:EncryptionContextKeys 조건 키와 함께 Null condition operator를 사용하여 CMK 조건 키가 API 요청에 존재할 때만(null 아님) kms:EncryptionContextKeys에 대한 액세스를 허용합니다. 암호화 컨텍스트의 키나 값을 확인하는 것이 아니라 암호화 컨텍스트 유무만 점검합니다.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": [ "kms:Encrypt", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "Null": { "kms:EncryptionContextKeys": false } } }

다음 사항도 참조하십시오.

kms:ExpirationModel

AWS KMS 조건 키 조건 유형 API 작업 정책 유형

kms:ExpirationModel

문자열

ImportKeyMaterial

키 정책 및 IAM 정책

조건 키는 요청의 kms:ExpirationModelImportKeyMaterial 파라미터 값에 따라 작업에 대한 액세스를 제어합니다.ExpirationModel

ExpirationModel은 가져온 키 자료가 만료되는지 여부를 결정하는 선택적 파라미터입니다. 유효한 값은 KEY_MATERIAL_EXPIRESKEY_MATERIAL_DOES_NOT_EXPIRE이며, 기본값은 KEY_MATERIAL_EXPIRES입니다.

만료 날짜 및 시간은 ValidTo 파라미터의 값에 의해 결정됩니다. 파라미터 값이 ValidTo이 아닌 경우 ExpirationModel 파라미터가 필요합니다.KEY_MATERIAL_DOES_NOT_EXPIRE 또한 kms:ValidTo 조건 키를 사용하여 특정 만료 날짜를 액세스 조건으로 요구할 수도 있습니다.

다음 예제 정책 설명은 kms:ExpirationModel 조건 키를 사용하여 요청에 CMK 파라미터가 포함되어 있고 해당 값이 ExpirationModel인 경우에만 사용자가 키 구성 요소를 KEY_MATERIAL_DOES_NOT_EXPIRE로 가져오도록 허용합니다.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:ImportKeyMaterial", "Resource": "*", "Condition": { "StringEquals": { "kms:ExpirationModel": "KEY_MATERIAL_DOES_NOT_EXPIRE" } } }

또한 kms:ExpirationModel 조건 키를 사용하여 조건에 만료 날짜를 지정하지 않고 키 구성 요소가 만료될 때만 사용자가 키 구성 요소를 가져오도록 허용할 수 있습니다. 다음의 정책 설명 예제는 kms:ExpirationModel 조건 키와 함께 Null condition operator를 사용하여 요청에 ExpirationModel 파라미터가 없을 때만 사용자가 키 자료를 가져오도록 허용합니다.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:ImportKeyMaterial", "Resource": "*", "Condition": { "Null": { "kms:ExpirationModel": true } } }

다음 사항도 참조하십시오.

kms:GrantConstraintType

AWS KMS 조건 키 조건 유형 API 작업 정책 유형

kms:GrantConstraintType

문자열

CreateGrant

키 정책 및 IAM 정책

이 조건 키를 사용하여 요청의 권한 부여 제약 조건CreateGrant 유형에 따라 작업에 대한 액세스를 제어할 수 있습니다.

권한 부여를 생성할 때 선택적으로 권한 부여 제약을 지정하여 특정 암호화 컨텍스트가 있는 경우에만 권한 부여가 허용하는 작업을 허용할 수 있습니다. 권한 부여 제약은 EncryptionContextEquals 또는 EncryptionContextSubset의 두 가지 유형 중 하나일 수 있습니다. 이 조건 키를 사용하여 요청에 어떤 유형이 포함되었는지 확인할 수 있습니다.

다음 예제 정책 설명은 kms:GrantConstraintType 조건 키를 사용해 요청에 EncryptionContextEquals 권한 부여 제약이 포함된 경우에만 사용자가 권한 부여를 생성하도록 허용합니다. 이 예제는 키 정책의 정책 설명을 보여줍니다.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:GrantConstraintType": "EncryptionContextEquals" } } }

다음 사항도 참조하십시오.

kms:GrantIsForAWSResource

AWS KMS 조건 키 조건 유형 API 작업 정책 유형

kms:GrantIsForAWSResource

부울(Boolean)

CreateGrant

ListGrants

RevokeGrant

키 정책 및 IAM 정책

와 통합된 CreateGrant 서비스가 사용자를 대신하여 작업을 호출하는 경우에만 ListGrants, RevokeGrant 또는 작업에 대한 권한을 허용하거나 거부합니다.AWSAWS KMS 이 정책 조건은 사용자가 이러한 권한 부여 작업을 직접 호출하도록 허용하지 않습니다.

다음 예제 키 정책 문은 kms:GrantIsForAWSResource 조건 키를 사용합니다. 이를 통해 AWS와 통합된 AWS KMS 서비스(예: Amazon EBS)가 지정된 사용자를 대신하여 이 CMK에 대한 권한 부여를 생성할 수 있습니다.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": true } } }

다음 사항도 참조하십시오.

kms:GrantOperations

AWS KMS 조건 키 조건 유형 API 작업 정책 유형

kms:GrantOperations

문자열

CreateGrant

키 정책 및 IAM 정책

이 조건 키를 사용하여 요청의 권한 부여 작업에 따라 CreateGrant 작업에 대한 액세스를 제어할 수 있습니다. 예를 들어, 사용자가 암호화할 권한은 위임하지만 해독할 권한은 위임하지 않는 권한 부여를 생성하도록 허용할 수 있습니다.

다음 예제 정책 설명은 kms:GrantOperations 조건 키를 사용하여 사용자가 이 CMK가 대상 CMK일 때 암호화하고 다시 암호화할 수 있는 권한을 위임하는 권한 부여를 생성하도록 허용합니다. 이 예제는 키 정책의 정책 설명을 보여줍니다.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "kms:GrantOperations": [ "Encrypt", "ReEncryptTo" ] } } }

다음 사항도 참조하십시오.

kms:GranteePrincipal

AWS KMS 조건 키 조건 유형 API 작업 정책 유형

kms:GranteePrincipal

문자열

CreateGrant

IAM 및 키 정책

이 조건 키를 사용하여 요청의 CreateGrant 파라미터 값에 따라 GranteePrincipal 작업에 대한 액세스를 제어할 수 있습니다. 예를 들어 CMK 요청의 피부여자 보안 주체가 조건문에 지정된 보안 주체와 일치할 때만 사용자가 CreateGrant를 사용할 권한을 생성하도록 허용할 수 있습니다.

다음 예제 정책 설명은 kms:GranteePrincipal 조건 키를 사용하여 권한 부여의 피부여자 보안 주체가 CMK일 때만 사용자가 LimitedAdminRole에 대한 권한 부여를 생성하도록 허용합니다.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:GranteePrincipal": "arn:aws:iam::111122223333:role/LimitedAdminRole" } } }

다음 사항도 참조하십시오.

kms:KeyOrigin

AWS KMS 조건 키 조건 유형 API 작업 정책 유형

kms:KeyOrigin

문자열

CreateKey

CMK 리소스 작업

IAM 정책

키 정책 및 IAM 정책

조건 키는 작업에 의해 생성되거나 작업에 사용되는 kms:KeyOriginOrigin 속성 값에 따라 작업에 대한 액세스를 제어합니다.CMK 이는 리소스 조건 또는 요청 조건으로 작동합니다.

이 조건 키를 사용하여 요청의 Origin(오리진)CreateKey 파라미터 값에 따라 https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html#KMS-CreateKey-request-Origin 작업에 대한 액세스를 제어할 수 있습니다. 에 유효한 값은 Origin, AWS_KMSAWS_CLOUDHSM입니다.EXTERNAL

예를 들어 키 구성 요소가 KMS(CMK)에서 생성되거나, 키 구성 요소가 AWS_KMS사용자 지정 키 스토어AWS CloudHSM()와 연결된 클러스터에서 생성되거나, 외부 소스(AWS_CLOUDHSM)에서 키 구성 요소를 가져왔을 때만 사용자가 를 생성하도록 허용할 수 있습니다.EXTERNAL

다음 예제 정책 설명은 kms:KeyOrigin 조건 키를 사용하여 CMK가 키 구성 요소를 생성할 때만 사용자가 AWS KMS를 생성하도록 허용합니다.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:CreateKey", "Resource": "*", "Condition": { "StringEquals": { "kms:KeyOrigin": "AWS_KMS" } } }

또한 kms:KeyOrigin 조건 키를 사용하여 작업에 사용되는 CMK의 Origin 속성을 기반으로 CMK를 사용하거나 관리하는 작업에 대한 액세스를 제어할 수 있습니다.작업은 특정 CMK에 대해 승인된 작업인 CMK 리소스 작업이어야 합니다. CMK 리소스 작업을 식별하려면 작업 및 리소스 테이블에서, 해당 작업에 대한 Resources 열에서 CMK 값을 찾습니다.

예를 들어 다음 IAM 정책은 보안 주체가 지정된 CMK 리소스 작업을 수행하도록 허용하지만, 사용자 지정 키 스토어에서 생성된 계정의 CMKs에 대해서만 허용합니다.

{ "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey", "kms:GenerateDataKeyWithoutPlaintext", "kms:GenerateDataKeyPair", "kms:GenerateDataKeyPairWithoutPlaintext", "kms:ReEncrypt*" ], "Resource": { "arn:aws:kms:us-west-2:111122223333:key/*" }, "Condition": { "StringEquals": { "kms:KeyOrigin": "AWS_CLOUDHSM" } } }

다음 사항도 참조하십시오.

kms:MessageType

AWS KMS 조건 키 조건 유형 API 작업 정책 유형

kms:MessageType

문자열

Sign

Verify

키 정책 및 IAM 정책

조건 키는 요청의 kms:MessageType 파라미터 값에 따라 SignVerify 작업에 대한 액세스를 제어합니다.MessageType 에 유효한 값은 MessageTypeRAW입니다.DIGEST

예를 들어 다음 키 정책 설명은 kms:MessageType 조건 키를 사용하여 사용자가 비대칭 CMK를 사용하여 메시지에 서명하도록 허용하지만 메시지 다이제스트는 허용하지 않습니다.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:Sign", "Resource": "*", "Condition": { "StringEquals": { "kms:MessageType": "RAW" } } }

다음 사항도 참조하십시오.

kms:ReEncryptOnSameKey

AWS KMS 조건 키 조건 유형 API 작업 정책 유형

kms:ReEncryptOnSameKey

부울(Boolean)

ReEncrypt

키 정책 및 IAM 정책

이 조건 키를 사용하여 요청이 원래 암호화에 사용된 것과 동일한 대상 를 지정하는지 여부에 따라 ReEncryptCMK 작업에 대한 액세스를 제어할 수 있습니다. 예를 들어 다음 정책 설명은 kms:ReEncryptOnSameKey 조건 키를 사용하여 대상 CMK가 원래 암호화에 사용된 것과 동일한 경우에만 사용자가 재암호화하도록 허용합니다. 이 예제는 키 정책의 정책 설명을 보여줍니다.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:ReEncrypt*", "Resource": "*", "Condition": { "Bool": { "kms:ReEncryptOnSameKey": true } } }

kms:RequestAlias

AWS KMS 조건 키 조건 유형 API 작업 정책 유형

kms:RequestAlias

문자열(목록)

암호화 작업

DescribeKey

GetPublicKey

키 정책 및 IAM 정책

이 조건 키를 사용하여 요청이 특정 별칭을 사용하여 CMK를 식별하는 경우에만 작업을 허용할 수 있습니다. 조건 키는 요청에서 CMK를 식별하는 kms:RequestAlias별칭CMK을 기반으로 암호화 작업, GetPublicKey 또는 DescribeKey에 사용되는 에 대한 액세스를 제어합니다. (이 정책 조건은 작업이 또는 별칭을 사용하지 않기 때문에 GenerateRandomCMK 작업에는 영향을 주지 않습니다.)

이 조건은 에서 속성 기반 액세스 제어AWS KMS(ABAC)를 지원하므로 CMKs의 태그와 별칭을 기반으로 CMK에 대한 액세스를 제어할 수 있습니다. 태그 및 별칭을 사용하여 정책 또는 권한 부여를 변경하지 않고 CMK에 대한 액세스를 허용하거나 거부할 수 있습니다. 자세한 내용은 을(를) 참조하십시오.에 ABAC 사용AWS KMS.

이 정책 조건에서 별칭을 지정하려면 별칭 이름(예: alias/project-alpha) 또는 별칭 이름 패턴(예: alias/*test*)을 사용합니다. 이 조건 키의 값에 별칭 ARN을 지정할 수 없습니다.

이 조건을 충족하려면 요청의 KeyId 파라미터 값이 일치하는 별칭 이름 또는 별칭 ARN이어야 합니다. 요청이 다른 키 식별자를 사용하는 경우 동일한 CMK를 식별하더라도 조건을 충족하지 않습니다.

예를 들어 다음 키 정책 문은 보안 주체가 에서 GenerateDataKeyCMK 작업을 호출하도록 허용합니다. 그러나 요청의 KeyId 파라미터 값이 alias/finance-key 또는 해당 별칭 이름을 가진 별칭 ARN(예: arn:aws:kms:us-west-2:111122223333:alias/finance-key)인 경우에만 허용됩니다.

{ "Sid": "Key policy using a request alias condition", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/developer" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:RequestAlias": "alias/finance-key" } } }

이 조건 키를 사용하여 별칭 작업(예: CreateAlias 또는 DeleteAlias)에 대한 액세스를 제어할 수 없습니다. 별칭 작업에 대한 액세스 제어에 대한 자세한 내용은 별칭에 대한 액세스 제어 단원을 참조하십시오.

kms:ResourceAliases

AWS KMS 조건 키 조건 유형 API 작업 정책 유형

kms:ResourceAliases

문자열(목록)

CMK 리소스 작업

IAM 정책만 해당

이 조건 키를 사용하여 CMK와 연결된 별칭을 기반으로 CMK에 대한 액세스를 제어합니다. 작업은 특정 CMK에 대해 승인된 작업인 CMK 리소스 작업이어야 합니다. CMK 리소스 작업을 식별하려면 작업 및 리소스 테이블에서, 해당 작업에 대한 Resources 열에서 CMK 값을 찾습니다.

이 조건은 AWS KMS에서 ABAC(속성 기반 액세스 제어)를 지원합니다. ABAC를 사용하면 CMKs에 할당된 태그와 CMK에 연결된 별칭을 기반으로 CMK에 대한 액세스를 제어할 수 있습니다. 태그 및 별칭을 사용하여 정책 또는 권한 부여를 변경하지 않고 CMK에 대한 액세스를 허용하거나 거부할 수 있습니다. 자세한 내용은 을(를) 참조하십시오.에 ABAC 사용AWS KMS.

참고

kms:ResourceAliasesResourceAliases 조건은 가 CMK당 별칭 할당량을 준수할 때만 유효합니다.CMK 가 이 할당량을 초과할 경우 CMK 조건에 따라 CMK를 사용하도록 승인된 보안 주체는 kms:ResourceAliases에 대한 액세스가 거부됩니다.CMK

이 정책 조건에서 별칭을 지정하려면 별칭 이름(예: alias/project-alpha) 또는 별칭 이름 패턴(예: alias/*test*)을 사용합니다. 이 조건 키의 값에 별칭 ARN을 지정할 수 없습니다. 조건을 충족하려면 작업에 사용된 CMK에 지정된 별칭이 있어야 합니다. 작업에 대한 요청에서 CMK가 식별되는지 여부나 식별 방식은 중요하지 않습니다.

예를 들어 다음 IAM 정책 설명을 사용하면 보안 주체가 별칭과 연결된 지정된 GenerateDataKey 계정의 에 대해 CMKAWS 작업을 호출할 수 있습니다.finance-key 별칭은 AWS 계정 및 리전에서 고유해야 하지만, 이 조건은 각 계정의 서로 다른 CMKs 리전에 있는 여러 AWS에 대한 액세스를 허용할 수 있습니다. 영향을 받는 CMKs의 키 정책은 보안 주체의 계정이 이 작업에 해당 정책을 사용하도록 허용해야 합니다.

와 연결될 수 있는 많은 별칭 중 하나가 CMK일 때 조건이 충족됨을 나타내기 위해 조건에는 alias/finance-key 설정 연산자가 사용됩니다.ForAnyValue

조건은 요청이 아닌 리소스를 기반으로 하기 때문에 요청이 kms:ResourceAliases키 IDGenerateDataKey 또는 finance-key키 ARN을 사용하여 CMK를 식별하더라도 별칭과 연결된 모든 CMK에 대해 호출이 성공합니다.

{ "Version": "2012-10-17", "Statement": { "Sid": "AliasBasedIAMPolicy", "Effect": "Allow", "Action": "kms:GenerateDataKey", "Resource": [ "arn:aws:kms:*:111122223333:key/*", "arn:aws:kms:*:444455556666:key/*", ], "Condition": { "ForAnyValue:StringEquals": { "kms:ResourceAliases": "alias/finance-key" } } } }

kms:RetiringPrincipal

AWS KMS 조건 키 조건 유형 API 작업 정책 유형

kms:RetiringPrincipal

문자열(목록)

CreateGrant

키 정책 및 IAM 정책

이 조건 키를 사용하여 요청의 CreateGrant 파라미터 값에 따라 RetiringPrincipal 작업에 대한 액세스를 제어할 수 있습니다. 예를 들어 CMK 요청의 RetiringPrincipal가 조건문의 CreateGrant와 일치할 때만 사용자가 RetiringPrincipal를 사용할 권한을 생성하도록 허용할 수 있습니다.

다음 예제 정책 설명을 통해 사용자는 CMK에 대한 권한 부여를 생성할 수 있습니다. kms:RetiringPrincipal 조건 키는 권한 부여의 중단 주체가 CreateGrant 또는 LimitedAdminRole 사용자 인 OpsAdmin 요청에 대한 권한을 제한합니다.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:RetiringPrincipal": [ "arn:aws:iam::111122223333:role/LimitedAdminRole", "arn:aws:iam::111122223333:user/OpsAdmin" ] } } }

다음 사항도 참조하십시오.

kms:SigningAlgorithm

AWS KMS 조건 키 조건 유형 API 작업 정책 유형

kms:SigningAlgorithm

문자열

Sign

Verify

키 정책 및 IAM 정책

조건 키를 사용하여 요청의 kms:SigningAlgorithmhttps://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html 파라미터 값에 따라 SignVerifySigningAlgorithm 작업에 대한 액세스를 제어할 수 있습니다. 이 조건 키는 AWS KMS 외부에서 비대칭 CMK 페어의 퍼블릭 키를 사용하여 서명을 확인하는 것과 같이 AWS KMS 외부에서 수행되는 작업에는 영향을 주지 않습니다.

다음 예제 키 정책은 testers 역할을 수임할 수 있는 사용자가 요청에 사용된 서명 알고리즘이 CMK 같은 RSASSA_PSS 알고리즘인 경우에만 RSASSA_PSS_SHA512를 사용하여 메시지에 서명하도록 허용합니다.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/testers" }, "Action": "kms:Sign", "Resource": "*", "Condition": { "StringLike": { "kms:SigningAlgorithm": "RSASSA_PSS*" } } }

다음 사항도 참조하십시오.

kms:ValidTo

AWS KMS 조건 키 조건 유형 API 작업 정책 유형

kms:ValidTo

타임스탬프

ImportKeyMaterial

키 정책 및 IAM 정책

조건 키는 가져온 키 구성 요소가 만료되는 시점을 결정하는 요청의 kms:ValidToImportKeyMaterial 파라미터 값에 따라 작업에 대한 액세스를 제어합니다.ValidTo 이 값은 Unix 시간.으로 표현됩니다.

기본적으로 ValidTo 파라미터는 ImportKeyMaterial 요청에서 필요합니다. 그러나 ExpirationModel 파라미터의 값이 KEY_MATERIAL_DOES_NOT_EXPIRE이면 ValidTo 파라미터가 유효하지 않은 것입니다. 또한 kms:ExpirationModel 조건 키를 사용하여 파라미터 또는 특정 파라미터 값을 요구할 수 있습니다.ExpirationModel

다음 예제 정책 설명을 통해 사용자는 키 구성 요소를 CMK로 가져올 수 있습니다. kms:ValidTo 조건 키는 ImportKeyMaterial 값이 ValidTo (2018년 12월 31일 11:59:59 PM)보다 작거나 같은 1546257599.0 요청에 대한 권한을 제한합니다.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:ImportKeyMaterial", "Resource": "*", "Condition": { "NumericLessThanEquals": { "kms:ValidTo": "1546257599.0" } } }

다음 사항도 참조하십시오.

kms:ViaService

AWS KMS 조건 키 조건 유형 API 작업 정책 유형

kms:ViaService

문자열

CMK 리소스 작업

키 정책 및 IAM 정책

조건 키는 kms:ViaService AWS KMS(고객 마스터 키)의 사용을 지정된 서비스의 요청으로 제한합니다.CMKAWS 각 kms:ViaService 조건 키에 하나 이상의 서비스를 지정할 수 있습니다. 작업은 특정 CMK에 대해 승인된 작업인 CMK 리소스 작업이어야 합니다. CMK 리소스 작업을 식별하려면 작업 및 리소스 테이블에서, 해당 작업에 대한 Resources 열에서 CMK 값을 찾습니다.

예를 들어 키 정책의 다음 문은 kms:ViaService 조건 키를 사용하여 요청이 리전의 CMK 또는 에서 Amazon EC2 대신 이루어지는 경우에만 Amazon RDS고객 관리형 미국 서부(오레곤)이 지정된 작업에 사용되도록 허용합니다.ExampleUser

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:ListGrants", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": [ "ec2.us-west-2.amazonaws.com", "rds.us-west-2.amazonaws.com" ] } } }

또한 요청이 특정 서비스에서 이루어지는 경우 kms:ViaService 조건 키를 사용하여 CMK 사용 권한을 거부할 수 있습니다. 예를 들어 키 정책의 다음 정책 설명은 kms:ViaService 조건 키를 사용하여 요청이 CMK에서 Encrypt 대신 이루어지는 경우 고객 관리형 AWS Lambda가 ExampleUser 작업에 사용되지 않도록 합니다.

{ "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": [ "kms:Encrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": [ "lambda.us-west-2.amazonaws.com" ] } } }
중요

kms:ViaService 조건 키를 사용할 경우 서비스가 AWS 계정의 보안 주체 대신 요청을 생성합니다. 이러한 보안 주체는 다음 권한을 가져야 합니다.

  • 사용 권한.CMK 보안 주체는 서비스가 보안 주체 대신 고객 관리형 CMK를 사용할 수 있도록 이러한 권한을 통합 서비스에 부여해야 합니다. 자세한 내용은 단원을 참조하십시오.AWS 서비스의 AWS KMS 활용 방식.

  • 통합 서비스 사용 권한. 사용자에게 AWS와 통합된 AWS KMS 서비스에 액세스할 수 있는 권한을 부여하는 방법에 대한 세부 정보는 통합 서비스의 설명서를 참조하십시오.

모든 AWS 관리형 CMKs는 키 정책 문서에 kms:ViaService 조건 키를 사용합니다. 이 조건은 CMK를 생성한 서비스에서 오는 요청에만 CMK를 사용하도록 허용합니다. 관리형 AWS에 대한 키 정책을 보려면 CMKGetKeyPolicy 작업을 사용합니다.

조건 키는 kms:ViaService 및 키 정책 설명에서 유효합니다.IAM 지정하는 서비스는 와 통합AWS KMS되어야 하며 조건 키를 지원해야 합니다.kms:ViaService

kms:ViaService 조건 키를 지원하는 서비스

다음 표에는 AWS와 통합되고 고객 관리형 AWS KMS에서 kms:ViaService 조건 키의 사용을 지원하는 CMKs 서비스가 나열되어 있습니다. 이 표에 수록된 서비스는 일부 리전에 제공되지 않을 수 있습니다. 모든 .amazonaws.com 파티션에서 AWS KMS ViaService 이름의 AWS 접미사를 사용합니다.

참고

이 테이블의 모든 데이터를 보려면 가로 또는 세로로 스크롤해야 할 수 있습니다.

서비스 이름 AWS KMS ViaService 이름
Amazon Appflow 앱플로우.AWS_region.amazonaws.com
Amazon Athena athena.AWS_region.amazonaws.com
AWS 감사 관리자 Auditmanager.AWS_region.amazonaws.com
Amazon Aurora rds.AWS_region.amazonaws.com
AWS Backup 백업.AWS_region.amazonaws.com
AWS CodeArtifact codeartifact.AWS_region.amazonaws.com
Amazon Connect 연결합니다.AWS_region.amazonaws.com
AWS Database Migration Service (AWS DMS) 전송합니다.AWS_region.amazonaws.com
AWS Directory Service 디렉터리 서비스.AWS_region.amazonaws.com
Amazon DynamoDB dynamodb.AWS_region.amazonaws.com
Amazon EC2 Systems Manager (SSM) ssm.AWS_region.amazonaws.com
Amazon Elastic Block Store (Amazon EBS) ec2.AWS_region.amazonaws.com(EBS만 해당)
Amazon Elastic Container Registry (Amazon ECR) 이크AWS_region.amazonaws.com
Amazon Elastic File System (Amazon EFS) ElasticfilesystemAWS_region.amazonaws.com
Amazon Elastic Kubernetes Service (Amazon EKS) 있습니다.AWS_region.amazonaws.com
Amazon ElastiCache

조건 키 값에 ViaService 이름을 둘 다 포함합니다.

  • Elasticache.AWS_region.amazonaws.com

  • Dax:AWS_region.amazonaws.com

Amazon Elasticsearch Service (Amazon ES) 있습니다.AWS_region.amazonaws.com
Amazon Forecast 예상.AWS_region.amazonaws.com
Amazon FSx fsx.AWS_region.amazonaws.com
AWS Glue 글루.AWS_region.amazonaws.com
AWS IoT SiteWise iotsitewise.AWS_region.amazonaws.com
Amazon Kendra kendra.AWS_region.amazonaws.com
Amazon Kinesis kinesis.AWS_region.amazonaws.com
Amazon Kinesis Data Firehose firehose.AWS_region.amazonaws.com
Amazon Kinesis 비디오 스트림 kinesisvideo.AWS_region.amazonaws.com
AWS Lambda lambdaAWS_region.amazonaws.com
Amazon Lex lexAWS_region.amazonaws.com
AWS License Manager 라이선스 관리자.AWS_region.amazonaws.com
Amazon Managed Streaming for Apache Kafka (Amazon MSK) kafkaAWS_region.amazonaws.com
Amazon Managed Workflows for Apache Airflow(MWAA) 공기 순환AWS_region.amazonaws.com
Amazon MoNitron 모노닌.AWS_region.amazonaws.com
Amazon MQ mqAWS_region.amazonaws.com
Amazon Neptune rds.AWS_region.amazonaws.com
Amazon RDS 성능 개선 도우미 rds.AWS_region.amazonaws.com
Amazon Redshift redshift.AWS_region.amazonaws.com
Amazon Relational Database Service (Amazon RDS) rds.AWS_region.amazonaws.com
AWS Secrets Manager secretsmanager.AWS_region.amazonaws.com
Amazon Simple Email Service (Amazon SES) AWS_region.amazonaws.com
Amazon Simple Notification Service (Amazon SNS) sns.AWS_region.amazonaws.com
Amazon Simple Queue Service (Amazon SQS) sqs.AWS_region.amazonaws.com
Amazon Simple Storage Service (Amazon S3) s3AWS_region.amazonaws.com
AWS Snowball importexport.AWS_region.amazonaws.com
AWS Storage Gateway storagegatewayAWS_region.amazonaws.com
Amazon 타임스트림 타임스트림.AWS_region.amazonaws.com
Amazon WorkMail Workmail입니다.AWS_region.amazonaws.com
Amazon WorkSpaces Workspaces.AWS_region.amazonaws.com
AWS X-Ray XRAY.AWS_region.amazonaws.com

kms:WrappingAlgorithm

AWS KMS 조건 키 조건 유형 API 작업 정책 유형

kms:WrappingAlgorithm

문자열

GetParametersForImport

키 정책 및 IAM 정책

이 조건 키는 요청의 GetParametersForImport 파라미터 값에 따라 WrappingAlgorithm 작업에 대한 액세스를 제어합니다. 이 조건을 사용하여 보안 주체가 가져오기 프로세스 중에 특정 알고리즘을 사용하여 키 자료를 암호화하도록 요구할 수 있습니다. 다른 래핑 알고리즘을 지정하면 필수 퍼블릭 키 및 가져오기 토큰에 대한 요청이 실패합니다.

다음 정책 설명 예제에서는 kms:WrappingAlgorithm 조건 키를 사용하여 GetParametersForImport 작업을 호출할 수 있는 사용자 권한을 부여하지만, RSAES_OAEP_SHA_1 래핑 알고리즘을 사용하지 못하도록 합니다. 요청의 WrappingAlgorithmGetParametersForImport이면 작업이 실패합니다.RSAES_OAEP_SHA_1

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:GetParametersForImport", "Resource": "*", "Condition": { "StringNotEquals": { "kms:WrappingAlgorithm": "RSAES_OAEP_SHA_1" } } }

다음 사항도 참조하십시오.

kms:WrappingKeySpec

AWS KMS 조건 키 조건 유형 API 작업 정책 유형

kms:WrappingKeySpec

문자열

GetParametersForImport

키 정책 및 IAM 정책

이 조건 키는 요청의 GetParametersForImport 파라미터 값에 따라 WrappingKeySpec 작업에 대한 액세스를 제어합니다. 가져 오기 프로세스 중에 공개 키의 특정 유형을 사용하는 사용자를 요구하는 이 조건을 사용할 수 있습니다. 요청에서 다른 키 유형을 지정하면 실패합니다.

WrappingKeySpec 파라미터 값에 사용할 수 있는 값은 RSA_2048뿐이므로 실제로 사용자에게 이 값을 실제로 사용하지 못하도록 할 경우 사용자가 GetParametersForImport 작업을 사용할 수 없게 됩니다.

다음 예제 정책 설명은 kms:WrappingAlgorithm 조건 키를 사용하여 요청의 WrappingKeySpecRSA_2048.이 되도록 요구합니다.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:GetParametersForImport", "Resource": "*", "Condition": { "StringEquals": { "kms:WrappingKeySpec": "RSA_2048" } } }

다음 사항도 참조하십시오.

AWS KMS 에 대한 조건 키 AWS Nitro 엔클레이브

AWS Nitro 엔클레이브는 Amazon EC2enlaves라고 하는 격리된 컴퓨팅 환경을 생성하여 매우 민감한 데이터를 보호하고 처리할 수 있는 기능입니다. AWS KMS는 AWS Nitro 엔클레이브를 지원하는 조건 키를 제공합니다. 이러한 조건 키는 AWS KMS 작업에 대한 요청이 인코딩에서 시작된 경우에만 작동합니다.

, kms-decrypt 또는 kms-generate-data-key kms-generate-random Nitro Enclaves SDK AWS를 인코딩에서 호출할 때, 이러한 는 해당 APIs 작업을 해당 APIs 작업과 함께 인코딩의 서명된 AWS KMS지수 문서를 포함하는 파라미터를 호출합니다. 서명된 증명 문서는 AWS KMS에 대한 인코딩의 자격 증명을 입증합니다.

다음 조건 키를 사용하면 서명된 증명 문서의 내용에 따라 이러한 작업에 대한 권한을 제한할 수 있습니다. 작업을 허용하기 전에 AWS KMS는 절의 증명 문서를 이러한 AWS KMS 조건 키의 값과 비교합니다.

kms:RecipientAttestation:ImageSha384

AWS KMS 조건 키 조건 유형 API 연산 정책 유형

kms:RecipientAttestation:ImageSha384

문자열

Decrypt

GenerateDataKey

GenerateRandom

키 정책 및 IAM 정책

조건 키는 요청의 서명된 증명 문서의 이미지 해시가 조건 키의 값과 일치할 때만 Enclave에서 kms:RecipientAttestation:ImageSha384, kms-decryptkms-generate-data-key 요청을 허용합니다.kms-generate-random 값은 증명 문서의 CR[0]에 해당합니다.ImageSha384 이 조건 키는 AWS Nitro Enclaves SDK APIs를 인코딩에서 호출할 때만 유효합니다.

예를 들어 다음 키 정책 설명을 사용하면 data-processing 역할이 CMK(kms-decryptDecrypt), (kms-generate-data-keyGenerateDataKey), (kms-generate-random) 작업에 대해 GenerateRandom를 사용할 수 있습니다. 조건 키는 요청의 증명 문서의 이미지 해시 값(PCR[0])이 조건에 있는 이미지 해시 값과 일치하는 경우에만 작업을 허용합니다.kms:RecipientAttestation:ImageSha384

증명 문서가 요청에 포함되지 않으면 이 조건이 충족되지 않기 때문에 권한이 거부됩니다.

{ "Sid" : "Enable enclave data processing", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:role/data-processing" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey", "kms:GenerateRandom" ], "Resource" : "*", "Condition": { "StringEqualsIgnoreCase": { "kms:RecipientAttestation:ImageSha384": "9fedcba8abcdef7abcdef6abcdef5abcdef4abcdef3abcdef2abcdef1abcdef1abcdef0abcdef1abcdef2abcdef3abcdef4abcdef5abcdef6abcdef7abcdef99" } } }

kms:RecipientAttestation:PCR

AWS KMS 조건 키 조건 유형 API 연산 정책 유형

kms:RecipientAttestation:PCR

문자열

Decrypt

GenerateDataKey

GenerateRandom

키 정책 및 IAM 정책

조건 키는 플랫폼 구성이 요청의 서명된 증명 문서에서 등록(kms:RecipientAttestation:PCRPCRkms-decrypt)하는 경우, kms-generate-data-key, kms-generate-random 및 PCRsPCRs 이 조건 키는 AWS Nitro Enclaves SDK APIs를 인코딩에서 호출할 때만 유효합니다.

CRC 값을 지정하려면 다음 형식을 사용합니다. 조건 키 이름에 대한 CRC ID를 연결합니다. 이때 CRK 값은 최대 96바이트의 소문자 16진수 문자열이어야 합니다.

"kms:RecipientAttestation:PCRPCR_ID": "PCR_value"

예를 들어, 다음 조건 키는 인코딩 및 부트스트랩 프로세스에 사용되는 커널의 해시에 해당하는 CRP1'에 대한 특정 값을 지정합니다.

kms:RecipientAttestation:PCR1: "0x1abcdef2abcdef3abcdef4abcdef5abcdef6abcdef7abcdef8abcdef9abcdef8abcdef7abcdef6abcdef5abcdef4abcdef3abcdef2abcdef1abcdef0abcde"

다음 예제 키 정책 설명을 사용하면 data-processing 역할이 CMK(kms-decryptDecrypt) 작업에 를 사용할 수 있습니다.

이 문의 kms:RecipientAttestation:PCR 조건 키는 요청의 서명된 증명 문서의 CRP1 값이 조건의 kms:RecipientAttestation:PCR1 값과 일치하는 경우에만 작업을 허용합니다. 정책 연산자를 사용하여 CRC 값을 대/소문자를 구분하지 않고 비교하도록 합니다.StringEqualsIgnoreCase

요청에 증명 문서가 포함되어 있지 않으면 이 조건이 충족되지 않기 때문에 권한이 거부됩니다.

{ "Sid" : "Enable enclave data processing", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:role/data-processing" }, "Action": "kms:Decrypt", "Resource" : "*", "Condition": { "StringEqualsIgnoreCase": { "kms:RecipientAttestation:PCR1": "0x1de4f2dcf774f6e3b679f62e5f120065b2e408dcea327bd1c9dddaea6664e7af7935581474844767453082c6f1586116376cede396a30a39a611b9aad7966c87" } } }