권한 부여 생성 - AWS Key Management Service

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

권한 부여 생성

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

권한 부여 생성

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

권한 부여를 생성, 사용 중지 또는 취소할 때 작업이 최종 일관성을 얻을 때까지 일반적으로 5분 미만의 짧은 지연이 있을 수 있습니다.

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

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

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

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

여러 프로그래밍 언어로 권한 부여를 사용하는 방법을 보여주는 코드 예제는 권한 부여 작업 단원을 참조하십시오.

권한 부여 제약 조건 사용

권한 부여 제약은 피부여자 보안 주체가 수행할 수 있는 권한에 대한 조건을 설정합니다. 권한 부여 제약 조건은 키 정책 또는 AWS KMS에서 키 정책 사용 정책에서 IAM조건 키를 대신합니다. 권한 부여에서는 조건 키를 사용할 수 없습니다.

AWS KMS는 EncryptionContextEqualsEncryptionContextSubset라는 두 가지 권한 부여 제약 조건을 지원하며, 두 제약 조건 모두 암호화 작업 요청의 암호화 컨텍스트를 포함합니다. 이러한 권한 부여 제약 조건은 암호화 컨텍스트를 포함하는 권한 부여 작업에서만 지원됩니다.

참고

비대칭 CMK에 대한 권한 부여에는 암호화 컨텍스트 권한 부여 제약 조건을 사용할 수 없습니다. AWS KMS가 사용하는 비대칭 암호화 알고리즘은 암호화 컨텍스트를 지원하지 않습니다.

  • EncryptionContextEquals암호 해독 작업에 지정된 암호화 컨텍스트는 암호화 작업에 지정된 암호화 컨텍스트에 대해 대소문자가 정확히 일치해야 합니다. 쌍은 순서에 관계없이 나타날 수 있지만 각 쌍의 키와 값은 다를 수 없습니다.

  • EncryptionContextSubset은 요청의 암호화 컨텍스트가 권한 부여 제한 조건에 지정된 암호화 컨텍스트를 포함 할 때만 권한이 적용되도록 지정합니다. 요청의 암호화 컨텍스트는 제약 조건의 암호화 컨텍스트와 대/소문자가 정확히 일치해야 하지만 추가 암호화 컨텍스트 쌍을 포함할 수도 있습니다. 쌍은 순서에 관계없이 나타날 수 있지만 각 쌍의 키와 값은 다를 수 없습니다.

각 제약 값에는 최대 8개의 암호화 컨텍스트 쌍이 포함될 수 있습니다. 각 제약 조건의 암호화 컨텍스트 값은 384자를 초과할 수 없습니다.

대칭 CMK에 대한 권한 부여에서 암호화 컨텍스트 제약 조건을 지정하려면 ConstraintsCreateGrant 작업에서 파라미터를 사용합니다. 이 명령이 생성하는 권한 부여는 exampleUserDecrypt 작업을 호출할 수 있는 권한을 부여합니다. 그러나 이 권한은 Decrypt 요청의 암호화 컨텍스트가 "Department": "IT" 암호화 컨텍스트 쌍을 포함하는 경우에만 유효합니다.

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

결과 권한 부여는 다음과 같습니다. exampleUser에 부여된 권한은 Decrypt 요청이 권한 부여 제약 조건에 지정된 암호화 컨텍스트 쌍을 포함하는 경우에만 유효합니다. 의 권한 부여를 찾으려면 CMKListGrants 작업을 사용합니다.

이 제약 조건을 충족하려면 Decrypt 작업 요청의 암호화 컨텍스트에 "Department": "IT" 페어가 포함되어야 합니다. 이 쌍은 암호화 컨텍스트의 유일한 쌍이거나 여러 쌍 중 하나일 수 있습니다.

$ aws kms list-grants --key-id 1234abcd-12ab-34cd-56ef-1234567890ab { "Grants": [ { "Name": "", "IssuingAccount": "arn:aws:iam::111122223333:root", "GrantId": "8c94d1f12f5e69f440bae30eaec9570bb1fb7358824f9ddfa1aa5a0dab1a59b2", "Operations": [ "Decrypt" ], "GranteePrincipal": "arn:aws:iam::111122223333:user/exampleUser", "Constraints": { "EncryptionContextSubset": { "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" } ] }

피부여자 보안 주체의 다음과 같은 요청은 EncryptionContextSubset 제약 조건을 충족합니다.

$ aws kms generate-data-key \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --key-spec AES_256 \ --encryption-context Department=IT,Purpose=Test

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

이 출력을 얻으려면 계정의 용 ListGrants 관리형 에서 AWSCMKDynamoDB 작업을 실행합니다.

$ 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:user/exampleUser", "Constraints": { "EncryptionContextSubset": { "Department": "IT" } }, } ] }

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

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

예를 들어, 피부여자 보안 주체는 상위 권한 부여에서 얻은 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가 생성하는 권한 부여에는 상위 권한 부여 또는 하위 집합의 작업이 포함되어야 하며, 권한 부여 제약 조건이 동일하거나 더 엄격해야 합니다.