권한 부여 작업 - AWS Key Management Service

권한 부여 작업

이 주제의 예제들은 AWS KMS API를 사용하여 AWS KMS keys를 생성, 확인 및 만료하고 권한 부여를 취소합니다. AWS KMS에서 권한 부여를 사용하는 방법에 대한 자세한 내용은 권한 부여 사용 단원을 참조하십시오.

권한 부여 생성

AWS KMS key에 대한 권한 부여를 생성하려면 CreateGrant 작업을 사용합니다. 응답에는 권한 부여 ID와 권한 부여 토큰만 포함됩니다. 권한 부여에 대해 자세히 알아보려면 권한 부여 보기에 나타난 것과 같이 ListGrants 작업을 사용합니다.

이 예제에서는 계정의 IAM 사용자인 Alice가 KeyId 파라미터에 의해 식별된 KMS에 대해 GenerateDataKey 작업을 호출할 수 있는 권한을 부여합니다.

클라이언트 객체가 필요한 언어의 경우 이러한 예제에서는 AWS KMS에서 생성한 클라이언트 만들기 클라이언트 객체를 사용합니다.

Java

자세한 내용은 AWS SDK for Java API 참조createGrant 메서드를 참조하십시오.

// Create a grant // // Replace the following example key ARN with a valid key ID or key ARN String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"; String granteePrincipal = "arn:aws:iam::111122223333:user/Alice"; String operation = GrantOperation.GenerateDataKey.toString(); CreateGrantRequest request = new CreateGrantRequest() .withKeyId(keyId) .withGranteePrincipal(granteePrincipal) .withOperations(operation); CreateGrantResult result = kmsClient.createGrant(request);
C#

자세한 내용은 AWS SDK for .NETCreateGrant 메서드를 참조하십시오.

// Create a grant // // Replace the following example key ARN with a valid key ID or key ARN String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"; String granteePrincipal = "arn:aws:iam::111122223333:user/Alice"; String operation = GrantOperation.GenerateDataKey; CreateGrantRequest createGrantRequest = new CreateGrantRequest() { KeyId = keyId, GranteePrincipal = granteePrincipal, Operations = new List<string>() { operation } }; CreateGrantResponse createGrantResult = kmsClient.CreateGrant(createGrantRequest);
Python

자세한 내용은 AWS SDK for Python (Boto3)의 create_grant 메서드를 참조하십시오.

# Create a grant # Replace the following example key ARN with a valid key ID or key ARN key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' grantee_principal = 'arn:aws:iam::111122223333:user/Alice' operation = ['GenerateDataKey'] response = kms_client.create_grant( KeyId=key_id, GranteePrincipal=grantee_principal, Operations=operation )
Ruby

자세한 내용은 AWS SDK for Rubycreate_grant 인스턴스 메서드를 참조하십시오.

# Create a grant # Replace the following example key ARN with a valid key ID or key ARN key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' grantee_principal = 'arn:aws:iam::111122223333:user/Alice' operation = ['GenerateDataKey'] response = kmsClient.create_grant({ key_id: key_id, grantee_principal: grantee_principal, operations: operation })
PHP

자세한 내용은 AWS SDK for PHPCreateGrant 메서드를 참조하십시오.

// Create a grant // // Replace the following example key ARN with a valid key ID or key ARN $keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'; $granteePrincipal = "arn:aws:iam::111122223333:user/Alice"; $operation = ['GenerateDataKey'] $result = $KmsClient->createGrant([ 'GranteePrincipal' => $granteePrincipal, 'KeyId' => $keyId, 'Operations' => $operation ]);
Node.js

자세한 내용은 AWS SDK for JavaScript in Node.jscreateGrant 속성을 참조하십시오.

// Create a grant // // Replace the following example key ARN with a valid key ID or key ARN const KeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'; const GranteePrincipal = 'arn:aws:iam::111122223333:user/Alice'; const Operations: ["GenerateDataKey"]; kmsClient.createGrant({ KeyId, GranteePrincipal, Operations }, (err, data) => { ... });
PowerShell

권한 부여를 만들려면 New-KMSGrant cmdlet를 사용합니다.

# Create a grant # Replace the following example key ARN with a valid key ID or key ARN $keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' $granteePrincipal = 'arn:aws:iam::111122223333:user/Alice' $operation = 'GenerateDataKey' $response = New-KMSGrant -GranteePrincipal $granteePrincipal -KeyId $keyId -Operation $operation

AWS KMS PowerShell cmdlet를 사용하려면 AWS.Tools.KeyManagementService 모듈을 설치하십시오. 자세한 내용은 AWS Tools for Windows PowerShell 사용 설명서를 참조하십시오.

권한 부여 보기

KMS 키에 대한 권한 부여를 자세히 알아보려면 ListGrants 작업을 사용합니다.

