권한 부여 작업
이 주제의 예제들은 AWS KMS API를 사용하여 AWS KMS keys를 생성, 확인 및 만료하고 권한 부여를 취소합니다. AWS KMS에서 권한 부여를 사용하는 방법에 대한 자세한 내용은 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 .NET의 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; 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 Ruby의
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 = kmsClient.create_grant({ key_id: key_id, grantee_principal: grantee_principal, operations: operation })
- PHP
-
자세한 내용은 AWS SDK for PHP의 CreateGrant 메서드를 참조하십시오.
// 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.js의 createGrant 속성을 참조하십시오.
// 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 작업을 사용합니다.
ListGrants
응답의 GranteePrincipal
필드에는 일반적으로 권한 부여의 피부여자 보안 주체가 포함됩니다. 그러나 권한 부여의 피부여자 보안 주체가 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 .NET의 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"; 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 Ruby의
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 = kmsClient.list_grants({ key_id: key_id, limit: 10 })
- PHP
-
자세한 내용은 AWS SDK for PHP의 ListGrants 메서드를 참조하십시오.
// 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.js의 listGrants 속성을 참조하십시오.
// 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-Objectcmdlet을 사용합니다. 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 .NET의 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 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 Ruby의
list_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 PHP의 ListGrants 메서드를 참조하십시오.
// 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.js의 listGrants 속성을 참조하십시오.
// 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 .NET의 RetireGrant 메서드를 참조하십시오.
// 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 Ruby의
retire_grant
인스턴스 메서드를 참조하세요.# Retire a grant grant_token =
Place your grant token here
response = kmsClient.retire_grant({ grant_token: grant_token }) - PHP
-
자세한 내용은 AWS SDK for PHP의 RetireGrant 메서드를 참조하십시오.
// Retire a grant // $grantToken = '
Place your grant token here
'; $result = $KmsClient->retireGrant([ 'GrantToken' => $grantToken, ]); - Node.js
-
자세한 내용은 AWS SDK for JavaScript in Node.js의 retireGrant 속성을 참조하십시오.
// Retire a grant // const GrantToken = '
Place your grant token here
'; kmsClient.retireGrant({ GrantToken }, (err, data) => { ... }); - PowerShell
-
권한 부여의 사용을 중지하려면 사용 Disable-KMSGrant cmdlet를 사용합니다. 권한 부여 토큰을 얻으려면 New-KMSGrant cmdlet를 사용합니다.
GrantToken
파라미터는 문자열을 사용하므로 Read-Hostcmdlet가 반환하는 출력을 변환할 필요가 없습니다. # Retire a grant $grantToken = Read-Host -Message
Place your grant token here
Disable-KMSGrant -GrantToken $grantTokenAWS 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"; // Replace the following example grant ID with a valid one String grantId = "grant1"; RevokeGrantRequest req = new RevokeGrantRequest().withKeyId(keyId).withGrantId(grantId); kmsClient.revokeGrant(req);
- C#
-
자세한 내용은 AWS SDK for .NET의 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"; // Replace the following example grant ID with a valid one 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' # Replace the following example grant ID with a valid one grant_id = 'grant1' response = kms_client.revoke_grant( KeyId=key_id, GrantId=grant_id )
- Ruby
-
자세한 내용은 AWS SDK for Ruby의
인스턴스 메서드를 참조하세요.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' # Replace the following example grant ID with a valid one grant_id = 'grant1' response = kmsClient.revoke_grant({ key_id: key_id, grant_id: grant_id })
- PHP
-
자세한 내용은 AWS SDK for PHP의 RevokeGrant 메서드를 참조하십시오.
// 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.js의 revokeGrant 속성을 참조하십시오.
// 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 사용 설명서를 참조하십시오.