권한 부여 생성 - AWS Key Management Service

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

권한 부여 생성

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

권한 부여 생성

권한 부여를 생성하려면 CreateGrant 작업을 호출합니다. CMK를 지정하고보안 주체및 허용 된 목록부여 작업. 당신은 또한 옵션을 지정할 수 있습니다만료 보안 주체. 권한 부여를 사용자 지정하려면 선택적 Constraints 매개 변수를 사용하여 권한 부여 제약을 정의합니다.

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

예를 들어 다음CreateGrant명령은 허용하는 부여를 만듭니다.exampleUser를 호출하려면암호화 해제지정된대칭 CMK. 이 권한 부여는 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}

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

제약 부여 사용

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

AWS KMS는 두 개의 부여 제약 조건을 지원합니다.EncryptionContextEqualsEncryptionContextSubset와 관련이 있습니다. 둘 다암호화 컨텍스트암호화 작업에 대한 요청에. 이러한 권한 부여 제약 조건은부여 작업암호화 컨텍스트를 포함합니다.

참고

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

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

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

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

대칭 CMK에 대한 부여에서 암호화 컨텍스트 제약 조건을 지정하려면Constraints파라미터CreateGrant작업을 사용합니다. 이 명령이 생성하는 부여는exampleUser권한을 사용하여암호화 해제작업을 사용합니다. 그러나 이 권한은 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 요청이 권한 부여 제약 조건에 지정된 암호화 컨텍스트 쌍을 포함하는 경우에만 유효합니다. CMK에 대한 권한 부여를 확인하려면 ListGrants 작업을 사용합니다.

이 제약 조건을 만족시키려면 암호 해독 작업에 대한 요청의 암호화 컨텍스트가 포함 되어야 합니다."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서비스는 권한 부여에서 CMK를 사용할 수 있는 권한을 부여하는 권한 부여에서 암호화 컨텍스트 제약 조건을 사용하는 경우가 자주 있습니다. AWS 계정 . 예를 들어, Amazon DynamoDB 는 다음과 같은 권한을 사용하여AWS관리형 CMK에서 DynamoDB 에 로그인합니다. 이 권한 부여의 EncryptionContextSubset 권한 부여 제약 조건은 권한 부여에 지정된 권한이 요청의 암호화 컨텍스트가 "subscriberID": "111122223333""tableName": "Services" 쌍을 포함하는 경우에만 유효하게 만듭니다. 이 권한 부여 제약 조건은 권한 부여를 통해 DynamoDB 가 사용자 지정 테이블의 특정 테이블에 대해서만 지정된 CMK를 사용할 수 있게 허용함을 의미입니다. AWS 계정 .

이 출력을 얻으려면ListGrants에 대한 작업AWS에서 DynamoDB 에 대한 CMK를 관리할 수 있습니다.

$ 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" } }, } ] }

Principal은 이 허가를 사용하여 권한 부여와 같이 원래 권한 부여에 지정된 작업의 하위 집합을 포함하는 권한 부여를 생성할 수 있습니다.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는 상위 부여 또는 하위 집합에 연산을 포함해야하며 부여 제약 조건은 동일하거나 엄격해야합니다.