참고

GranteePrincipal 응답의 ListGrants 필드에는 일반적으로 권한 부여의 피부여자 보안 주체가 포함됩니다. 그러나 권한 부여의 피부여자 보안 주체가 AWS 서비스인 경우 GranteePrincipal 필드에는 서비스 보안 주체(여러 피부여자 보안 주체가 될 수 있음)가 포함됩니다.

클라이언트 객체가 필요한 언어의 경우 이러한 예제에서는 AWS KMS에서 생성한 클라이언트 만들기 클라이언트 객체를 사용합니다.

이 예제에서는 선택적 Limits 파라미터를 사용합니다. 이 파라미터는 작업이 반환하는 권한 부여의 수를 결정합니다.

Java

Java 구현에 대한 자세한 내용은 AWS SDK for Java API 참조listGrants 메서드를 참조하십시오.

// Listing grants on a KMS key // // Replace the following example key ARN with a valid key ID or key ARN String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"; Integer limit = 10; ListGrantsRequest req = new ListGrantsRequest().withKeyId(keyId).withLimit(limit); ListGrantsResult result = kmsClient.listGrants(req);
C#

자세한 내용은 AWS SDK for .NETListGrants 메서드를 참조하십시오.

// Listing grants on a KMS key // // Replace the following example key ARN with a valid key ID or key ARN String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"; int limit = 10; ListGrantsRequest listGrantsRequest = new ListGrantsRequest() { KeyId = keyId, Limit = limit }; ListGrantsResponse listGrantsResponse = kmsClient.ListGrants(listGrantsRequest);
Python

자세한 내용은 AWS SDK for Python (Boto3)의 list_grants 메서드를 참조하십시오.

# Listing grants on a KMS key # Replace the following example key ARN with a valid key ID or key ARN key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' response = kms_client.list_grants( KeyId=key_id, Limit=10 )
Ruby

자세한 내용은 AWS SDK for Rubylist_grants 인스턴스 메서드를 참조하십시오.

# Listing grants on a KMS key # Replace the following example key ARN with a valid key ID or key ARN key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' response = kmsClient.list_grants({ key_id: key_id, limit: 10 })
PHP

자세한 내용은 AWS SDK for PHPListGrants 메서드를 참조하십시오.

// Listing grants on a KMS key // // Replace the following example key ARN with a valid key ID or key ARN $keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'; $limit = 10; $result = $KmsClient->listGrants([ 'KeyId' => $keyId, 'Limit' => $limit, ]);
Node.js

자세한 내용은 AWS SDK for JavaScript in Node.jslistGrants 속성을 참조하십시오.

// Listing grants on a KMS key // // Replace the following example key ARN with a valid key ID or key ARN const KeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'; const Limit = 10; kmsClient.listGrants({ KeyId, Limit }, (err, data) => { ... });
PowerShell

KMS 키의 모든 AWS KMS 권한 부여에 대한 세부 정보를 보려면 Get-KMSGrantList cmdlet를 사용합니다.

출력 개체 수를 제한하기 위해 이 예에서는 목록 cmdlet에서 더 이상 사용되지 않는 Limit 파라미터 대신 Select-Object cmdlet을 사용합니다. AWS Tools for PowerShell의 출력 페이지 매김에 대한 도움말은 AWS Tools for PowerShell를 사용하여 출력 페이지 매김을 참조하십시오.

# Listing grants on a KMS key # Replace the following example key ARN with a valid key ID or key ARN $keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' $limit = 10 $response = Get-KMSGrantList -KeyId $keyId | Select-Object -First $limit

AWS KMS PowerShell cmdlet를 사용하려면 AWS.Tools.KeyManagementService 모듈을 설치하십시오. 자세한 내용은 AWS Tools for Windows PowerShell 사용 설명서를 참조하십시오.

모든 ListGrants 작업에서 KMS 키를 지정해야 합니다. 그러나 부여 ID 또는 피부여자 보안 주체를 지정하여 부여 목록을 추가로 필터링할 수 있습니다. 다음 예에서는 test-engineer 역할이 피부여자 보안 주체인 KMS 키에 대한 권한만 가져옵니다.

Java

Java 구현에 대한 자세한 내용은 AWS SDK for Java API 참조listGrants 메서드를 참조하십시오.

// Listing grants on a KMS key // // Replace the following example key ARN with a valid key ID or key ARN String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"; String grantee = "arn:aws:iam::111122223333:role/test-engineer"; ListGrantsRequest req = new ListGrantsRequest().withKeyId(keyId).withGranteePrincipal(grantee); ListGrantsResult result = kmsClient.listGrants(req);
C#

자세한 내용은 AWS SDK for .NETListGrants 메서드를 참조하십시오.

