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는 액세스 제어를 위해 IAM을 사용하는 모든 AWS 서비스에 대해 정책 조건 키 집합인 전역 조건 키를 정의합니다. AWS KMS 키 정책 및 IAM 정책에서 전역 조건 키를 사용할 수 있습니다. 예를 들어, 요청의 보안 주체가 조건 키 값의 Amazon 리소스 이름(ARN)으로 표시되는 경우에만 aws:PrincipalArn 조건 키를 사용하여 고객 마스터 키(CMK)에 대한 액세스를 허용할 수 있습니다.

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

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

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

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

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

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

  1. :AWS에 표시된 것과 같은 정책을 연결합니다. 소스 IP를 바탕으로 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에 부여되지 않습니다.

또한 요청이 Amazon VPC 엔드포인트에서 이루어지는 경우 aws:sourceIP 조건 키는 유효하지 않습니다. AWS KMS VPC 엔드포인트를 포함해 VPC 엔드포인트로 요청을 제한하려면 aws:sourceVpce 또는 aws: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 파라미터 값이 인 경우에만 CustomerMasterKeySpecCreateKey 작업의 사용을 허용할 수 있습니다.RSA_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

부울

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리소스 작업, 즉 특정 CMK를 사용하는 모든 AWS KMS 작업에 대한 액세스를 제어할 수 있습니다. 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 작업에 대한 액세스를 제어할 수 있습니다. KeyUsage 유효값은 ENCRYPT_DECRYPTSIGN_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에서 사용자 및 역할을 식별하는 자세한 내용은 Amazon Cognito 개발자 안내서IAM 역할을 참조하십시오.

{ "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에서 사용하는 표준 비대칭 암호화 알고리즘은 암호화 컨텍스트를 지원하지 않습니다.

이 조건 키를 사용하여 AWS KMS API 요청에서 암호화 컨텍스트를 기반으로 액세스를 제어할 수 있습니다. 암호화 컨텍스트는 대칭 –(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과 같은 키 대소문자를 무시하는 조건 연산자를 사용할 수 있습니다.

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

{ "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

부울

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 조건 키는 요청의 MessageType 파라미터 값에 따라 SignVerify작업에 대한 액세스를 제어합니다. MessageType 유효값은 RAWDIGEST입니다.

예를 들어 다음 키 정책 문은 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

부울

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:RetiringPrincipal

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

kms:RetiringPrincipal

문자열(목록)

CreateGrant

키 정책 및 IAM 정책

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

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

{ "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 역할을 수임할 수 있는 사용자가 요청에 사용된 서명 알고리즘이 RSASSA_PSS 알고리즘(예: CMK)인 경우에만 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

Timestamp

ImportKeyMaterial

키 정책 및 IAM 정책

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

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

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

{ "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고객 마스터 키()의 사용을 지정된 CMK 서비스의 요청으로 제한합니다.AWS 각 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 관리형 CMK에 대한 키 정책을 보려면 GetKeyPolicy 작업을 사용합니다.

kms:ViaService 조건 키는 IAM 및 키 정책 설명에서 유효합니다. 사용자가 지정한 서비스가 AWS KMS와 통합되고 kms:ViaService 조건 키를 지원해야 합니다.

조건 키를 지원하는 서비스(고객 관리형 kms:ViaService에서)CMKs

다음 표에는 AWS와 통합되고, 고객 관리형 AWS KMS를 지원하고, 고객 관리형 CMKs에서 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
Amazon Aurora rds.AWS_region.amazonaws.com
AWS Backup 백업.AWS_region.amazonaws.com
AWS 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) ecrAWS_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
Amazon Kendra kendra.AWS_region.amazonaws.com
Amazon Kinesis kinesis.AWS_region.amazonaws.com
Amazon Kinesis Data Firehose FirehoseAWS_region.amazonaws.com
Amazon Kinesis 비디오 스트림 kinesisvideo.AWS_region.amazonaws.com
AWS Lambda Lambda를 선택합니다.AWS_region.amazonaws.com
Amazon Lex lexAWS_region.amazonaws.com
Amazon Managed Streaming for Apache Kafka (Amazon MSK) kafka.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 내보내기.AWS_region.amazonaws.com
AWS Storage Gateway storagegateway.AWS_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 래핑 알고리즘을 사용하지 못하도록 합니다. GetParametersForImport 요청의 WrappingAlgorithmRSAES_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-randomAWS Nitro Enclaves SDK 를 호출하면 이러한 APIs는 해당 APIs 작업을 해당 AWS KMS 작업과 함께 호출합니다. 이 작업에는 해당 절의 서명된 지장 문서가 포함됩니다. 서명된 증명 문서는 AWS KMS에 대한 인코딩의 자격 증명을 입증합니다.

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

kms:RecipientAttation:ImageSha384

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

kms:RecipientAttestation:ImageSha384

문자열

Decrypt

GenerateDataKey

GenerateRandom

키 정책 및 IAM 정책

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

예를 들어 다음 키 정책 설명을 사용하면 data-processing 역할이 kms-decrypt(Decrypt), kms-generate-data-key(GenerateDataKey) 및 (kms-generate-random) 작업에 대해 CMK를 사용할 수 있습니다.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:RecipientAttation:PCR

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

kms:RecipientAttestation:PCR

문자열

Decrypt

GenerateDataKey

GenerateRandom

키 정책 및 IAM 정책

조건 키는 요청의 서명된 증명 문서에서 나온 플랫폼 구성 등록(PCR)이 조건 키의 kms:RecipientAttestation:PCR와 일치하는 경우에만 엔커브에서 kms-decrypt, kms-generate-data-keykms-generate-random 요청을 허용합니다.PCRs 이 조건 키는 AWS Nitro Enclaves SDK APIs를 인코딩에서 호출할 때만 유효합니다.

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

"kms:RecipientAttestation:PCRPCR_ID": "PCR_value"

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

kms:RecipientAttestation:PCR1: "0x1abcdef2abcdef3abcdef4abcdef5abcdef6abcdef7abcdef8abcdef9abcdef8abcdef7abcdef6abcdef5abcdef4abcdef3abcdef2abcdef1abcdef0abcde"

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

이 문의 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" } } }