권한 부여 생성 - AWS Key Management Service

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

권한 부여 생성

권한 부여를 생성하기 전에 권한 부여 사용자 정의 옵션에 대해 알아봅니다. 권한 부여 제약 조건을 사용하여 권한 부여의 사용 권한을 제한할 수 있습니다. 또한 CreateGrant 권한 부여에 대해 알아보십시오. 권한 부여에서 권한 부여를 생성할 수 있는 권한을 받은 보안 주체는 생성할 수 있는 권한이 제한됩니다.

권한 부여 생성

권한을 생성하려면 CreateGrant 작업을 호출합니다. KMS 키, 권한 부여자 보안 주체 및 허용되는 권한 부여 작업 목록을 지정합니다. 사용 중지 보안 주체를 선택적으로 지정할 수도 있습니다. 권한 부여를 사용자 지정하려면 선택적 Constraints 매개 변수를 사용하여 권한 부여 제약을 정의합니다.

권한 부여를 생성, 폐기 또는 취소할 때 AWS KMS전체에서 변경 내용을 사용할 수 있을 때까지 짧은 지연(보통 5분 미만)이 있을 수 있습니다. 자세한 내용은 결과적 일관성(권한 부여용)을 참조하세요.

예를 들어, 다음 CreateGrant 명령은 keyUserRole 역할을 수임할 권한이 있는 사용자가 지정된 대칭 KMS 키 에서 복호화 작업을 호출할 수 있는 권한을 생성합니다. 이 권한 부여는 RetiringPrincipal 파라미터를 사용하여 권한 부여를 중단시킬 수 있는 보안 주체를 지정합니다. 또한 요청의 암호화 컨텍스트"Department": "IT"를 포함하는 경우에만 권한을 허용하는 권한 부여 제약 조건이 포함되어 있습니다.

$ aws kms create-grant \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --grantee-principal arn:aws:iam::111122223333:role/keyUserRole \ --operations Decrypt \ --retiring-principal arn:aws:iam::111122223333:role/adminRole \ --constraints EncryptionContextSubset={Department=IT}

코드가 CreateGrant 작업을 재시도하거나 AWS SDK 요청을 자동으로 재시도하는 를 사용하는 경우 선택적 이름 파라미터를 사용하여 중복 권한 부여가 생성되지 않도록 합니다. 가 이름을 포함하여 기존 권한 부여와 동일한 속성의 권한 부여 CreateGrant 요청을 AWS KMS 받으면 요청을 재시도로 인식하고 새 권한 부여를 생성하지 않습니다. Name 값을 사용하여 AWS KMS 작업에서 권한 부여를 식별할 수 없습니다.

중요

권한 부여 이름에 기밀 또는 민감한 정보를 포함하지 마십시오. CloudTrail 로그 및 기타 출력의 일반 텍스트로 표시될 수 있습니다.

$ aws kms create-grant \ --name IT-1234abcd-keyUserRole-decrypt \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --grantee-principal arn:aws:iam::111122223333:role/keyUserRole \ --operations Decrypt \ --retiring-principal arn:aws:iam::111122223333:role/adminRole \ --constraints EncryptionContextSubset={Department=IT}

여러 프로그래밍 언어로 권한 부여를 생성하는 방법을 보여주는 코드 예제는 또는 와 CreateGrantAWS SDK 함께 사용 CLI 단원을 참조하세요.

권한 부여 제약 사용

권한 부여 제약은 권한 부여를 통해 피부여자 보안 주체에게 부여하는 권한에 대한 조건을 설정합니다. 권한 부여 제약 조건은 키 정책 또는 정책 의 조건 키를 대체합니다. 의 키 정책 AWS KMS IAM 각 권한 부여 제약 조건 값은 암호화 컨텍스트 페어를 8개까지 포함할 수 있습니다. 각 권한 부여 제약 조건의 암호화 컨텍스트 값은 384자를 초과할 수 없습니다.

중요

이 필드에 기밀 또는 민감한 정보를 포함하지 마십시오. 이 필드는 CloudTrail 로그 및 기타 출력의 일반 텍스트로 표시될 수 있습니다.

AWS KMS 는 두 가지 권한 부여 제약 조건인 EncryptionContextEquals 및 를 지원하며EncryptionContextSubset, 이 두 제약 조건 모두 암호화 작업 요청 시 암호화 컨텍스트에 대한 요구 사항을 설정합니다.