// Listing grants on a KMS key // // Replace the following example key ARN with a valid key ID or key ARN String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"; String grantee = "arn:aws:iam::111122223333:role/test-engineer"; ListGrantsRequest listGrantsRequest = new ListGrantsRequest() { KeyId = keyId, GranteePrincipal = grantee }; ListGrantsResponse listGrantsResponse = kmsClient.ListGrants(listGrantsRequest);
Python

자세한 내용은 AWS SDK for Python (Boto3)의 list_grants 메서드를 참조하십시오.

# Listing grants on a KMS key # Replace the following example key ARN with a valid key ID or key ARN key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' grantee = 'arn:aws:iam::111122223333:role/test-engineer' response = kms_client.list_grants( KeyId=key_id, GranteePrincipal=grantee )
Ruby

자세한 내용은 AWS SDK for Rubylist_grants 인스턴스 메서드를 참조하십시오.

# Listing grants on a KMS key # Replace the following example key ARN with a valid key ID or key ARN keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' grantee = 'arn:aws:iam::111122223333:role/test-engineer' response = kmsClient.list_grants({ key_id: keyId, grantee_principal: grantee })
PHP

자세한 내용은 AWS SDK for PHPListGrants 메서드를 참조하십시오.

// Listing grants on a KMS key // // Replace the following example key ARN with a valid key ID or key ARN $keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'; $grantee = 'arn:aws:iam::111122223333:role/test-engineer'; $result = $KmsClient->listGrants([ 'KeyId' => $keyId, 'GranteePrincipal' => $grantee, ]);
Node.js

자세한 내용은 AWS SDK for JavaScript in Node.jslistGrants 속성을 참조하십시오.

// Listing grants on a KMS key // // Replace the following example key ARN with a valid key ID or key ARN const KeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'; const Grantee = 'arn:aws:iam::111122223333:role/test-engineer'; kmsClient.listGrants({ KeyId, Grantee }, (err, data) => { ... });
PowerShell

KMS 키의 모든 AWS KMS 권한 부여에 대한 세부 정보를 보려면 Get-KMSGrantList cmdlet를 사용합니다.

# Listing grants on a KMS key # Replace the following example key ARN with a valid key ID or key ARN $keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' $grantee = 'arn:aws:iam::111122223333:role/test-engineer' $response = Get-KMSGrantList -KeyId $keyId -GranteePrincipal $grantee

AWS KMS PowerShell cmdlet를 사용하려면 AWS.Tools.KeyManagementService 모듈을 설치하십시오. 자세한 내용은 AWS Tools for Windows PowerShell 사용 설명서를 참조하십시오.

권한 부여 사용 중지

KMS 키에 대한 권한 부여를 만료시키려면 RetireGrant 작업을 사용합니다. 권한 부여의 사용을 완료한 후에는 사용을 중지해야 합니다.

권한 부여의 사용을 중지하려면 권한 부여 토큰을 제공하거나, 권한 부여 ID와 KMS 키 ID를 모두 제공합니다. 이 작업을 수행하려면 KMS 키 ID가 KMS 키의 Amazon 리소스 이름(ARN)이어야 합니다. 권한 부여 토큰은 CreateGrant 작업으로 반환됩니다. 권한 부여 ID는 CreateGrant 및 ListGrants 작업으로 반환됩니다.

RetireGrant는 응답을 반환하지 않습니다. 효과적이었는지 확인하려면 ListGrants 작업을 사용합니다.

클라이언트 객체가 필요한 언어의 경우 이러한 예제에서는 AWS KMS에서 생성한 클라이언트 만들기 클라이언트 객체를 사용합니다.

Java

자세한 내용은 AWS SDK for Java API 참조retireGrant 메서드를 참조하십시오.

// Retire a grant // String grantToken = Place your grant token here; RetireGrantRequest req = new RetireGrantRequest().withGrantToken(grantToken); kmsClient.retireGrant(req);
C#

자세한 내용은 AWS SDK for .NETRetireGrant 메서드를 참조하십시오.

// Retire a grant // String grantToken = "Place your grant token here"; RetireGrantRequest retireGrantRequest = new RetireGrantRequest() { GrantToken = grantToken }; kmsClient.RetireGrant(retireGrantRequest);
Python

자세한 내용은 AWS SDK for Python (Boto3)의 retire_grant 메서드를 참조하십시오.

# Retire a grant grant_token = Place your grant token here response = kms_client.retire_grant( GrantToken=grant_token )
Ruby

자세한 내용은 AWS SDK for Rubyretire_grant 인스턴스 메서드를 참조하십시오.

# Retire a grant grant_token = Place your grant token here response = kmsClient.retire_grant({ grant_token: grant_token })
PHP

자세한 내용은 AWS SDK for PHPRetireGrant 메서드를 참조하십시오.

// Retire a grant // $grantToken = 'Place your grant token here'; $result = $KmsClient->retireGrant([ 'GrantToken' => $grantToken, ]);
Node.js

자세한 내용은 AWS SDK for JavaScript in Node.jsretireGrant 속성을 참조하십시오.

// Retire a grant // const GrantToken = 'Place your grant token here'; kmsClient.retireGrant({ GrantToken }, (err, data) => { ... });
PowerShell

권한 부여의 사용을 중지하려면 사용 Disable-KMSGrant cmdlet를 사용합니다. 권한 부여 토큰을 얻으려면 New-KMSGrant cmdlet를 사용합니다. GrantToken 파라미터는 문자열을 사용하므로 Read-Host cmdlet가 반환하는 출력을 변환할 필요가 없습니다.

# Retire a grant $grantToken = Read-Host -Message Place your grant token here Disable-KMSGrant -GrantToken $grantToken

AWS KMS PowerShell cmdlet를 사용하려면 AWS.Tools.KeyManagementService 모듈을 설치하십시오. 자세한 내용은 AWS Tools for Windows PowerShell 사용 설명서를 참조하십시오.

권한 부여 취소

KMS 키에 대한 권한 부여를 취소하려면 RevokeGrant 작업을 사용합니다. 권한 부여를 취소하여 종속된 작업을 명시적으로 거부할 수 있습니다.

클라이언트 객체가 필요한 언어의 경우 이러한 예제에서는 AWS KMS에서 생성한 클라이언트 만들기 클라이언트 객체를 사용합니다.

Java

자세한 내용은 AWS SDK for Java API 참조revokeGrant 메서드를 참조하십시오.

// Revoke a grant on a KMS key // // Replace the following example key ARN with a valid key ID or key ARN String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"; // &fake-grant-id; String grantId = "grant1"; RevokeGrantRequest req = new RevokeGrantRequest().withKeyId(keyId).withGrantId(grantId); kmsClient.revokeGrant(req);
C#

자세한 내용은 AWS SDK for .NETRevokeGrant 메서드를 참조하십시오.

// Revoke a grant on a KMS key // // Replace the following example key ARN with a valid key ID or key ARN String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"; // &fake-grant-id; String grantId = "grant1"; RevokeGrantRequest revokeGrantRequest = new RevokeGrantRequest() { KeyId = keyId, GrantId = grantId }; kmsClient.RevokeGrant(revokeGrantRequest);

AWS KMS PowerShell cmdlet를 사용하려면 AWS.Tools.KeyManagementService 모듈을 설치하십시오. 자세한 내용은 AWS Tools for Windows PowerShell 사용 설명서를 참조하십시오.

Python

자세한 내용은 AWS SDK for Python (Boto3)의 revoke_grant 메서드를 참조하십시오.

# Revoke a grant on a KMS key # Replace the following example key ARN with a valid key ID or key ARN key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' # &fake-grant-id; grant_id = 'grant1' response = kms_client.revoke_grant( KeyId=key_id, GrantId=grant_id )
Ruby

자세한 내용은 AWS SDK for Rubyrevoke_grant 인스턴스 메서드를 참조하십시오.

# Revoke a grant on a KMS key # Replace the following example key ARN with a valid key ID or key ARN key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' # &fake-grant-id; grant_id = 'grant1' response = kmsClient.revoke_grant({ key_id: key_id, grant_id: grant_id })
PHP

자세한 내용은 AWS SDK for PHPRevokeGrant 메서드를 참조하십시오.

// Revoke a grant on a KMS key // // Replace the following example key ARN with a valid key ID or key ARN $keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'; // Replace the following example grant ID with a valid one $grantId = "grant1"; $result = $KmsClient->revokeGrant([ 'KeyId' => $keyId, 'GrantId' => $grantId, ]);
Node.js

자세한 내용은 AWS SDK for JavaScript in Node.jsrevokeGrant 속성을 참조하십시오.

// Revoke a grant on a KMS key // // Replace the following example key ARN with a valid key ID or key ARN const KeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'; // Replace the following example grant ID with a valid one const GrantId = 'grant1'; kmsClient.revokeGrant({ GrantId, KeyId }, (err, data) => { ... });
PowerShell

권한 부여를 취소하려면 Revoke-KMSGrant cmdlet를 사용합니다.

# Revoke a grant on a KMS key # Replace the following example key ARN with a valid key ID or key ARN $keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' # Replace the following example grant ID with a valid one $grantId = 'grant1' Revoke-KMSGrant -KeyId $keyId -GrantId $grantId

AWS KMS PowerShell cmdlet를 사용하려면 AWS.Tools.KeyManagementService 모듈을 설치하십시오. 자세한 내용은 AWS Tools for Windows PowerShell 사용 설명서를 참조하십시오.