암호화 컨텍스트 권한 부여 제약 조건은 암호화 컨텍스트 파라미터가 있는 권한 부여 작업과 함께 사용하도록 설계되었습니다.

  • 암호화 컨텍스트 제약 조건은 대칭 암호화 KMS 키에 대한 권한 부여에서만 유효합니다. 다른 KMS 키를 사용한 암호화 작업은 암호화 컨텍스트를 지원하지 않습니다.

  • 암호화 컨텍스트 제약 조건은 DescribeKeyRetireGrant 작업에 대해 무시됩니다. DescribeKeyRetireGrant에는 암호화 컨텍스트 파라미터가 없지만 암호화 컨텍스트 제약 조건이 있는 권한 부여에 이러한 작업을 포함할 수 있습니다.

  • CreateGrant 작업에 대한 권한 부여에서 암호화 컨텍스트 제약 조건을 사용할 수 있습니다. 암호화 컨텍스트 제약 조건에서는 CreateGrant 권한으로 생성된 모든 권한 부여에 동등하게 엄격하거나 더 엄격한 암호화 컨텍스트 제약 조건이 있어야 합니다.

AWS KMS 는 다음과 같은 암호화 컨텍스트 권한 부여 제약 조건을 지원합니다.

EncryptionContextEquals

EncryptionContextEquals를 사용하여 허용된 요청에 대한 정확한 암호화 컨텍스트를 지정합니다.

EncryptionContextEquals는 요청의 암호화 컨텍스트 페어가 권한 부여 제약 조건의 암호화 컨텍스트 페어에 대해 정확히 대소문자가 일치해야 합니다. 쌍은 순서에 관계없이 나타날 수 있지만 각 쌍의 키와 값은 다를 수 없습니다.

예를 들어, EncryptionContextEquals 권한 부여 제약 조건에 "Department": "IT" 암호화 컨텍스트 페어가 필요한 경우 권한 부여는 요청의 암호화 컨텍스트가 정확히 "Department": "IT"인 경우에만 지정된 유형의 요청을 허용합니다.

EncryptionContextSubset

EncryptionContextSubset을 사용하여 요청에 특정 암호화 컨텍스트 페어가 포함되도록 요구합니다.

EncryptionContextSubset는 요청에 권한 부여 제약 조건의 모든 암호화 컨텍스트 페어(정확한 대소문자 구분 일치)을 포함해야 하지만 요청에 추가 암호화 컨텍스트 페어가 있을 수도 있습니다. 쌍은 순서에 관계없이 나타날 수 있지만 각 쌍의 키와 값은 다를 수 없습니다.

예를 들어, EncryptionContextSubset 권한 부여 제약 조건에 Department=IT 암호화 컨텍스트 페어가 필요한 경우 권한 부여는 요청의 암호화 컨텍스트가 정확히 "Department": "IT"인 경우에 지정된 유형의 요청을 허용하거나 다른 암호화 컨텍스트 페어(예: "Department": "IT","Purpose": "Test")와 함께 "Department": "IT"를 포함합니다.

대칭 암호화 KMS 키에 대한 권한 부여에 암호화 컨텍스트 제약 조건을 지정하려면 CreateGrant 작업에서 Constraints 파라미터를 사용합니다. 이 명령이 생성하는 권한 부여는 Decrypt 작업을 호출할 수 있는 keyUserRole 역할 권한을 맡을 권한이 있는 사용자에게 부여합니다. 그러나 이 권한은 Decrypt 요청의 암호화 컨텍스트가 "Department": "IT" 암호화 컨텍스트 페어인 경우에만 유효합니다.

$ aws kms create-grant \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --grantee-principal arn:aws:iam::111122223333:role/keyUserRole \ --operations Decrypt \ --retiring-principal arn:aws:iam::111122223333:role/adminRole \ --constraints EncryptionContextEquals={Department=IT}

결과 권한 부여는 다음과 같습니다. keyUserRole 역할에 부여된 권한은 Decrypt 요청이 권한 부여 제약 조건에 지정된 동일한 암호화 컨텍스트 페어를 사용하는 경우에만 유효합니다. KMS 키에서 권한 부여를 찾으려면 ListGrants 작업을 사용합니다.

$ aws kms list-grants --key-id 1234abcd-12ab-34cd-56ef-1234567890ab { "Grants": [ { "Name": "", "IssuingAccount": "arn:aws:iam::111122223333:root", "GrantId": "abcde1237f76e4ba7987489ac329fbfba6ad343d6f7075dbd1ef191f0120514a", "Operations": [ "Decrypt" ], "GranteePrincipal": "arn:aws:iam::111122223333:role/keyUserRole", "Constraints": { "EncryptionContextEquals": { "Department": "IT" } }, "CreationDate": 1568565290.0, "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "RetiringPrincipal": "arn:aws:iam::111122223333:role/adminRole" } ] }

EncryptionContextEquals 권한 부여 제약 조건을 충족하려면 Decrypt 작업에 대한 요청의 암호화 컨텍스트가 "Department": "IT" 페어여야 합니다. 피부여자 보안 주체의 다음과 같은 요청은 EncryptionContextEquals 권한 부여 제약 조건을 충족합니다.

$ aws kms decrypt \ --key-id arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab\ --ciphertext-blob fileb://encrypted_msg \ --encryption-context Department=IT

권한 부여 제약 조건이 EncryptionContextSubset인 경우 요청의 암호화 컨텍스트 페어는 권한 부여 제약 조건의 암호화 컨텍스트 페어를 포함해야 하지만 요청은 다른 암호화 컨텍스트 페어도 포함할 수 있습니다. 다음 권한 부여 제약 조건에서는 요청의 암호화 컨텍스트 페어 중 하나가 "Deparment": "IT"여야 합니다.

"Constraints": { "EncryptionContextSubset": { "Department": "IT" } }

피부여자 보안 주체의 다음 요청은 이 예에서 EncryptionContextEqualEncryptionContextSubset 권한 부여 제약 조건을 모두 충족합니다.

$ aws kms decrypt \ --key-id arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab \ --ciphertext-blob fileb://encrypted_msg \ --encryption-context Department=IT

그러나 피부여자 주체의 다음과 같은 요청은 EncryptionContextSubset 권한 부여 제약 조건을 만족하지만 EncryptionContextEquals 권한 부여 제약 조건에는 실패합니다.

$ aws kms decrypt \ --key-id arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab \ --ciphertext-blob fileb://encrypted_msg \ --encryption-context Department=IT,Purpose=Test

AWS 서비스는 종종 권한 부여에 암호화 컨텍스트 제약 조건을 사용하여 에서 KMS 키를 사용할 수 있는 권한을 부여합니다 AWS 계정. 예를 들어 Amazon DynamoDB는 다음과 같은 권한 부여를 사용하여 계정에서 DynamoDB용 AWS 관리형 키를 사용할 수 있는 권한을 얻습니다. 이 권한 부여의 EncryptionContextSubset 권한 부여 제약 조건은 권한 부여에 지정된 권한이 요청의 암호화 컨텍스트가 "subscriberID": "111122223333""tableName": "Services" 쌍을 포함하는 경우에만 유효하게 만듭니다. 이 권한 부여 제약은 권한 부여가 DynamoDB가 의 특정 테이블에만 지정된 KMS 키를 사용하도록 허용한다는 의미입니다 AWS 계정.

이 출력을 가져오려면 계정의 AWS 관리형 키 for DynamoDB에서 ListGrants 작업을 실행합니다.

$ aws kms list-grants --key-id 0987dcba-09fe-87dc-65ba-ab0987654321 { "Grants": [ { "Operations": [ "Decrypt", "Encrypt", "GenerateDataKey", "ReEncryptFrom", "ReEncryptTo", "RetireGrant", "DescribeKey" ], "IssuingAccount": "arn:aws:iam::111122223333:root", "Constraints": { "EncryptionContextSubset": { "aws:dynamodb:tableName": "Services", "aws:dynamodb:subscriberId": "111122223333" } }, "CreationDate": 1518567315.0, "KeyId": "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321", "GranteePrincipal": "dynamodb.us-west-2.amazonaws.com", "RetiringPrincipal": "dynamodb.us-west-2.amazonaws.com", "Name": "8276b9a6-6cf0-46f1-b2f0-7993a7f8c89a", "GrantId": "1667b97d27cf748cf05b487217dd4179526c949d14fb3903858e25193253fe59" } ] }

CreateGrant 권한 부여

권한 부여에는 CreateGrant 호출할 수 있는 권한이 포함될 수 있습니다. 그러나 피부여자 보안 주체가 정책이 아닌 부여에서 CreateGrant를 호출할 수 있는 권한을 얻으면 해당 권한이 제한됩니다.

  • 피부여자 보안 주체는 상위 권한 부여의 일부 또는 모든 작업을 허용하는 부여만 생성할 수 있습니다.

  • 생성하는 권한 부여의 권한 부여 제약 조건은 최소한 상위 권한 부여의 제약 조건만큼 엄격해야 합니다.

정책 조건에 따라 권한이 제한될 수 있지만 이러한 제한은 정책에서 CreateGrant 권한을 받는 보안 주체에게는 적용되지 않습니다.

예를 들면, GenerateDataKey, DecryptCreateGrant 작업을 호출할 수 있게 하는 권한 부여를 고려하십시오. CreateGrant 권한을 허용하는 권한을 상위 권한 부여라고 합니다.

# The original grant in a ListGrants response. { "Grants": [ { "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "CreationDate": 1572216195.0, "GrantId": "abcde1237f76e4ba7987489ac329fbfba6ad343d6f7075dbd1ef191f0120514a", "Operations": [ "GenerateDataKey", "Decrypt", "CreateGrant ] "RetiringPrincipal": "arn:aws:iam::111122223333:role/adminRole", "Name": "", "IssuingAccount": "arn:aws:iam::111122223333:root", "GranteePrincipal": "arn:aws:iam::111122223333:role/keyUserRole", "Constraints": { "EncryptionContextSubset": { "Department": "IT" } }, } ] }

권한 부여자 보안 주체인 는 이 권한을 사용하여 CreateGrant 및 와 같이 원래 권한 부여에 지정된 작업의 하위 집합을 포함하는 권한을 생성할 exampleUser수 있습니다Decrypt. 하위 권한 부여는 다른 다른 작업(예: ScheduleKeyDeletion 또는 ReEncrypt)을 포함할 수 없습니다.

또한, 하위 권한 부여에 대한 권한 부여 제약 조건 은 상위 권한 부여만큼 제한적이거나 더 제한적이어야 합니다. 예를 들어, 하위 권한 부여는 상위 권한 부여의 EncryptionContextSubset 제한 조건에 쌍을 추가 할 수 있지만 이를 제거 할 수는 없습니다. 하위 권한 부여는 EncryptionContextSubset 제약 조건을 EncryptionContextEquals 제약 조건으로 변경할 수 있지만 그 반대는 아닙니다.

IAM 모범 사례에서는 장기 보안 인증 정보가 있는 IAM 사용자를 사용하지 않는 것이 좋습니다. 가능하면 임시 자격 증명을 제공하는 IAM 역할을 사용합니다. 자세한 내용은 IAM 사용 설명서의 에서 보안 모범 사례를 IAM 참조하세요.

예를 들어 피부여자 보안 주체는 상위 권한 부여에서 얻은 CreateGrant 권한을 사용하여 다음 하위 권한 부여를 생성할 수 있습니다. 하위 권한 부여의 작업은 상위 권한 부여 작업의 하위 집합이며 권한 부여 제약 조건은 더 제한적입니다.

# The child grant in a ListGrants response. { "Grants": [ { "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "CreationDate": 1572249600.0, "GrantId": "fedcba9999c1e2e9876abcde6e9d6c9b6a1987650000abcee009abcdef40183f", "Operations": [ "CreateGrant" "Decrypt" ] "RetiringPrincipal": "arn:aws:iam::111122223333:user/exampleUser", "Name": "", "IssuingAccount": "arn:aws:iam::111122223333:root", "GranteePrincipal": "arn:aws:iam::111122223333:user/anotherUser", "Constraints": { "EncryptionContextEquals": { "Department": "IT" } }, } ] }

하위 권한 부여 anotherUser의 피부여자 보안 주체는 CreateGrant 권한을 사용하여 권한 부여를 생성할 수 있습니다. 그러나, anotherUser가 생성하는 권한 부여는 상위 권한 부여 또는 하위 집합의 작업을 포함해야 하며 권한 부여 제약 조건은 동일하거나 더 엄격해야 합니다.