AWS KMS 사용 예제 AWS CLI - AWS SDK 코드 예제

AWS Doc SDK ExamplesWord AWS SDK 리포지토리에는 더 많은 GitHub 예제가 있습니다.

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

AWS KMS 사용 예제 AWS CLI

다음 코드 예제에서는를 AWS Command Line Interface 와 함께 사용하여 작업을 수행하고 일반적인 시나리오를 구현하는 방법을 보여줍니다 AWS KMS.

작업은 대규모 프로그램에서 발췌한 코드이며 컨텍스트에 맞춰 실행해야 합니다. 작업은 개별 서비스 함수를 직접적으로 호출하는 방법을 보여주며 관련 시나리오의 컨텍스트에 맞는 작업을 볼 수 있습니다.

각 예제에는 컨텍스트에서 코드를 설정하고 실행하는 방법에 대한 지침을 찾을 수 있는 전체 소스 코드에 대한 링크가 포함되어 있습니다.

주제

작업

다음 코드 예시에서는 cancel-key-deletion을 사용하는 방법을 보여 줍니다.

AWS CLI

고객 관리형 KMS 키의 예약된 삭제를 취소하려면

다음 cancel-key-deletion 예제에서는 고객 관리형 KMS 키의 예약된 삭제를 취소합니다.

aws kms cancel-key-deletion \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab

출력:

{ "KeyId": "arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab" }

cancel-key-deletion 명령이 성공하면 예약된 삭제가 취소됩니다. 그러나 KMS 키의 키 상태는 Disabled이므로 암호화 작업에서 KMS 키를 사용할 수 없습니다. 기능을 복원하려면 enable-key 명령을 사용합니다.

자세한 내용은 Key Management Service 개발자 안내서의 키 삭제 예약 및 취소를 참조하세요. AWS

  • API 세부 정보는 AWS CLI 명령 참조CancelKeyDeletion를 참조하세요.

다음 코드 예시에서는 connect-custom-key-store을 사용하는 방법을 보여 줍니다.

AWS CLI

사용자 지정 키 스토어를 연결하려면

다음 connect-custom-key-store 예제에서는 지정된 사용자 지정 키 스토어를 다시 연결합니다. 이와 같은 명령을 사용하여 사용자 지정 키 스토어를 처음 연결하거나 연결이 끊긴 키 스토어를 다시 연결할 수 있습니다.

이 명령을 사용하여 AWS CloudHSM 키 스토어 또는 외부 키 스토어를 연결할 수 있습니다.

aws kms connect-custom-key-store \ --custom-key-store-id cks-1234567890abcdef0

이 명령은 출력을 반환하지 않습니다. 명령이 유효한지 확인하려면 describe-custom-key-stores 명령을 사용하세요.

AWS CloudHSM 키 스토어 연결에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서AWS CloudHSM 키 스토어 연결 및 연결 해제를 참조하세요.

외부 키 스토어 연결에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서외부 키 스토어 연결 및 연결 해제를 참조하세요.

다음 코드 예시에서는 create-alias을 사용하는 방법을 보여 줍니다.

AWS CLI

KMS 키의 별칭을 생성하려면

다음 create-alias 명령은 키 ID 로 식별되는 KMS 키에 example-alias 대해 이름이 지정된 별칭을 생성합니다1234abcd-12ab-34cd-56ef-1234567890ab.

별칭 이름은 alias/로 시작해야 합니다. 로 시작하는 별칭 이름은 사용하지 마세요. alias/aws별칭은에서 사용하도록 예약되어 있습니다 AWS.

aws kms create-alias \ --alias-name alias/example-alias \ --target-key-id 1234abcd-12ab-34cd-56ef-1234567890ab

이 명령은 출력을 반환하지 않습니다. 새 별칭을 보려면 list-aliases 명령을 사용하세요.

자세한 내용은 AWS Key Management Service 개발자 안내서의 별칭 사용을 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조CreateAlias를 참조하세요.

다음 코드 예시에서는 create-custom-key-store을 사용하는 방법을 보여 줍니다.

AWS CLI

예제 1: AWS CloudHSM 키 스토어 생성

다음 create-custom-key-store 예제에서는 필요한 파라미터를 사용하여 AWS CloudHSM 클러스터가 지원하는 AWS CloudHSM 키 스토어를 생성합니다. 를 추가할 수도 있습니다custom-key-store-type``parameter with the default value: ``AWS_CLOUDHSM.

AWS CLI에서 trust-anchor-certificate 명령에 대한 파일 입력을 지정하려면 file:// 접두사가 필요합니다.

aws kms create-custom-key-store \ --custom-key-store-name ExampleCloudHSMKeyStore \ --cloud-hsm-cluster-id cluster-1a23b4cdefg \ --key-store-password kmsPswd \ --trust-anchor-certificate file://customerCA.crt

출력:

{ "CustomKeyStoreId": cks-1234567890abcdef0 }

자세한 내용은 Key Management Service 개발자 안내서의 AWS CloudHSM 키 스토어 생성을 참조하세요. AWS

예제 2: 퍼블릭 엔드포인트 연결을 사용하여 외부 키 스토어를 생성하려면

다음 create-custom-key-store 예제에서는 인터넷을 통해 XKS와 통신하는 외부 키 스토어( AWS KMS)를 생성합니다.

이 예제에서는의 선택적 접두사를 XksProxyUriPath 사용합니다example-prefix.

NOTE: AWS CLI 버전 1.0을 사용하는 경우 Word 파라미터와 같은 HTTP 또는 HTTPS 값으로 XksProxyUriEndpoint 파라미터를 지정하기 전에 다음 명령을 실행합니다.

aws configure set cli_follow_urlparam false

그렇지 않으면 AWS CLI 버전 1.0이 파라미터 값을 해당 URI 주소에 있는 콘텐츠로 바꿉니다.

aws kms create-custom-key-store \ --custom-key-store-name ExamplePublicEndpointXKS \ --custom-key-store-type EXTERNAL_KEY_STORE \ --xks-proxy-connectivity PUBLIC_ENDPOINT \ --xks-proxy-uri-endpoint "https://myproxy.xks.example.com" \ --xks-proxy-uri-path "/example-prefix/kms/xks/v1" \ --xks-proxy-authentication-credential "AccessKeyId=ABCDE12345670EXAMPLE, RawSecretAccessKey=DXjSUawnel2fr6SKC7G25CNxTyWKE5PF9XX6H/u9pSo="

출력:

{ "CustomKeyStoreId": cks-2234567890abcdef0 }

자세한 내용은 Key Management Service 개발자 안내서의 외부 키 스토어 생성을 참조하세요. AWS

예제 3: VPC 엔드포인트 서비스 연결을 사용하여 외부 키 스토어를 생성하려면

다음 create-custom-key-store 예제에서는 Amazon VPC 엔드포인트 서비스를 사용하여XKS와 통신하는 외부 키 스토어( AWS KMS)를 생성합니다.

NOTE: AWS CLI 버전 1.0을 사용하는 경우 Word 파라미터와 같은 HTTP 또는 HTTPS 값으로 XksProxyUriEndpoint 파라미터를 지정하기 전에 다음 명령을 실행합니다.

aws configure set cli_follow_urlparam false

그렇지 않으면 AWS CLI 버전 1.0이 파라미터 값을 해당 URI 주소에 있는 콘텐츠로 바꿉니다.

aws kms create-custom-key-store \ --custom-key-store-name ExampleVPCEndpointXKS \ --custom-key-store-type EXTERNAL_KEY_STORE \ --xks-proxy-connectivity VPC_ENDPOINT_SERVICE \ --xks-proxy-uri-endpoint "https://myproxy-private.xks.example.com" \ --xks-proxy-uri-path "/kms/xks/v1" \ --xks-proxy-vpc-endpoint-service-name "com.amazonaws.vpce.us-east-1.vpce-svc-example1" \ --xks-proxy-authentication-credential "AccessKeyId=ABCDE12345670EXAMPLE, RawSecretAccessKey=DXjSUawnel2fr6SKC7G25CNxTyWKE5PF9XX6H/u9pSo="

출력:

{ "CustomKeyStoreId": cks-3234567890abcdef0 }

자세한 내용은 Key Management Service 개발자 안내서의 외부 키 스토어 생성을 참조하세요. AWS

다음 코드 예시에서는 create-grant을 사용하는 방법을 보여 줍니다.

AWS CLI

권한 부여를 생성하는 방법

다음 create-grant 예제에서는 exampleUser 사용자가 1234abcd-12ab-34cd-56ef-1234567890ab 예제 KMS 키에서 decrypt 명령을 사용할 수 있는 권한을 생성합니다. 사용 중지하는 보안 주체는 adminRole 역할입니다. 이 권한 부여는 decrypt 요청의 암호화 컨텍스트에 "Department": "IT" 키-값 페어가 포함된 경우에만 이 권한을 허용하도록 EncryptionContextSubset 권한 부여 제약 조건을 사용합니다.

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

출력:

{ "GrantId": "1a2b3c4d2f5e69f440bae30eaec9570bb1fb7358824f9ddfa1aa5a0dab1a59b2", "GrantToken": "<grant token here>" }

권한 부여에 대한 자세한 정보를 보려면 list-grants 명령을 사용하세요.

자세한 내용은 AWS Key Management Service 개발자 안내서Grants in AWS KMS를 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조CreateGrant를 참조하세요.

다음 코드 예시에서는 create-key을 사용하는 방법을 보여 줍니다.

AWS CLI

예제 1: 고객 관리형 KMS 키 in AWS KMS 생성

다음 create-key 예제에서는 대칭 암호화 KMS 키를 생성합니다.

대칭 암호화 키인 기본 KMS 키를 생성하려면 파라미터를 지정할 필요가 없습니다. 이러한 파라미터의 기본값은 대칭 암호화 키를 생성합니다.

이 명령은 키 정책을 지정하지 않으므로 KMS 키는 프로그래밍 방식으로 생성된 KMS 키에 대한 기본 키 정책을 가져옵니다. 키 정책을 보려면 get-key-policy 명령을 사용하세요. 키 정책을 변경하려면 put-key-policy 명령을 사용하세요.

aws kms create-key

create-key 명령은 새 ARN 키의 키 ID 및 KMS를 포함한 키 메타데이터를 반환합니다. 이러한 값을 사용하여 다른 AWS KMS 작업에서 KMS 키를 식별할 수 있습니다. 출력에 태그가 포함되지 않습니다. KMS 키의 태그를 보려면를 사용합니다list-resource-tags command.

출력:

{ "KeyMetadata": { "AWSAccountId": "111122223333", "Arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "CreationDate": "2017-07-05T14:04:55-07:00", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "Description": "", "Enabled": true, "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "KeyManager": "CUSTOMER", "KeySpec": "SYMMETRIC_DEFAULT", "KeyState": "Enabled", "KeyUsage": "ENCRYPT_DECRYPT", "MultiRegion": false, "Origin": "AWS_KMS" "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ] } }

참고:이 create-key 명령은 별칭을 지정할 수 없습니다. 새 KMS 키에 대한 별칭을 생성하려면 create-alias 명령을 사용합니다.

자세한 내용은 AWS Key Management Service 개발자 안내서의 키 생성을 참조하세요.

예제 2: 암호화 및 복호화를 위한 비대칭 KMS RSA Word 키 생성

다음 create-key 예제에서는 암호화 및 복호화를 위한 비대칭 Word 키 페어가 KMS 포함된 RSA 키를 생성합니다.

aws kms create-key \ --key-spec RSA_4096 \ --key-usage ENCRYPT_DECRYPT

출력:

{ "KeyMetadata": { "Arn": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "AWSAccountId": "111122223333", "CreationDate": "2021-04-05T14:04:55-07:00", "CustomerMasterKeySpec": "RSA_4096", "Description": "", "Enabled": true, "EncryptionAlgorithms": [ "RSAES_OAEP_SHA_1", "RSAES_OAEP_SHA_256" ], "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "KeyManager": "CUSTOMER", "KeySpec": "RSA_4096", "KeyState": "Enabled", "KeyUsage": "ENCRYPT_DECRYPT", "MultiRegion": false, "Origin": "AWS_KMS" } }

자세한 내용은 Key AWS Management Service 개발자 안내서의 in AWS KMS 비대칭 키를 참조하세요.

예제 3: 서명 및 확인을 위한 비대칭 타원 곡선 Word KMS 키를 생성하려면

서명 및 확인을 위한 비대칭 타원 곡선(ECC) KMS 키 페어가 포함된 비대칭 Word 키를 생성합니다. SIGN_VERIFY가 ECC KMS 키에 유효한 값일지라도 --key-usage 파라미터는 필수입니다.

aws kms create-key \ --key-spec ECC_NIST_P521 \ --key-usage SIGN_VERIFY

출력:

{ "KeyMetadata": { "Arn": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "AWSAccountId": "111122223333", "CreationDate": "2019-12-02T07:48:55-07:00", "CustomerMasterKeySpec": "ECC_NIST_P521", "Description": "", "Enabled": true, "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "KeyManager": "CUSTOMER", "KeySpec": "ECC_NIST_P521", "KeyState": "Enabled", "KeyUsage": "SIGN_VERIFY", "MultiRegion": false, "Origin": "AWS_KMS", "SigningAlgorithms": [ "ECDSA_SHA_512" ] } }

자세한 내용은 Key AWS Management Service 개발자 안내서의 in AWS KMS 비대칭 키를 참조하세요.

예제 4: HMAC KMS 키 생성

다음 create-key 예제에서는 384비트 HMAC KMS 키를 생성합니다. --key-usage 파라미터 GENERATE_VERIFY_MAC 값은 HMAC KMS 키의 유일한 유효한 값이지만 필수입니다.

aws kms create-key \ --key-spec HMAC_384 \ --key-usage GENERATE_VERIFY_MAC

출력:

{ "KeyMetadata": { "Arn": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "AWSAccountId": "111122223333", "CreationDate": "2022-04-05T14:04:55-07:00", "CustomerMasterKeySpec": "HMAC_384", "Description": "", "Enabled": true, "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "KeyManager": "CUSTOMER", "KeySpec": "HMAC_384", "KeyState": "Enabled", "KeyUsage": "GENERATE_VERIFY_MAC", "MacAlgorithms": [ "HMAC_SHA_384" ], "MultiRegion": false, "Origin": "AWS_KMS" } }

자세한 내용은 Key Management Service 개발자 안내서의 HMAC 키 in AWS KMS를 참조하세요. AWS

예제 4: 다중 리전 기본 KMS 키를 생성하려면

다음 create-key 예시에서는 다중 리전 프라이머리 대칭 암호화 키를 생성합니다. 모든 파라미터의 기본값은 대칭 암호화 키를 생성하기 때문에이 KMS 키에는 --multi-region 파라미터만 필요합니다. The AWS CLI에서 부울 파라미터가 true임을 나타내려면 파라미터 이름만 지정하면 됩니다.

aws kms create-key \ --multi-region

출력:

{ "KeyMetadata": { "Arn": "arn:aws:kms:us-west-2:111122223333:key/mrk-1234abcd12ab34cd56ef12345678990ab", "AWSAccountId": "111122223333", "CreationDate": "2021-09-02T016:15:21-09:00", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "Description": "", "Enabled": true, "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ], "KeyId": "mrk-1234abcd12ab34cd56ef12345678990ab", "KeyManager": "CUSTOMER", "KeySpec": "SYMMETRIC_DEFAULT", "KeyState": "Enabled", "KeyUsage": "ENCRYPT_DECRYPT", "MultiRegion": true, "MultiRegionConfiguration": { "MultiRegionKeyType": "PRIMARY", "PrimaryKey": { "Arn": "arn:aws:kms:us-west-2:111122223333:key/mrk-1234abcd12ab34cd56ef12345678990ab", "Region": "us-west-2" }, "ReplicaKeys": [] }, "Origin": "AWS_KMS" } }

자세한 내용은 Key AWS Management Service 개발자 안내서의 in AWS KMS 비대칭 키를 참조하세요.

예제 5: 가져온 키 구성 요소에 대한 KMS 키 생성

다음 create-key 예제에서는 키 구성 요소가 없는 KMS 키를 생성합니다. 작업이 완료되면 자체 키 구성 요소를 KMS 키로 가져올 수 있습니다. 이 KMS 키를 생성하려면 --origin 파라미터를 로 설정합니다EXTERNAL.

aws kms create-key \ --origin EXTERNAL

출력:

{ "KeyMetadata": { "Arn": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "AWSAccountId": "111122223333", "CreationDate": "2019-12-02T07:48:55-07:00", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "Description": "", "Enabled": false, "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ], "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "KeyManager": "CUSTOMER", "KeySpec": "SYMMETRIC_DEFAULT", "KeyState": "PendingImport", "KeyUsage": "ENCRYPT_DECRYPT", "MultiRegion": false, "Origin": "EXTERNAL" } }

자세한 내용은 Key Management Service 개발자 안내서의 AWS KMS 키에서 키 구성 요소 가져오기를 참조하세요. AWS

예제 6: AWS CloudHSM 키 스토어에서 KMS 키를 생성하려면

다음 create-key 예제에서는 지정된 AWS CloudHSM 키 스토어에 KMS 키를 생성합니다. 작업은 KMS 키와 메타데이터를 in AWS KMS에서 생성하고 사용자 지정 키 스토어와 연결된 AWS CloudHSM 클러스터에 키 구성 요소를 생성합니다. --custom-key-store-id--origin 파라미터가 필요합니다.

aws kms create-key \ --origin AWS_CLOUDHSM \ --custom-key-store-id cks-1234567890abcdef0

출력:

{ "KeyMetadata": { "Arn": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "AWSAccountId": "111122223333", "CloudHsmClusterId": "cluster-1a23b4cdefg", "CreationDate": "2019-12-02T07:48:55-07:00", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "CustomKeyStoreId": "cks-1234567890abcdef0", "Description": "", "Enabled": true, "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ], "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "KeyManager": "CUSTOMER", "KeySpec": "SYMMETRIC_DEFAULT", "KeyState": "Enabled", "KeyUsage": "ENCRYPT_DECRYPT", "MultiRegion": false, "Origin": "AWS_CLOUDHSM" } }

자세한 내용은 AWS Key Management Service 개발자 안내서의 CloudHSM 키 스토어를 참조하세요. AWS

예제 7: 외부 키 스토어에서 KMS 키를 생성하려면

다음 create-key 예제에서는 지정된 외부 키 스토어에 KMS 키를 생성합니다. 이 명령에는 --custom-key-store-id, --origin, --xks-key-id 파라미터가 필요합니다.

--xks-key-id 파라미터는 외부 키 관리자에 있는 기존 대칭 암호화 키의 ID를 지정합니다. 이 키는 KMS 키의 외부 키 구성 요소 역할을 합니다.--origin파라미터 값은 여야 합니다EXTERNAL_KEY_STORE.custom-key-store-id파라미터는 외부 키 스토어 프록시에 연결된 외부 키 스토어를 식별해야 합니다.

aws kms create-key \ --origin EXTERNAL_KEY_STORE \ --custom-key-store-id cks-9876543210fedcba9 \ --xks-key-id bb8562717f809024

출력:

{ "KeyMetadata": { "Arn": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "AWSAccountId": "111122223333", "CreationDate": "2022-12-02T07:48:55-07:00", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "CustomKeyStoreId": "cks-9876543210fedcba9", "Description": "", "Enabled": true, "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ], "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "KeyManager": "CUSTOMER", "KeySpec": "SYMMETRIC_DEFAULT", "KeyState": "Enabled", "KeyUsage": "ENCRYPT_DECRYPT", "MultiRegion": false, "Origin": "EXTERNAL_KEY_STORE", "XksKeyConfiguration": { "Id": "bb8562717f809024" } } }

자세한 내용은 AWS Key Management Service 개발자 안내서의 외부 키 저장소를 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조CreateKey를 참조하세요.

다음 코드 예시에서는 decrypt을 사용하는 방법을 보여 줍니다.

AWS CLI

예제 1: 대칭 KMS 키(Linux 및 macOS)를 사용하여 암호화된 메시지를 복호화하려면

다음 decrypt 명령 예제는 AWS CLI를 사용하여 데이터를 복호화하는 권장 방법을 보여줍니다. 이 버전은 대칭 KMS 키로 데이터를 복호화하는 방법을 보여줍니다.

file.In --ciphertext-blob 파라미터 값을 암호 텍스트에 입력하고 fileb:// 접두사를 사용합니다. 접두사는 CLI에 바이너리 파일에서 데이터를 읽도록 지시합니다. 파일이 현재 디렉터리에 없는 경우 파일의 전체 경로를 입력합니다. 파일에서 AWS CLI 파라미터 값을 읽는 방법에 대한 자세한 내용은 AWS Command Line Tool Blog의 Command Line Interface 사용 설명서 및 로컬 파일 AWS CLI 파라미터 모범 사례<https://docs.aws.amazon.com/cli/ 개발자/https://aws.amazon.com/blogs/-file-parameters/>의 파일 <latest/userguide/cli-usage-parameters-filebest-practices-for-local.html>에서 Word 파라미터 로드를 참조하세요.암호텍스트를 해독하려면 KMS 키를 지정하세요. 대칭 KMS 키를 사용하여 복호화할 때는 --key-id 파라미터가 필요하지 않습니다. AWS KMS는 암호텍스트의 메타데이터에서 데이터를 암호화하는 데 사용된 KMS 키의 키 ID를 가져올 수 있습니다. AWS 하지만 사용하는 KMS 키를 지정하는 것이 항상 모범 사례입니다. 이렇게 하면 의도한 KMS 키를 사용할 수 있으며, 신뢰할 수 없는 KMS 키를 사용하여 실수로 암호 텍스트를 해독하는 것을 방지할 수 있습니다. 일반 텍스트 출력을 텍스트 값으로 요청합니다. --query 파라미터는 출력에서 Plaintext 필드 값만 가져오도록 CLI에 지시합니다. --output 파라미터는 출력을 텍스트로 반환합니다. 일반 텍스트를 Base64로 디코딩하여 파일에 저장합니다. 다음 예시에서는 Plaintext 파라미터 값을 Base64 유틸리티에 파이프(|)로 구분하며 유틸리티가 이를 디코딩합니다. 그런 다음 디코딩된 출력을 ExamplePlaintext 파일로 리디렉션(>)합니다.

이 명령을 실행하기 전에 예제 키 ID를 AWS 계정의 유효한 키 ID로 바꿉니다.

aws kms decrypt \ --ciphertext-blob fileb://ExampleEncryptedFile \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --output text \ --query Plaintext | base64 \ --decode > ExamplePlaintextFile

이 명령은 출력을 생성하지 않습니다. decrypt 명령의 출력은 base64로 디코딩되어 파일에 저장됩니다.

자세한 내용은 AWS Key Management Service API 참조복호화를 참조하세요.

예제 2: 대칭 KMS 키를 사용하여 암호화된 메시지를 복호화하려면(Windows 명령 프롬프트)

다음 예시는 certutil 유틸리티를 사용하여 일반 텍스트 데이터를 base64로 디코딩한다는 점을 제외하면 이전 예시와 동일합니다. 이 프로시저에는 다음 예시와 같이 두 개의 명령이 필요합니다.

이 명령을 실행하기 전에 예제 키 ID를 AWS 계정의 유효한 키 ID로 바꿉니다.

aws kms decrypt ^ --ciphertext-blob fileb://ExampleEncryptedFile ^ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab ^ --output text ^ --query Plaintext > ExamplePlaintextFile.base64

certutil 명령을 실행합니다.

certutil -decode ExamplePlaintextFile.base64 ExamplePlaintextFile

출력:

Input Length = 18 Output Length = 12 CertUtil: -decode command completed successfully.

자세한 내용은 AWS Key Management Service API 참조암호 해독을 참조하세요.

예제 3: 비대칭 KMS 키(Linux 및 macOS)를 사용하여 암호화된 메시지를 복호화하려면

다음 decrypt 명령 예제는 RSA 비대칭 KMS 키로 암호화된 데이터를 복호화하는 방법을 보여줍니다.

비대칭 KMS 키를 사용하는 경우 일반 텍스트를 암호화하는 데 사용되는 알고리즘을 지정하는 encryption-algorithm 파라미터가 필요합니다.

이 명령을 실행하기 전에 예제 키 ID를 AWS 계정의 유효한 키 ID로 바꿉니다.

aws kms decrypt \ --ciphertext-blob fileb://ExampleEncryptedFile \ --key-id 0987dcba-09fe-87dc-65ba-ab0987654321 \ --encryption-algorithm RSAES_OAEP_SHA_256 \ --output text \ --query Plaintext | base64 \ --decode > ExamplePlaintextFile

이 명령은 출력을 생성하지 않습니다. decrypt 명령의 출력은 base64로 디코딩되어 파일에 저장됩니다.

자세한 내용은 Key AWS Management Service 개발자 안내서in AWS KMS 비대칭 키를 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조복호화를 참조하세요.

다음 코드 예시에서는 delete-alias을 사용하는 방법을 보여 줍니다.

AWS CLI

AWS KMS 별칭을 삭제하려면

다음 delete-alias 예시에서는 alias/example-alias 별칭을 삭제합니다. 별칭 이름은 alias/로 시작해야 합니다.

aws kms delete-alias \ --alias-name alias/example-alias

이 명령은 출력을 생성하지 않습니다. 별칭을 찾으려면 list-aliases 명령을 사용하세요.

자세한 내용은 AWS Key Management Service 개발자 안내서의 별칭 삭제를 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조DeleteAlias를 참조하세요.

다음 코드 예시에서는 delete-custom-key-store을 사용하는 방법을 보여 줍니다.

AWS CLI

사용자 지정 키 스토어를 삭제하려면

다음 delete-custom-key-store 예제에서는 지정된 사용자 지정 키 스토어를 삭제합니다.

AWS CloudHSM 키 스토어를 삭제해도 연결된 CloudHSM 클러스터에는 영향을 주지 않습니다. 외부 키 스토어를 삭제해도 연결된 외부 키 스토어 프록시, 외부 키 관리자 또는 외부 키에는 영향을 주지 않습니다.

NOTE: 사용자 지정 키 스토어를 삭제하려면 먼저 사용자 지정 키 스토어의 모든 KMS 키 삭제를 예약한 다음 해당 KMS 키가 삭제될 때까지 기다려야 합니다. 그런 다음 사용자 지정 키 스토어의 연결을 해제해야 합니다. 사용자 지정 키 스토어에서 KMS 키를 찾는 데 도움이 필요하면 AWS Key Management Service 개발자 안내서AWS CloudHSM 키 스토어(API) 삭제를 참조하세요.

delete-custom-key-store \ --custom-key-store-id cks-1234567890abcdef0

이 명령은 출력을 반환하지 않습니다. 사용자 지정 키 스토어가 삭제되었는지 확인하려면 describe-custom-key-stores 명령을 사용합니다.

AWS CloudHSM 키 스토어 삭제에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서AWS CloudHSM 키 스토어 삭제를 참조하세요.

외부 키 스토어 삭제에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서외부 키 스토어 삭제를 참조하세요.

다음 코드 예시에서는 delete-imported-key-material을 사용하는 방법을 보여 줍니다.

AWS CLI

KMS 키에서 가져온 키 구성 요소를 삭제하려면

다음 delete-imported-key-material 예제에서는 KMS 키로 가져온 키 구성 요소를 삭제합니다.

aws kms delete-imported-key-material \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab

이 명령은 출력을 생성하지 않습니다. 키 구성 요소가 삭제되었는지 확인하려면 describe-key 명령을 사용하여 PendingImport 또는의 키 상태를 찾습니다PendingDeletion.

자세한 내용은 Key AWS Management Service 개발자 안내서의 가져온 키 구성 요소 삭제<https://docs.aws.amazon.com/kms/latest/developerguide/importingWord-keys-delete-key-material.html>를 참조하세요.

다음 코드 예시에서는 derive-shared-secret을 사용하는 방법을 보여 줍니다.

AWS CLI

공유 보안 암호를 추출하려면

다음 derive-shared-secret 예제에서는 키 계약 알고리즘을 사용하여 공유 보안 암호를 도출합니다.

값은 인 비대칭 NIST 권장 타원 곡선(ECC) 또는 SM2(중국 리전만 해당) KMS 키 페어를 사용하여 call DeriveSharedSecretKeyUsageKEY_AGREEMENT를 호출해야 합니다.

aws kms derive-shared-secret \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --key-agreement-algorithm ECDH \ --public-key "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvH3Yj0wbkLEpUl95Cv1cJVjsVNSjwGq3tCLnzXfhVwVvmzGN8pYj3U8nKwgouaHbBWNJYjP5VutbbkKS4Kv4GojwZBJyHN17kmxo8yTjRmjR15SKIQ8cqRA2uaERMLnpztIXdZp232PQPbWGxDyXYJ0aJ5EFSag"

출력:

{ "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "SharedSecret": "MEYCIQCKZLWyTk5runarx6XiAkU9gv3lbwPO/pHa+DXFehzdDwIhANwpsIV2g/9SPWLLsF6p/hiSskuIXMTRwqrMdVKWTMHG", "KeyAgreementAlgorithm": "ECDH", "KeyOrigin": "AWS_KMS" }

자세한 내용은 Key Management Service DeriveSharedSecret 참조의 Word를 참조하세요. AWS API

다음 코드 예시에서는 describe-custom-key-stores을 사용하는 방법을 보여 줍니다.

AWS CLI

예제 1: AWS CloudHSM 키 스토어에 대한 세부 정보를 가져오려면

다음 describe-custom-key-store 예제에서는 지정된 AWS CloudHSM 키 스토어에 대한 세부 정보를 표시합니다. 명령은 모든 유형의 사용자 지정 키 스토어에서 동일하지만 출력은 키 스토어 유형과 다르고 외부 키 스토어의 경우 연결 옵션과 다릅니다.

기본적으로이 명령은 계정 및 리전의 모든 사용자 지정 키 스토어에 대한 정보를 표시합니다. 특정 사용자 지정 키 스토어에 대한 정보를 표시하려면 custom-key-store-name 또는 custom-key-store-id 파라미터를 사용합니다.

aws kms describe-custom-key-stores \ --custom-key-store-name ExampleCloudHSMKeyStore

이 명령의 출력에는 연결 상태()를 포함하여 AWS CloudHSM 키 스토어에 대한 유용한 세부 정보가 포함됩니다ConnectionState. 연결 상태가 인 경우 출력FAILED에는 문제를 설명하는 ConnectionErrorCode 필드가 포함됩니다.

출력:

{ "CustomKeyStores": [ { "CloudHsmClusterId": "cluster-1a23b4cdefg", "ConnectionState": "CONNECTED", "CreationDate": "2022-04-05T14:04:55-07:00", "CustomKeyStoreId": "cks-1234567890abcdef0", "CustomKeyStoreName": "ExampleExternalKeyStore", "TrustAnchorCertificate": "<certificate appears here>" } ] }

자세한 내용은 Key Management Service 개발자 안내서의 AWS CloudHSM 키 스토어 보기를 참조하세요. AWS

예제 2: 퍼블릭 엔드포인트 연결이 있는 외부 키 스토어에 대한 세부 정보를 가져오는 방법

다음 describe-custom-key-store 예제에서는 지정된 외부 키 스토어에 대한 세부 정보를 표시합니다. 명령은 모든 유형의 사용자 지정 키 스토어에서 동일하지만 출력은 키 스토어 유형과 다르고 외부 키 스토어의 경우 연결 옵션과 다릅니다.

기본적으로이 명령은 계정 및 리전의 모든 사용자 지정 키 스토어에 대한 정보를 표시합니다. 특정 사용자 지정 키 스토어에 대한 정보를 표시하려면 custom-key-store-name 또는 custom-key-store-id 파라미터를 사용합니다.

aws kms describe-custom-key-stores \ --custom-key-store-id cks-9876543210fedcba9

이 명령의 출력에는 연결 상태()를 포함하여 외부 키 스토어에 대한 유용한 세부 정보가 포함됩니다ConnectionState. 연결 상태가 인 경우 출력FAILED에는 문제를 설명하는 ConnectionErrorCode 필드가 포함됩니다.

출력:

{ "CustomKeyStores": [ { "CustomKeyStoreId": "cks-9876543210fedcba9", "CustomKeyStoreName": "ExampleXKS", "ConnectionState": "CONNECTED", "CreationDate": "2022-12-02T07:48:55-07:00", "CustomKeyStoreType": "EXTERNAL_KEY_STORE", "XksProxyConfiguration": { "AccessKeyId": "ABCDE12345670EXAMPLE", "Connectivity": "PUBLIC_ENDPOINT", "UriEndpoint": "https://myproxy.xks.example.com", "UriPath": "/example-prefix/kms/xks/v1" } } ] }

자세한 내용은 Key Management Service 개발자 안내서의 외부 키 스토어 보기를 참조하세요. AWS

예제 3: VPC 엔드포인트 서비스 연결이 있는 외부 키 스토어에 대한 세부 정보를 가져오려면

다음 describe-custom-key-store 예제에서는 지정된 외부 키 스토어에 대한 세부 정보를 표시합니다. 명령은 모든 유형의 사용자 지정 키 스토어에서 동일하지만 출력은 키 스토어 유형과 다르고 외부 키 스토어의 경우 연결 옵션과 다릅니다.

기본적으로이 명령은 계정 및 리전의 모든 사용자 지정 키 스토어에 대한 정보를 표시합니다. 특정 사용자 지정 키 스토어에 대한 정보를 표시하려면 custom-key-store-name 또는 custom-key-store-id 파라미터를 사용합니다.

aws kms describe-custom-key-stores \ --custom-key-store-id cks-2234567890abcdef0

이 명령의 출력에는 연결 상태()를 포함하여 외부 키 스토어에 대한 유용한 세부 정보가 포함됩니다ConnectionState. 연결 상태가 인 경우 출력FAILED에는 문제를 설명하는 ConnectionErrorCode 필드가 포함됩니다.

출력:

{ "CustomKeyStores": [ { "CustomKeyStoreId": "cks-3234567890abcdef0", "CustomKeyStoreName": "ExampleVPCExternalKeyStore", "ConnectionState": "CONNECTED", "CreationDate": "2022-12-22T07:48:55-07:00", "CustomKeyStoreType": "EXTERNAL_KEY_STORE", "XksProxyConfiguration": { "AccessKeyId": "ABCDE12345670EXAMPLE", "Connectivity": "VPC_ENDPOINT_SERVICE", "UriEndpoint": "https://myproxy-private.xks.example.com", "UriPath": "/kms/xks/v1", "VpcEndpointServiceName": "com.amazonaws.vpce.us-east-1.vpce-svc-example1" } } ] }

자세한 내용은 Key Management Service 개발자 안내서의 외부 키 스토어 보기를 참조하세요. AWS

다음 코드 예시에서는 describe-key을 사용하는 방법을 보여 줍니다.

AWS CLI

예제 1: KMS 키에 대한 자세한 정보를 찾으려면

다음 describe-key 예제에서는 예제 계정 및 리전에서 Amazon S3의 AWS 관리형 키에 대한 자세한 정보를 가져옵니다. 이 명령을 사용하여 AWS 관리형 키 및 고객 관리형 키에 대한 세부 정보를 찾을 수 있습니다.

KMS 키를 지정하려면 key-id 파라미터를 사용합니다. 이 예제에서는 별칭 이름 값을 사용하지만이 명령에서 키 ID, 키 ARN, 별칭 이름 또는 별칭 ARN를 사용할 수 있습니다.

aws kms describe-key \ --key-id alias/aws/s3

출력:

{ "KeyMetadata": { "AWSAccountId": "846764612917", "KeyId": "b8a9477d-836c-491f-857e-07937918959b", "Arn": "arn:aws:kms:us-west-2:846764612917:key/b8a9477d-836c-491f-857e-07937918959b", "CreationDate": 2017-06-30T21:44:32.140000+00:00, "Enabled": true, "Description": "Default KMS key that protects my S3 objects when no other key is defined", "KeyUsage": "ENCRYPT_DECRYPT", "KeyState": "Enabled", "Origin": "AWS_KMS", "KeyManager": "AWS", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ] } }

자세한 내용은 AWS Key Management Service 개발자 안내서의 키 보기를 참조하세요.

예제 2: RSA 비대칭 KMS 키에 대한 세부 정보를 가져오려면

다음 describe-key 예제에서는 서명 및 확인에 사용되는 비대칭 RSA KMS 키에 대한 자세한 정보를 가져옵니다.

aws kms describe-key \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab

출력:

{ "KeyMetadata": { "AWSAccountId": "111122223333", "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "Arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "CreationDate": "2019-12-02T19:47:14.861000+00:00", "CustomerMasterKeySpec": "RSA_2048", "Enabled": false, "Description": "", "KeyState": "Disabled", "Origin": "AWS_KMS", "MultiRegion": false, "KeyManager": "CUSTOMER", "KeySpec": "RSA_2048", "KeyUsage": "SIGN_VERIFY", "SigningAlgorithms": [ "RSASSA_PKCS1_V1_5_SHA_256", "RSASSA_PKCS1_V1_5_SHA_384", "RSASSA_PKCS1_V1_5_SHA_512", "RSASSA_PSS_SHA_256", "RSASSA_PSS_SHA_384", "RSASSA_PSS_SHA_512" ] } }

예 3: 다중 리전 복제본 키에 대한 세부 정보를 가져오는 방법

다음 describe-key 예시에서는 다중 리전 복제본 키에 대한 메타데이터를 가져옵니다. 이 다중 리전 키는 대칭 암호화 키입니다. 모든 다중 리전 키에 대한 describe-key 명령 출력은 프라이머리 키와 모든 해당 복제본에 대한 정보를 반환합니다.

aws kms describe-key \ --key-id arn:aws:kms:ap-northeast-1:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab

출력:

{ "KeyMetadata": { "MultiRegion": true, "AWSAccountId": "111122223333", "Arn": "arn:aws:kms:ap-northeast-1:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab", "CreationDate": "2021-06-28T21:09:16.114000+00:00", "Description": "", "Enabled": true, "KeyId": "mrk-1234abcd12ab34cd56ef1234567890ab", "KeyManager": "CUSTOMER", "KeyState": "Enabled", "KeyUsage": "ENCRYPT_DECRYPT", "Origin": "AWS_KMS", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ], "MultiRegionConfiguration": { "MultiRegionKeyType": "PRIMARY", "PrimaryKey": { "Arn": "arn:aws:kms:us-west-2:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab", "Region": "us-west-2" }, "ReplicaKeys": [ { "Arn": "arn:aws:kms:eu-west-1:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab", "Region": "eu-west-1" }, { "Arn": "arn:aws:kms:ap-northeast-1:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab", "Region": "ap-northeast-1" }, { "Arn": "arn:aws:kms:sa-east-1:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab", "Region": "sa-east-1" } ] } } }

예제 4: HMAC KMS 키에 대한 세부 정보를 가져오려면

다음 describe-key 예제에서는 KMS HMAC Word 키에 대한 자세한 정보를 가져옵니다.

aws kms describe-key \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab

출력:

{ "KeyMetadata": { "AWSAccountId": "123456789012", "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "Arn": "arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab", "CreationDate": "2022-04-03T22:23:10.194000+00:00", "Enabled": true, "Description": "Test key", "KeyUsage": "GENERATE_VERIFY_MAC", "KeyState": "Enabled", "Origin": "AWS_KMS", "KeyManager": "CUSTOMER", "CustomerMasterKeySpec": "HMAC_256", "MacAlgorithms": [ "HMAC_SHA_256" ], "MultiRegion": false } }
  • API 세부 정보는 AWS CLI 명령 참조DescribeKey를 참조하세요.

다음 코드 예시에서는 disable-key-rotation을 사용하는 방법을 보여 줍니다.

AWS CLI

KMS 키의 자동 교체를 비활성화하려면

다음 disable-key-rotation 예제에서는 고객 관리형 KMS 키의 자동 교체를 비활성화합니다. 자동 교체를 다시 활성화하려면 enable-key-rotation 명령을 사용합니다.

aws kms disable-key-rotation \ --key-id arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

이 명령은 출력을 생성하지 않습니다. KMS 키에 자동 교체가 비활성화되어 있는지 확인하려면 get-key-rotation-status 명령을 사용합니다.

자세한 내용은 AWS Key Management Service 개발자 안내서의 키 교체를 참조하세요.

다음 코드 예시에서는 disable-key을 사용하는 방법을 보여 줍니다.

AWS CLI

KMS 키를 일시적으로 비활성화하려면

다음 예제에서는 disable-key 명령을 사용하여 고객 관리형 KMS 키를 비활성화합니다. KMS 키를 다시 활성화하려면 enable-key 명령을 사용합니다.

aws kms disable-key \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab

이 명령은 출력을 생성하지 않습니다.

자세한 내용은 AWS Key Management Service 개발자 안내서의 키 활성화 및 비활성화를 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조DisableKey를 참조하세요.

다음 코드 예시에서는 disconnect-custom-key-store을 사용하는 방법을 보여 줍니다.

AWS CLI

사용자 지정 키 스토어 연결을 해제하려면

다음 disconnect-custom-key-store 예제에서는 AWS CloudHSM 클러스터에서 사용자 지정 키 스토어의 연결을 해제합니다. 키 스토어의 연결을 끊어 문제를 해결하거나, 설정을 업데이트하거나, 키 스토어의 KMS 키가 암호화 작업에 사용되지 않도록 할 수 있습니다.

이 명령은 AWS CloudHSM 키 스토어 및 외부 키 스토어를 포함한 모든 사용자 지정 키 스토어에서 동일합니다.

이 명령을 실행하기 앞서 예제에 나온 사용자 지정 키 스토어 ID를 유효한 ID로 대체합니다.

$ aws kms disconnect-custom-key-store \ --custom-key-store-id cks-1234567890abcdef0

이 명령은 출력을 생성하지 않습니다. 명령이 유효한지 확인하고 describe-custom-key-stores 명령을 사용합니다.

AWS CloudHSM 키 스토어 연결 해제에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서AWS CloudHSM 키 스토어 연결 및 연결 해제를 참조하세요.

외부 키 스토어 연결 해제에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서외부 키 스토어 연결 및 연결 해제를 참조하세요.

다음 코드 예시에서는 enable-key-rotation을 사용하는 방법을 보여 줍니다.

AWS CLI

KMS 키의 자동 교체를 활성화하려면

다음 enable-key-rotation 예제에서는 180일의 교체 기간으로 고객 관리형 KMS 키를 자동으로 교체할 수 있습니다. KMS 키는이 명령이 완료된 날짜로부터 1년(대략 365일) 후, 그 이후에는 매년 교체됩니다.

--key-id 파라미터는 KMS 키를 식별합니다. 이 예제에서는 키 ARN 값을 사용하지만 키 ID 또는 ARN 키의 KMS를 사용할 수 있습니다. --rotation-period-in-days 파라미터는 각 교체 날짜 사이의 일수를 지정합니다. 90~2,560의 값을 지정하세요. 값을 지정하지 않을 경우 기본값은 365일입니다.

aws kms enable-key-rotation \ --key-id arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab \ --rotation-period-in-days 180

이 명령은 출력을 생성하지 않습니다. KMS 키가 활성화되어 있는지 확인하려면 get-key-rotation-status 명령을 사용합니다.

자세한 내용은 AWS Key Management Service 개발자 안내서의 키 교체를 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조EnableKeyRotation를 참조하세요.

다음 코드 예시에서는 enable-key을 사용하는 방법을 보여 줍니다.

AWS CLI

KMS 키를 활성화하려면

다음 enable-key 예시에서는 고객 관리형 키를 활성화합니다. 이 명령과 같은 disable-key 명령을 사용하여 명령을 사용하여 일시적으로 비활성화한 KMS 키를 활성화할 수 있습니다. 또한 삭제가 예약되고 삭제가 취소되어 비활성화된 KMS 키를 활성화하는 데 사용할 수 있습니다.

KMS 키를 지정하려면 key-id 파라미터를 사용합니다. 이 예제에서는 키 ID 값을 사용하지만이 명령에서 키 ID 또는 키 ARN 값을 사용할 수 있습니다.

이 명령을 실행하기 전에 예시에 나온 키 ID를 유효한 키 핸들로 바꾸세요.

aws kms enable-key \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab

이 명령은 출력을 생성하지 않습니다. KMS 키가 활성화되어 있는지 확인하려면 describe-key 명령을 사용합니다. describe-key 출력의 KeyStateEnabled 필드 값을 확인하세요.

자세한 내용은 AWS Key Management Service 개발자 안내서의 키 활성화 및 비활성화를 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조EnableKey를 참조하세요.

다음 코드 예시에서는 encrypt을 사용하는 방법을 보여 줍니다.

AWS CLI

예 1: Linux 또는 macOS에서 파일 콘텐츠를 암호화하는 방법

다음 encrypt 명령은 AWS CLI로 데이터를 암호화하는 권장 방법을 보여줍니다.

aws kms encrypt \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --plaintext fileb://ExamplePlaintextFile \ --output text \ --query CiphertextBlob | base64 \ --decode > ExampleEncryptedFile

이 명령은 여러 가지 작업을 수행합니다.

--plaintext 파라미터를 사용하여 암호화할 데이터를 표시합니다. 이 파라미터 값은 base64로 인코딩되어야 합니다.plaintext파라미터의 값은 base64로 인코딩되거나, 파일에서 바이너리 데이터를 읽도록 AWS CLI에 지시하는 fileb:// 접두사를 사용해야 합니다. 파일이 현재 디렉터리에 없는 경우 파일의 전체 경로를 입력합니다. 예: fileb:///var/tmp/ExamplePlaintextFile 또는 fileb://C:\Temp\ExamplePlaintextFile. 파일에서 AWS CLI 파라미터 값을 읽는 방법에 대한 자세한 내용은 AWS 명령줄 인터페이스 사용 설명서파일에서 파라미터 로드 및 AWS 명령줄 도구 블로그의 로컬 파일 파라미터 모범 사례를 참조하세요. --output--query 파라미터를 사용하여 명령의 출력을 제어합니다. 이러한 파라미터는 암호화된 데이터를 추출합니다. 암호 텍스트라고도 하며, 명령의 출력에서.출력 제어에 대한 자세한 내용은 AWS 명령줄 인터페이스 사용 설명서명령 출력 제어를 참조하세요. base64 유틸리티를 사용하여 추출된 출력을 바이너리 데이터로 디코딩합니다. 성공적인 encrypt 명령으로 반환되는 암호 텍스트는 base64로 인코딩된 텍스트입니다. AWS CLI를 사용하여 복호화하려면 먼저이 텍스트를 복호화해야 합니다. 이진 암호 텍스트를 파일에 저장합니다. 명령의 마지막 부분(> ExampleEncryptedFile)은 이진 암호 텍스트를 파일에 저장하여 복호화를 더 쉽게 만듭니다. AWS CLI를 사용하여 데이터를 복호화하는 예제 명령은 복호화 예제를 참조하세요.

예제 2: the AWS CLI를 사용하여 Windows에서 데이터 암호화

이 예시는 base64 대신 certutil 도구를 사용한다는 점을 제외하면 이전 예와 동일합니다. 이 절차에는 다음 예시와 같이 두 개의 명령이 필요합니다.

aws kms encrypt \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --plaintext fileb://ExamplePlaintextFile \ --output text \ --query CiphertextBlob > C:\Temp\ExampleEncryptedFile.base64 certutil -decode C:\Temp\ExampleEncryptedFile.base64 C:\Temp\ExampleEncryptedFile

예제 3: 비대칭 KMS 키로 암호화

다음 encrypt 명령은 비대칭 KMS 키로 일반 텍스트를 암호화하는 방법을 보여줍니다. --encryption-algorithm 파라미터가 필요합니다. 모든 encrypt CLI 명령과 마찬가지로 plaintext 파라미터는 base64로 인코딩되거나, 파일에서 바이너리 데이터를 읽도록 AWS CLI에 지시하는 fileb:// 접두사를 사용해야 합니다.

aws kms encrypt \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --encryption-algorithm RSAES_OAEP_SHA_256 \ --plaintext fileb://ExamplePlaintextFile \ --output text \ --query CiphertextBlob | base64 \ --decode > ExampleEncryptedFile

이 명령은 출력을 생성하지 않습니다.

  • API 세부 정보는 AWS CLI 명령 참조암호화를 참조하세요.

다음 코드 예시에서는 generate-data-key-pair-without-plaintext을 사용하는 방법을 보여 줍니다.

AWS CLI

ECC NIST P384 비대칭 데이터 키 페어를 생성하려면

다음 generate-data-key-pair-without-plaintext 예제에서는 외부에서 사용할 NIST ECC P384 키 페어를 요청합니다 AWS.

명령은 일반 텍스트 퍼블릭 키와 지정된 KMS 키로 암호화된 프라이빗 키의 사본을 반환합니다. 일반 텍스트 프라이빗 키는 반환되지 않습니다. 암호화된 프라이빗 키를 암호화된 데이터와 함께 안전하게 저장하고, call AWS KMS를 사용하여 프라이빗 키를 사용해야 할 때 복호화할 수 있습니다.

ECC NIST P384 비대칭 데이터 키 페어를 요청하려면 값이 인 key-pair-spec 파라미터를 사용합니다ECC_NIST_P384.

지정하는 KMS 키는 대칭 암호화 KMS 키, 즉 KeySpec 값이 인 KMS 키여야 합니다SYMMETRIC_DEFAULT.

NOTE:이 예제 출력의 값은 표시용으로 잘립니다.

aws kms generate-data-key-pair-without-plaintext \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --key-pair-spec ECC_NIST_P384

출력:

{ "PrivateKeyCiphertextBlob": "AQIDAHi6LtupRpdKl2aJTzkK6FbhOtQkMlQJJH3PdtHvS/y+hAFFxmiD134doUDzMGmfCEtcAAAHaTCCB2UGCSqGSIb3DQEHBqCCB1...", "PublicKey": "MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA3A3eGMyPrvSn7+LdlJE1oUoQV5HpEuHAVbdOyND+NmYDH/mL1OSIEuLrcdZ5hrMH4pk83r40l...", "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "KeyPairSpec": "ECC_NIST_P384" }

PublicKey 및는 base64 인코딩 형식으로 반환PrivateKeyCiphertextBlob됩니다.

자세한 내용은 Key Management Service 개발자 안내서의 데이터 키 페어를 참조하세요. AWS

다음 코드 예시에서는 generate-data-key-pair을 사용하는 방법을 보여 줍니다.

AWS CLI

2048비트 RSA 비대칭 데이터 키 페어를 생성하려면

다음 generate-data-key-pair 예제에서는 외부에서 사용할 2048비트 RSA 비대칭 데이터 키 페어를 요청합니다 AWS. 명령은 즉시 사용하고 삭제할 수 있도록 일반 텍스트 퍼블릭 키와 일반 텍스트 프라이빗 키, 지정된 KMS 키로 암호화된 프라이빗 키의 사본을 반환합니다. 암호화된 프라이빗 키를 암호화된 데이터와 함께 안전하게 저장할 수 있습니다.

2048비트 RSA 비대칭 데이터 키 페어를 요청하려면 값이 인 key-pair-spec 파라미터를 사용합니다RSA_2048.

지정하는 KMS 키는 대칭 암호화 KMS 키, 즉 KeySpec 값이 인 KMS 키여야 합니다SYMMETRIC_DEFAULT.

NOTE:이 예제 출력의 값은 표시용으로 잘립니다.

aws kms generate-data-key-pair \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --key-pair-spec RSA_2048

출력:

{ "PrivateKeyCiphertextBlob": "AQIDAHi6LtupRpdKl2aJTzkK6FbhOtQkMlQJJH3PdtHvS/y+hAFFxmiD134doUDzMGmfCEtcAAAHaTCCB2UGCSqGSIb3DQEHBqCCB1...", "PrivateKeyPlaintext": "MIIG/QIBADANBgkqhkiG9w0BAQEFAASCBucwggbjAgEAAoIBgQDcDd4YzI+u9Kfv4t2UkTWhShBXkekS4cBVt07I0P42ZgMf+YvU5IgS4ut...", "PublicKey": "MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA3A3eGMyPrvSn7+LdlJE1oUoQV5HpEuHAVbdOyND+NmYDH/mL1OSIEuLrcdZ5hrMH4pk83r40l...", "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "KeyPairSpec": "RSA_2048" }

PublicKey, PrivateKeyPlaintext및는 base64 인코딩 형식으로 반환PrivateKeyCiphertextBlob됩니다.

자세한 내용은 Key Management Service 개발자 안내서의 데이터 키 페어를 참조하세요. AWS

다음 코드 예시에서는 generate-data-key-without-plaintext을 사용하는 방법을 보여 줍니다.

AWS CLI

일반 텍스트 키 없이 256비트 대칭 데이터 키를 생성하는 방법

다음 generate-data-key-without-plaintext 예시에서는 AWS외부에서 사용할 256비트 대칭 데이터 키의 암호화된 사본을 요청합니다. 사용할 준비가 되면 call AWS KMS를 사용하여 데이터 키를 복호화할 수 있습니다.

256비트 데이터 키를 요청하려면 값이 AES_256key-spec 파라미터를 사용하세요. 128비트 데이터 키를 요청하려면 값이 AES_128key-spec 파라미터를 사용하세요. 다른 모든 데이터 키 길이에는 number-of-bytes 파라미터를 사용하세요.

지정하는 KMS 키는 대칭 암호화 KMS 키, 즉 키 사양 값이 KMS_DEFAULT인 SYMMETRIC 키여야 합니다.

aws kms generate-data-key-without-plaintext \ --key-id "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" \ --key-spec AES_256

출력:

{ "CiphertextBlob": "AQEDAHjRYf5WytIc0C857tFSnBaPn2F8DgfmThbJlGfR8P3WlwAAAH4wfAYJKoZIhvcNAQcGoG8wbQIBADBoBgkqhkiG9w0BBwEwHgYJYIZIAWUDBAEuMBEEDEFogL", "KeyId": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" }

CiphertextBlob(암호화된 데이터 키)은 base64로 인코딩된 형식으로 반환됩니다.

자세한 내용은 AWS Key Management Service 개발자 안내서의 데이터 키를 참조하세요.

다음 코드 예시에서는 generate-data-key을 사용하는 방법을 보여 줍니다.

AWS CLI

예 1: 256비트 대칭 데이터 키를 생성하는 방법

다음 generate-data-key 예제에서는 외부에서 사용할 256비트 대칭 데이터 키를 요청합니다 AWS. 명령은 즉시 사용하고 삭제할 수 있는 일반 텍스트 데이터 키와 지정된 KMS 키로 암호화된 해당 데이터 키의 사본을 반환합니다. 암호화한 데이터 키를 암호화한 데이터와 함께 안전하게 저장할 수 있습니다.

256비트 데이터 키를 요청하려면 값이 AES_256key-spec 파라미터를 사용하세요. 128비트 데이터 키를 요청하려면 값이 AES_128key-spec 파라미터를 사용하세요. 다른 모든 데이터 키 길이에는 number-of-bytes 파라미터를 사용하세요.

지정하는 KMS 키는 대칭 암호화 KMS 키, 즉 키 사양 값이 KMS_DEFAULT인 SYMMETRIC 키여야 합니다.

aws kms generate-data-key \ --key-id alias/ExampleAlias \ --key-spec AES_256

출력:

{ "Plaintext": "VdzKNHGzUAzJeRBVY+uUmofUGGiDzyB3+i9fVkh3piw=", "KeyId": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "CiphertextBlob": "AQEDAHjRYf5WytIc0C857tFSnBaPn2F8DgfmThbJlGfR8P3WlwAAAH4wfAYJKoZIhvcNAQcGoG8wbQIBADBoBgkqhkiG9w0BBwEwHgYJYIZIAWUDBAEuMBEEDEFogLqPWZconQhwHAIBEIA7d9AC7GeJJM34njQvg4Wf1d5sw0NIo1MrBqZa+YdhV8MrkBQPeac0ReRVNDt9qleAt+SHgIRF8P0H+7U=" }

Plaintext(일반 텍스트 데이터 키) 및 CiphertextBlob(암호화된 데이터 키)은 base64로 인코딩된 형식으로 반환됩니다.

자세한 내용은 Key AWS Management Service 개발자 안내서의 데이터 키 <https://docs.aws.amazon.com/kms/latest/developerguide/conceptsWord.html#data-keys를 참조하세요.

예 2: 512비트 대칭 데이터 키를 생성하는 방법

다음 generate-data-key 예시에서는 암호화 및 복호화를 위한 512비트 대칭 데이터 키를 요청합니다. 명령은 즉시 사용 및 삭제할 수 있는 일반 텍스트 데이터 키와 지정된 KMS 키로 암호화된 해당 데이터 키의 사본을 반환합니다. 암호화한 데이터 키를 암호화한 데이터와 함께 안전하게 저장할 수 있습니다.

128비트 또는 256비트가 아닌 키 길이를 요청하려면 number-of-bytes 파라미터를 사용하세요. 512비트 데이터 키를 요청하기 위해 다음 예시에서는 값이 64(바이트)인 number-of-bytes 파라미터를 사용합니다.

지정하는 KMS 키는 대칭 암호화 KMS 키, 즉 키 사양 값이 KMS_DEFAULT인 SYMMETRIC 키여야 합니다.

NOTE:이 예제 출력의 값은 표시용으로 잘립니다.

aws kms generate-data-key \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --number-of-bytes 64

출력:

{ "CiphertextBlob": "AQIBAHi6LtupRpdKl2aJTzkK6FbhOtQkMlQJJH3PdtHvS/y+hAEnX/QQNmMwDfg2korNMEc8AAACaDCCAmQGCSqGSIb3DQEHBqCCAlUwggJRAgEAMIICSgYJKoZ...", "Plaintext": "ty8Lr0Bk6OF07M2BWt6qbFdNB+G00ZLtf5MSEb4al3R2UKWGOp06njAwy2n72VRm2m7z/Pm9Wpbvttz6a4lSo9hgPvKhZ5y6RTm4OovEXiVfBveyX3DQxDzRSwbKDPk/...", "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" }

Plaintext(일반 텍스트 데이터 키) 및 CiphertextBlob(암호화된 데이터 키)은 base64로 인코딩된 형식으로 반환됩니다.

자세한 내용은 Key AWS Management Service 개발자 안내서의 데이터 키 <https://docs.aws.amazon.com/kms/latest/developerguide/conceptsWord.html#data-keys를 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조GenerateDataKey를 참조하세요.

다음 코드 예시에서는 generate-random을 사용하는 방법을 보여 줍니다.

AWS CLI

예제 1: 256비트 랜덤 바이트 문자열(Linux 또는 macOs) 생성

다음 generate-random 예시에서는 256비트(32바이트), base64로 인코딩된 무작위 바이트 문자열을 생성합니다. 이 예시에서는 바이트 문자열을 디코딩하여 무작위 파일에 저장합니다.

이 명령을 실행할 때는 number-of-bytes 파라미터를 사용하여 무작위 값의 길이를 바이트 단위로 지정해야 합니다.

이 명령을 실행할 때 KMS 키를 지정하지 않습니다. 무작위 바이트 문자열은 KMS 키와 관련이 없습니다.

기본적으로 AWS KMS는 무작위 번호를 생성합니다. 하지만 사용자 지정 키 스토어<https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html>를 지정하면 사용자 지정 키 스토어와 연결된 AWS CloudHSM 클러스터에 무작위 바이트 문자열이 생성됩니다.

이 예시에서는 다음 파라미터와 값을 사용합니다.

값이 인 필수 --number-of-bytes 파라미터를 사용하여 32바이트(256비트)를 32 요청합니다. string.It 값이 인 --output 파라미터를 사용하여 출력을 텍스트로 반환하도록 AWS CLItext를 지시합니다. JSON.It은 --query parameter를 사용하여 Plaintext response.It 파이프( | )에서 base64 유틸리티에 대한 명령의 출력을 추출합니다. 는 추출된 output.It 리디렉션 연산자( > )를 사용하여 디코딩된 바이트 문자열을 ExampleRandom file.It 리디렉션 연산자( > )를 사용하여 바이너리 암호 텍스트를 파일에 저장합니다.

aws kms generate-random \ --number-of-bytes 32 \ --output text \ --query Plaintext | base64 --decode > ExampleRandom

이 명령은 출력을 생성하지 않습니다.

자세한 내용은 Key Management Service GenerateRandom 참조의 Word를 참조하세요. AWS API

예 2: 256비트 무작위 수를 생성하는 방법(Windows 명령 프롬프트)

다음 예시에서는 generate-random 명령을 사용하여 256비트(32바이트), base64로 인코딩된 무작위 바이트 문자열을 생성합니다. 이 예시에서는 바이트 문자열을 디코딩하여 무작위 파일에 저장합니다. 이 예시는 Windows의 certutil 유틸리티를 사용하여 무작위 바이트 문자열을 base64로 디코딩한 다음 파일에 저장한다는 점을 제외하면 이전 예와 동일합니다.

먼저 base64로 인코딩된 무작위 바이트 문자열을 생성하여 임시 파일 ExampleRandom.base64에 저장합니다.

aws kms generate-random \ --number-of-bytes 32 \ --output text \ --query Plaintext > ExampleRandom.base64

generate-random 명령의 출력이 파일에 저장되기 때문에 이 예시에서는 출력이 생성되지 않습니다.

이제 certutil -decode 명령을 사용하여 ExampleRandom.base64 파일에서 base64로 인코딩된 바이트 문자열을 디코딩합니다. 그런 다음 디코딩된 바이트 문자열을 ExampleRandom 파일에 저장합니다.

certutil -decode ExampleRandom.base64 ExampleRandom

출력:

Input Length = 18 Output Length = 12 CertUtil: -decode command completed successfully.

자세한 내용은 Key Management Service GenerateRandom 참조의 Word를 참조하세요. AWS API

  • API 세부 정보는 AWS CLI 명령 참조GenerateRandom를 참조하세요.

다음 코드 예시에서는 get-key-policy을 사용하는 방법을 보여 줍니다.

AWS CLI

한 KMS 키에서 다른 KMS 키로 키 정책을 복사하려면

다음 get-key-policy 예제에서는 하나의 KMS 키에서 키 정책을 가져와 텍스트 파일에 저장합니다. 그런 다음 텍스트 파일을 정책 입력으로 사용하여 다른 KMS 키의 정책을 대체합니다.

--policy 파라미터에는 문자열이 put-key-policy 필요하므로 --output text 옵션을 사용하여 출력을 JSON 대신 텍스트 문자열로 반환해야 합니다.

aws kms get-key-policy \ --policy-name default \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --query Policy \ --output text > policy.txt aws kms put-key-policy \ --policy-name default \ --key-id 0987dcba-09fe-87dc-65ba-ab0987654321 \ --policy file://policy.txt

이 명령은 출력을 생성하지 않습니다.

자세한 내용은 PutKeyPolicy AWS 참조의 API KMS를 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조GetKeyPolicy를 참조하세요.

다음 코드 예시에서는 get-key-rotation-status을 사용하는 방법을 보여 줍니다.

AWS CLI

KMS 키의 교체 상태를 검색합니다.

다음 get-key-rotation-status 예제에서는 자동 교체 활성화 여부, 교체 기간 및 다음 예정된 교체 날짜를 포함하여 지정된 KMS 키의 교체 상태에 대한 정보를 반환합니다. 고객 관리형 KMS 키 및 AWS 관리형 KMS 키에서이 명령을 사용할 수 있습니다. 그러나 모든 AWS 관리형 KMS 키는 매년 자동으로 교체됩니다.

aws kms get-key-rotation-status \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab

출력:

{ "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "KeyRotationEnabled": true, "NextRotationDate": "2024-02-14T18:14:33.587000+00:00", "RotationPeriodInDays": 365 }

자세한 내용은 AWS Key Management Service 개발자 안내서의 키 교체를 참조하세요.

다음 코드 예시에서는 get-parameters-for-import을 사용하는 방법을 보여 줍니다.

AWS CLI

키 구성 요소를 KMS 키로 가져오는 데 필요한 항목을 가져오려면

다음 get-parameters-for-import 예제에서는 키 구성 요소를 KMS 키로 가져오는 데 필요한 퍼블릭 키와 가져오기 토큰을 가져옵니다. import-key-material 명령을 사용할 때는 동일한 get-parameters-for-import 명령으로 반환된 퍼블릭 키로 암호화된 가져오기 토큰과 키 구성 요소를 사용해야 합니다. 또한이 명령에서 지정하는 래핑 알고리즘은 퍼블릭 키로 키 구성 요소를 암호화하는 데 사용하는 알고리즘이어야 합니다.

KMS 키를 지정하려면 key-id 파라미터를 사용합니다. 이 예제에서는 키 ID를 사용하지만이 명령에서 키 ID 또는 키 ARN를 사용할 수 있습니다.

aws kms get-parameters-for-import \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --wrapping-algorithm RSAES_OAEP_SHA_256 \ --wrapping-key-spec RSA_2048

출력:

{ "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "PublicKey": "<public key base64 encoded data>", "ImportToken": "<import token base64 encoded data>", "ParametersValidTo": 1593893322.32 }

자세한 내용은 AWS Key Management Service 개발자 안내서의 퍼블릭 키 다운로드 및 토큰 가져오기를 참조하세요.

다음 코드 예시에서는 get-public-key을 사용하는 방법을 보여 줍니다.

AWS CLI

예제 1: 비대칭 KMS 키의 퍼블릭 키를 다운로드하려면

다음 get-public-key 예제에서는 비대칭 KMS 키의 퍼블릭 키를 다운로드합니다.

퍼블릭 키를 반환하는 것 외에도 출력에는 키 사용 및 지원되는 암호화 알고리즘을 포함하여 퍼블릭 키를 AWS KMS 외부에서 안전하게 사용하는 데 필요한 정보가 포함됩니다.

aws kms get-public-key \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab

출력:

{ "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "PublicKey": "jANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAl5epvg1/QtJhxSi2g9SDEVg8QV/...", "CustomerMasterKeySpec": "RSA_4096", "KeyUsage": "ENCRYPT_DECRYPT", "EncryptionAlgorithms": [ "RSAES_OAEP_SHA_1", "RSAES_OAEP_SHA_256" ] }

AWS KMS에서 비대칭 KMS 키를 사용하는 방법에 대한 자세한 내용은 AWS Key Management Service Word API 참조대칭 및 비대칭 키 사용을 참조하세요.

예제 2: 퍼블릭 키를 DER 형식으로 변환(Linux 및 macOS)

다음 get-public-key 예제에서는 비대칭 KMS 키의 퍼블릭 키를 다운로드하여 DER 파일에 저장합니다.

AWS CLI에서 get-public-key 명령을 사용하면 Base64-encoded로 인코딩된 DER 인코딩된 X.509 퍼블릭 키를 반환합니다. 이 예제에서는 PublicKey 속성 값을 텍스트로 가져옵니다. Base64-decodesPublicKey하고 public_key.der 파일에 저장합니다. output 파라미터는 출력을 JSON 대신 텍스트로 반환합니다. --query 파라미터는 퍼블릭 키를 AWS KMS 외부에서 안전하게 사용하는 데 필요한 PublicKey 속성이 아닌 속성만 가져옵니다.

이 명령을 실행하기 전에 예제 키 ID를 AWS 계정의 유효한 키 ID로 바꿉니다.

aws kms get-public-key \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --output text \ --query PublicKey | base64 --decode > public_key.der

이 명령은 출력을 생성하지 않습니다.

AWS KMS에서 비대칭 KMS 키 사용에 대한 자세한 내용은 AWS Key Management Service Word API 참조대칭 및 비대칭 키 사용을 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조GetPublicKey를 참조하세요.

다음 코드 예시에서는 import-key-material을 사용하는 방법을 보여 줍니다.

AWS CLI

키 구성 요소를 KMS 키로 가져오려면

다음 import-key-material 예제에서는 키 구성 요소 없이 생성된 KMS 키에 키 구성 요소를 업로드합니다. KMS 키의 키 상태는 여야 합니다PendingImport.

이 명령은 get-parameters-for-import 명령이 반환한 퍼블릭 키로 암호화된 키 구성 요소를 사용합니다. 또한 동일한 get-parameters-for-import 명령의 가져오기 토큰을 사용합니다.

expiration-model 파라미터는 키 구성 요소가 valid-to 파라미터에 지정된 날짜 및 시간에 자동으로 만료됨을 나타냅니다. 키 구성 요소가 만료되면 AWS KMS는 키 구성 요소를 삭제하고 KMS 키의 키 상태가 로 변경Pending import되고 KMS 키를 사용할 수 없게 됩니다. KMS 키를 복원하려면 동일한 키 구성 요소를 다시 가져와야 합니다. 다른 키 구성 요소를 사용하려면 새 KMS 키를 생성해야 합니다.

이 명령을 실행하기 전에 예제 키 ID를 AWS 계정의 유효한 키 ID 또는 키 ARN로 바꿉니다.

aws kms import-key-material \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --encrypted-key-material fileb://EncryptedKeyMaterial.bin \ --import-token fileb://ImportToken.bin \ --expiration-model KEY_MATERIAL_EXPIRES \ --valid-to 2021-09-21T19:00:00Z

이 명령은 출력을 생성하지 않습니다.

키 구성 요소 가져오기에 대한 자세한 내용은 Key AWS Management Service 개발자 안내서의 키 구성 요소 가져오기를 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조ImportKeyMaterial를 참조하세요.

다음 코드 예시에서는 list-aliases을 사용하는 방법을 보여 줍니다.

AWS CLI

예제 1: AWS 계정 및 리전의 모든 별칭을 나열하려면

다음 예제에서는 list-aliases 명령을 사용하여 AWS 계정의 기본 리전에 있는 모든 별칭을 나열합니다. 출력에는 AWS 관리형 KMS 키 및 고객 관리KMS 키와 연결된 별칭이 포함됩니다.

aws kms list-aliases

출력:

{ "Aliases": [ { "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/testKey", "AliasName": "alias/testKey", "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab" }, { "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/FinanceDept", "AliasName": "alias/FinanceDept", "TargetKeyId": "0987dcba-09fe-87dc-65ba-ab0987654321" }, { "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/aws/dynamodb", "AliasName": "alias/aws/dynamodb", "TargetKeyId": "1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d" }, { "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/aws/ebs", "AliasName": "alias/aws/ebs", "TargetKeyId": "0987ab65-43cd-21ef-09ab-87654321cdef" }, ... ] }

예제 2: 특정 KMS 키의 모든 별칭을 나열하려면

다음 예제에서는 list-aliases 명령과 해당 key-id 파라미터를 사용하여 특정 KMS 키와 연결된 모든 별칭을 나열합니다.

각 별칭은 하나의 KMS 키에만 연결되지만 KMS 키에는 여러 개의 별칭이 있을 수 있습니다. 이 명령은 AWS KMS 콘솔에 각 KMS 키에 대해 하나의 별칭만 나열되므로 매우 유용합니다. KMS 키의 모든 별칭을 찾으려면 list-aliases 명령을 사용해야 합니다.

이 예제에서는 --key-id 파라미터에 대한 KMS 키의 키 ID를 사용하지만이 명령에서 키 ID, 키 ARN, 별칭 이름 또는 별칭 ARN를 사용할 수 있습니다.

aws kms list-aliases --key-id 1234abcd-12ab-34cd-56ef-1234567890ab

출력:

{ "Aliases": [ { "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/oregon-test-key", "AliasName": "alias/oregon-test-key" }, { "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/project121-test", "AliasName": "alias/project121-test" } ] }

자세한 내용은 AWS Key Management Service 개발자 안내서의 별칭으로 작업을 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조ListAliases를 참조하세요.

다음 코드 예시에서는 list-grants을 사용하는 방법을 보여 줍니다.

AWS CLI

AWS KMS 키에서 권한 부여를 보려면

다음 list-grants 예제에서는 계정의 Amazon DynamoDB에 대해 지정된 AWS 관리형 KMS 키에 대한 모든 권한을 표시합니다. 이 권한 부여를 통해 DynamoDB는 사용자를 대신하여 KMS 키를 사용하여 디스크에 쓰기 전에 DynamoDB 테이블을 암호화할 수 있습니다. 이와 같은 명령을 사용하여 AWS 계정 및 리전의 AWS 관리형 KMS 키 및 고객 관리형 KMS 키에 대한 권한 부여를 볼 수 있습니다.

이 명령은 키 ID가 있는 key-id 파라미터를 사용하여 KMS 키를 식별합니다. 키 ID 또는 키 ARN를 사용하여 KMS 키를 식별할 수 있습니다. AWS 관리ARN 키의 키 ID 또는 키 KMS를 가져오려면 list-keys 또는 list-aliases 명령을 사용합니다.

aws kms list-grants \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab

출력에 따르면 권한 부여는 Amazon DynamoDB에 암호화 작업에 KMS 키를 사용할 수 있는 권한을 부여하고 Word KMS 키(DescribeKey)에 대한 세부 정보를 보고 권한 부여()를 사용할 수 있는 권한을 부여합니다RetireGrant. EncryptionContextSubset 제약 조건은 이러한 권한을 지정된 암호화 컨텍스트 페어를 포함하는 요청으로 제한합니다. 따라서 권한 부여의 권한은 지정된 계정 및 DynamoDB 테이블에만 유효합니다.

{ "Grants": [ { "Constraints": { "EncryptionContextSubset": { "aws:dynamodb:subscriberId": "123456789012", "aws:dynamodb:tableName": "Services" } }, "IssuingAccount": "arn:aws:iam::123456789012:root", "Name": "8276b9a6-6cf0-46f1-b2f0-7993a7f8c89a", "Operations": [ "Decrypt", "Encrypt", "GenerateDataKey", "ReEncryptFrom", "ReEncryptTo", "RetireGrant", "DescribeKey" ], "GrantId": "1667b97d27cf748cf05b487217dd4179526c949d14fb3903858e25193253fe59", "KeyId": "arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab", "RetiringPrincipal": "dynamodb.us-west-2.amazonaws.com", "GranteePrincipal": "dynamodb.us-west-2.amazonaws.com", "CreationDate": "2021-05-13T18:32:45.144000+00:00" } ] }

자세한 내용은 AWS Key Management Service 개발자 안내서Grants in AWS KMS를 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조ListGrants를 참조하세요.

다음 코드 예시에서는 list-key-policies을 사용하는 방법을 보여 줍니다.

AWS CLI

KMS 키의 키 정책 이름을 가져오려면

다음 list-key-policies 예시에서는 예시 계정 및 리전의 고객 관리형 키에 대한 키 정책 이름을 가져옵니다. 이 명령을 사용하여 AWS 관리형 키 및 고객 관리형 키에 대한 키 정책의 이름을 찾을 수 있습니다.

유효한 키 정책 이름은 default뿐이므로 이 명령은 유용하지 않습니다.

KMS 키를 지정하려면 key-id 파라미터를 사용합니다. 이 예제에서는 키 ID 값을 사용하지만이 명령에서 키 ID 또는 키 ARN를 사용할 수 있습니다.

aws kms list-key-policies \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab

출력:

{ "PolicyNames": [ "default" ] }

AWS KMS 키 정책에 대한 자세한 내용은 Key Management Service 개발자 안내서의 AWS KMS에서 키 정책 사용을 참조하세요. AWS

  • API 세부 정보는 AWS CLI 명령 참조ListKeyPolicies를 참조하세요.

다음 코드 예시에서는 list-key-rotations을 사용하는 방법을 보여 줍니다.

AWS CLI

완료된 모든 키 구성 요소 교체에 대한 정보를 검색하려면

다음 list-key-rotations 예제에서는 지정된 KMS 키에 대해 완료된 모든 키 구성 요소 교체에 대한 정보를 나열합니다.

aws kms list-key-rotations \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab

출력:

{ "Rotations": [ { "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "RotationDate": "2024-03-02T10:11:36.564000+00:00", "RotationType": "AUTOMATIC" }, { "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "RotationDate": "2024-04-05T15:14:47.757000+00:00", "RotationType": "ON_DEMAND" } ], "Truncated": false }

자세한 내용은 AWS Key Management Service 개발자 안내서의 키 교체를 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조ListKeyRotations를 참조하세요.

다음 코드 예시에서는 list-keys을 사용하는 방법을 보여 줍니다.

AWS CLI

계정 및 리전에서 KMS 키를 가져오려면

다음 list-keys 예제에서는 계정 및 리전에서 KMS 키를 가져옵니다. 이 명령은 AWS 관리형 키와 고객 관리형 키를 모두 반환합니다.

aws kms list-keys

출력:

{ "Keys": [ { "KeyArn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab" }, { "KeyArn": "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321", "KeyId": "0987dcba-09fe-87dc-65ba-ab0987654321" }, { "KeyArn": "arn:aws:kms:us-east-2:111122223333:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d", "KeyId": "1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d" } ] }

자세한 내용은 AWS Key Management Service 개발자 안내서의 키 보기를 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조ListKeys를 참조하세요.

다음 코드 예시에서는 list-resource-tags을 사용하는 방법을 보여 줍니다.

AWS CLI

KMS 키에서 태그를 가져오려면

다음 list-resource-tags 예제에서는 KMS 키에 대한 태그를 가져옵니다. KMS 키에 리소스 태그를 추가하거나 교체하려면 tag-resource 명령을 사용합니다. 출력에 따르면이 KMS 키에는 각각 키와 값이 있는 리소스 태그가 두 개 있습니다.

KMS 키를 지정하려면 key-id 파라미터를 사용합니다. 이 예제에서는 키 ID 값을 사용하지만이 명령에서 키 ID 또는 키 ARN를 사용할 수 있습니다.

aws kms list-resource-tags \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab

출력:

{ "Tags": [ { "TagKey": "Dept", "TagValue": "IT" }, { "TagKey": "Purpose", "TagValue": "Test" } ], "Truncated": false }

in AWS KMS에서 태그를 사용하는 방법에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서키 태그 지정을 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조ListResourceTags를 참조하세요.

다음 코드 예시에서는 list-retirable-grants을 사용하는 방법을 보여 줍니다.

AWS CLI

보안 주체가 사용 중지할 수 있는 권한 부여를 보려면

다음 list-retirable-grants 예제에서는 ExampleAdmin 사용자가 AWS 계정 및 리전의 KMS 키에서 사용 중지할 수 있는 모든 권한을 표시합니다. 이 명령과 같은 명령을 사용하여 계정 보안 주체가 AWS 계정 및 리전의 KMS 키에서 사용 중지할 수 있는 권한을 볼 수 있습니다.

필수 retiring-principal 파라미터의 값은 계정, 사용자 또는 역할의 Amazon 리소스 이름(ARN)이어야 합니다.

서비스가 사용 중지된 보안 주체일 수 있더라도이 명령retiring-principal에서 값에 대한 서비스를 지정할 수 없습니다. 특정 서비스가 사용 중지 보안 주체인 권한을 찾으려면 list-grants 명령을 사용합니다.

출력은 ExampleAdmin 사용자가 계정과 리전의 서로 다른 두 KMS 키에 대한 권한 부여를 중지할 수 있는 권한이 있음을 보여줍니다. 사용 중지된 보안 주체 외에도 계정은 계정의 모든 권한 부여를 사용 중지할 수 있는 권한이 있습니다.

aws kms list-retirable-grants \ --retiring-principal arn:aws:iam::111122223333:user/ExampleAdmin

출력:

{ "Grants": [ { "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "GrantId": "156b69c63cb154aa21f59929ff19760717be8d9d82b99df53e18b94a15a5e88e", "Name": "", "CreationDate": 2021-01-14T20:17:36.419000+00:00, "GranteePrincipal": "arn:aws:iam::111122223333:user/ExampleUser", "RetiringPrincipal": "arn:aws:iam::111122223333:user/ExampleAdmin", "IssuingAccount": "arn:aws:iam::111122223333:root", "Operations": [ "Encrypt" ], "Constraints": { "EncryptionContextSubset": { "Department": "IT" } } }, { "KeyId": "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321", "GrantId": "8c94d1f12f5e69f440bae30eaec9570bb1fb7358824f9ddfa1aa5a0dab1a59b2", "Name": "", "CreationDate": "2021-02-02T19:49:49.638000+00:00", "GranteePrincipal": "arn:aws:iam::111122223333:role/ExampleRole", "RetiringPrincipal": "arn:aws:iam::111122223333:user/ExampleAdmin", "IssuingAccount": "arn:aws:iam::111122223333:root", "Operations": [ "Decrypt" ], "Constraints": { "EncryptionContextSubset": { "Department": "IT" } } } ], "Truncated": false }

자세한 내용은 AWS Key Management Service 개발자 안내서Grants in AWS KMS를 참조하세요.

다음 코드 예시에서는 put-key-policy을 사용하는 방법을 보여 줍니다.

AWS CLI

KMS 키의 키 정책을 변경하려면

다음 put-key-policy 예시에서는 고객 관리형 키의 키 정책을 변경합니다.

시작하려면 키 정책을 생성하고 로컬 JSON 파일에 저장합니다. 이 예시에서 파일은 key_policy.json입니다. 키 정책을 policy 파라미터의 문자열 값으로 지정할 수도 있습니다.

이 키 정책의 첫 번째 문은 AWS 계정에 IAM 정책을 사용하여 KMS 키에 대한 액세스를 제어할 수 있는 권한을 부여합니다. 두 번째 문은 test-user 사용자에게 KMS 키에서 describe-keylist-keys 명령을 실행할 수 있는 권한을 부여합니다.

key_policy.json의 콘텐츠:

{ "Version" : "2012-10-17", "Id" : "key-default-1", "Statement" : [ { "Sid" : "Enable IAM User Permissions", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:root" }, "Action" : "kms:*", "Resource" : "*" }, { "Sid" : "Allow Use of Key", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:user/test-user" }, "Action" : [ "kms:DescribeKey", "kms:ListKeys" ], "Resource" : "*" } ] }

KMS 키를 식별하기 위해이 예제에서는 키 ID를 사용하지만 키 ARN를 사용할 수도 있습니다. 키 정책을 지정하기 위해 이 명령은 policy 파라미터를 사용합니다. 정책이 파일에 있음을 나타내기 위해 필수 file:// 접두사를 사용합니다. 이 접두사는 지원되는 모든 운영 체제에서 파일을 식별하는 데 필요합니다. 마지막으로, 이 명령은 값이 defaultpolicy-name 파라미터를 사용합니다. 정책 이름을 지정하지 않을 경우 기본값은 default입니다. 유일한 유효 값은 default입니다.

aws kms put-key-policy \ --policy-name default \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --policy file://key_policy.json

이 명령은 출력을 생성하지 않습니다. 명령이 유효한지 확인하려면 get-key-policy 명령을 사용하세요. 다음 예제 명령은 동일한 KMS 키에 대한 키 정책을 가져옵니다. 값이 textoutput 파라미터는 읽기 쉬운 텍스트 형식을 반환합니다.

aws kms get-key-policy \ --policy-name default \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --output text

출력:

{ "Version" : "2012-10-17", "Id" : "key-default-1", "Statement" : [ { "Sid" : "Enable IAM User Permissions", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:root" }, "Action" : "kms:*", "Resource" : "*" }, { "Sid" : "Allow Use of Key", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:user/test-user" }, "Action" : [ "kms:Describe", "kms:List" ], "Resource" : "*" } ] }

자세한 내용은 AWS Key Management Service 개발자 안내서의 키 정책 변경을 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조PutKeyPolicy를 참조하세요.

다음 코드 예시에서는 re-encrypt을 사용하는 방법을 보여 줍니다.

AWS CLI

예제 1: 다른 대칭 KMS 키(Linux 및 macOS)로 암호화된 메시지를 다시 암호화하려면

다음 re-encrypt 명령 예제는 AWS CLI로 데이터를 다시 암호화하는 권장 방법을 보여줍니다.

file.In --ciphertext-blob 파라미터 값을 암호 텍스트에 입력하고 fileb:// 접두사를 사용합니다. 접두사는 CLI에 바이너리 파일에서 데이터를 읽도록 지시합니다. 파일이 현재 디렉터리에 없는 경우 파일의 전체 경로를 입력합니다. 파일에서 AWS CLI 파라미터 값을 읽는 방법에 대한 자세한 내용은 AWS Command Line Tool Blog의 Command Line Interface 사용 설명서 및 로컬 파일 AWS CLI 파라미터 모범 사례<https://docs.aws.amazon.com/cli/ 개발자/Word-file-parameters/>의 파일 <https://aws.amazon.com/blogs/latest/userguide/cli-usage-parameters-filebest-practices-for-local.html>에서 Word 파라미터 로드를 참조하세요. 암호 텍스트를 해독하는 소스 KMS 키를 지정하세요. 대칭 암호화 KMS 키를 사용하여 복호화할 때는 --source-key-id 파라미터가 필요하지 않습니다. AWS KMS는 암호 텍스트 blob의 메타데이터에서 데이터를 암호화하는 데 사용된 KMS 키를 가져올 수 있습니다. AWS 하지만 사용하는 KMS 키를 지정하는 것이 항상 모범 사례입니다. 이렇게 하면 의도한 KMS 키를 사용할 수 있으며 신뢰할 수 없는 Word 키를 사용하여 암호 텍스트를 실수로 복호화KMS하지 않습니다. 데이터를 다시 암호화하는 대상 KMS 키를 지정합니다. --destination-key-id 파라미터는 항상 필요합니다. 이 예제에서는 키 ARN를 사용하지만 유효한 키 식별자를 사용할 수 있습니다. 일반 텍스트 출력을 텍스트 값으로 요청합니다. --query 파라미터는 CLI에 출력에서 Plaintext 필드 값만 가져오도록 지시합니다. --output 파라미터는 출력을 텍스트로 반환합니다. 일반 텍스트를 Base64로 디코딩하여 파일에 저장합니다. 다음 예시에서는 Plaintext 파라미터 값을 Base64 유틸리티에 파이프(|)로 구분하며 유틸리티가 이를 디코딩합니다. 그런 다음 디코딩된 출력을 ExamplePlaintext 파일로 리디렉션(>)합니다.

이 명령을 실행하기 전에 예제 키 IDs를 AWS 계정의 유효한 키 식별자로 바꿉니다.

aws kms re-encrypt \ --ciphertext-blob fileb://ExampleEncryptedFile \ --source-key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --destination-key-id 0987dcba-09fe-87dc-65ba-ab0987654321 \ --query CiphertextBlob \ --output text | base64 --decode > ExampleReEncryptedFile

이 명령은 출력을 생성하지 않습니다. re-encrypt 명령의 출력은 base64로 디코딩되어 파일에 저장됩니다.

자세한 내용은 AWS Key Management Service API 참조의 ReEncrypt <https://docs.aws.amazon.com/kms/latest/APIReference/APIWord_ReEncrypt.html을 참조하세요.

예제 2: 다른 대칭 KMS 키(Windows 명령 프롬프트)로 암호화된 메시지를 다시 암호화하려면

다음 re-encrypt 명령 예시는 certutil 유틸리티를 사용하여 일반 텍스트 데이터를 base64로 디코딩한다는 점을 제외하면 이전 예시와 동일합니다. 이 프로시저에는 다음 예시와 같이 두 개의 명령이 필요합니다.

이 명령을 실행하기 전에 예제 키 ID를 AWS 계정의 유효한 키 ID로 바꿉니다.

aws kms re-encrypt ^ --ciphertext-blob fileb://ExampleEncryptedFile ^ --source-key-id 1234abcd-12ab-34cd-56ef-1234567890ab ^ --destination-key-id 0987dcba-09fe-87dc-65ba-ab0987654321 ^ --query CiphertextBlob ^ --output text > ExampleReEncryptedFile.base64

그런 다음 certutil 유틸리티를 사용하세요.

certutil -decode ExamplePlaintextFile.base64 ExamplePlaintextFile

출력:

Input Length = 18 Output Length = 12 CertUtil: -decode command completed successfully.

자세한 내용은 AWS Key Management Service API 참조의 ReEncrypt <https://docs.aws.amazon.com/kms/latest/APIReference/APIWord_ReEncrypt.html을 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조ReEncrypt를 참조하세요.

다음 코드 예시에서는 retire-grant을 사용하는 방법을 보여 줍니다.

AWS CLI

고객 마스터 키에 대한 권한 부여를 사용 중지하는 방법

다음 retire-grant 예제에서는 KMS 키에서 권한 부여를 삭제합니다.

다음 예시 명령은 grant-idkey-id 파라미터를 지정합니다. key-id 파라미터 값은 ARN 키의 키 KMS여야 합니다.

aws kms retire-grant \ --grant-id 1234a2345b8a4e350500d432bccf8ecd6506710e1391880c4f7f7140160c9af3 \ --key-id arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

이 명령은 출력을 생성하지 않습니다. 권한 부여가 사용 중지되었는지 확인하려면 list-grants 명령을 사용하세요.

자세한 내용은 AWS Key Management Service 개발자 안내서의 권한 부여 사용 중지 및 취소를 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조RetireGrant를 참조하세요.

다음 코드 예시에서는 revoke-grant을 사용하는 방법을 보여 줍니다.

AWS CLI

고객 마스터 키에 대한 권한 부여를 사용 중지하는 방법

다음 revoke-grant 예제에서는 KMS 키에서 권한 부여를 삭제합니다. 다음 예시 명령은 grant-idkey-id 파라미터를 지정합니다. key-id 파라미터의 값은 Word 키의 키 ID 또는 키 KMSARN일 수 있습니다.

aws kms revoke-grant \ --grant-id 1234a2345b8a4e350500d432bccf8ecd6506710e1391880c4f7f7140160c9af3 \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab

이 명령은 출력을 생성하지 않습니다. 권한 부여가 취소되었는지 확인하려면 list-grants 명령을 사용하세요.

자세한 내용은 AWS Key Management Service 개발자 안내서의 권한 부여 사용 중지 및 취소를 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조RevokeGrant를 참조하세요.

다음 코드 예시에서는 rotate-key-on-demand을 사용하는 방법을 보여 줍니다.

AWS CLI

KMS 키의 온디맨드 교체를 수행하려면

다음 rotate-key-on-demand 예제에서는 지정된 KMS 키에 대한 키 구성 요소의 교체를 즉시 시작합니다.

aws kms rotate-key-on-demand \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab

출력:

{ "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab" }

자세한 내용은 Key Management Service 개발자 안내서의 온디맨드 키 교체를 수행하는 방법을 참조하세요. AWS

  • API 세부 정보는 AWS CLI 명령 참조RotateKeyOnDemand를 참조하세요.

다음 코드 예시에서는 schedule-key-deletion을 사용하는 방법을 보여 줍니다.

AWS CLI

고객 관리형 KMS 키 삭제를 예약합니다.

다음 schedule-key-deletion 예제에서는 지정된 고객 관리형 KMS 키를 15일 후에 삭제하도록 예약합니다.

--key-id 파라미터는 KMS 키를 식별합니다. 이 예제에서는 키 ARN 값을 사용하지만 키 ID 또는 ARN 키의 KMS를 사용할 수 있습니다. --pending-window-in-days 파라미터는 7~30일의 대기 기간을 지정합니다. 기본 대기 기간은 30일입니다. 이 예제에서는 15의 값을 지정합니다.이 값은 명령이 완료된 후 15일 후에 KMS 키를 영구적으로 삭제 AWS 하도록 지시합니다.

aws kms schedule-key-deletion \ --key-id arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab \ --pending-window-in-days 15

응답에는 키 ARN, 키 상태, 대기 기간(PendingWindowInDays) 및 Unix 시간의 삭제 날짜가 포함됩니다. 삭제 날짜를 현지 시간으로 보려면 AWS KMS 콘솔을 사용합니다. PendingDeletion 키 상태의 KMS 키는 암호화 작업에 사용할 수 없습니다.

{ "KeyId": "arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab", "DeletionDate": "2022-06-18T23:43:51.272000+00:00", "KeyState": "PendingDeletion", "PendingWindowInDays": 15 }

자세한 내용은 AWS Key Management Service 개발자 안내서의 키 삭제를 참조하세요.

다음 코드 예시에서는 sign을 사용하는 방법을 보여 줍니다.

AWS CLI

예제 1: 메시지에 대한 디지털 서명을 생성하려면

다음 sign 예제에서는 짧은 메시지에 대한 암호화 서명을 생성합니다. 명령 출력에는 verify 명령을 사용하여 확인할 수 있는 Base64 인코딩 Signature 필드가 포함됩니다.

서명할 메시지와 비대칭 KMS 키가 지원하는 서명 알고리즘을 지정해야 합니다. KMS 키의 서명 알고리즘을 가져오려면 describe-key 명령을 사용합니다.

In AWS CLI 2.0에서 message 파라미터 값은 Base64-encoded되어야 합니다. 또는 메시지를 파일에 저장하고 fileb:// 접두사를 사용할 수 있습니다. 접두사는 AWS CLI가 파일에서 바이너리 데이터를 읽도록 지시합니다.

이 명령을 실행하기 전에 예제 키 ID를 AWS 계정의 유효한 키 ID로 바꿉니다. 키 ID는 키 사용량이 KMS_VERIFY인 비대칭 SIGN 키를 나타내야 합니다.

msg=(echo 'Hello World' | base64) aws kms sign \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --message fileb://UnsignedMessage \ --message-type RAW \ --signing-algorithm RSASSA_PKCS1_V1_5_SHA_256

출력:

{ "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "Signature": "ABCDEFhpyVYyTxbafE74ccSvEJLJr3zuoV1Hfymz4qv+/fxmxNLA7SE1SiF8lHw80fKZZ3bJ...", "SigningAlgorithm": "RSASSA_PKCS1_V1_5_SHA_256" }

AWS KMS에서 비대칭 KMS 키를 사용하는 방법에 대한 자세한 내용은 AWS 키 관리 서비스 개발자 안내서AWS KMS에서 비대칭 키를 참조하세요.

예제 2: 디지털 서명을 파일에 저장하려면(Linux 및 macOs)

다음 sign 예제에서는 로컬 파일에 저장된 짧은 메시지에 대한 암호화 서명을 생성합니다. 또한 명령은 응답에서 Signature 속성을 가져오고 Base64-decodes하여 ExampleSignature 파일에 저장합니다. 서명을 확인하는 verify 명령에서 서명 파일을 사용할 수 있습니다.

sign 명령에는 Base64-encoded 메시지와 비대칭 KMS 키가 지원하는 서명 알고리즘이 필요합니다. KMS 키가 지원하는 서명 알고리즘을 가져오려면 describe-key 명령을 사용합니다.

이 명령을 실행하기 전에 예제 키 ID를 AWS 계정의 유효한 키 ID로 바꿉니다. 키 ID는 키 사용량이 KMS_VERIFY인 비대칭 SIGN 키를 나타내야 합니다.

echo 'hello world' | base64 > EncodedMessage aws kms sign \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --message fileb://EncodedMessage \ --message-type RAW \ --signing-algorithm RSASSA_PKCS1_V1_5_SHA_256 \ --output text \ --query Signature | base64 --decode > ExampleSignature

이 명령은 출력을 생성하지 않습니다. 이 예제에서는 출력의 Signature 속성을 추출하여 파일에 저장합니다.

AWS KMS에서 비대칭 KMS 키를 사용하는 방법에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서AWS KMS에서 비대칭 키를 참조하세요.

  • API 세부 정보는 로그인 AWS CLI 명령 참조를 참조하세요.

다음 코드 예시에서는 tag-resource을 사용하는 방법을 보여 줍니다.

AWS CLI

KMS 키에 태그를 추가하려면

다음 tag-resource 예제에서는 고객 관리형 KMS 키에 "Purpose":"Test""Dept":"IT" 태그를 추가합니다. 이와 같은 태그를 사용하여 KMS 키에 레이블을 지정하고 권한 및 감사를 위한 KMS 키 범주를 생성할 수 있습니다.

KMS 키를 지정하려면 key-id 파라미터를 사용합니다. 이 예제에서는 키 ID 값을 사용하지만이 명령에서 키 ID 또는 키 ARN를 사용할 수 있습니다.

aws kms tag-resource \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --tags TagKey='Purpose',TagValue='Test' TagKey='Dept',TagValue='IT'

이 명령은 출력을 생성하지 않습니다. KMS AWS KMS 키에서 태그를 보려면 list-resource-tags 명령을 사용합니다.

AWS KMS에서 태그를 사용하는 방법에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서키 태그 지정을 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조TagResource를 참조하세요.

다음 코드 예시에서는 untag-resource을 사용하는 방법을 보여 줍니다.

AWS CLI

KMS 키에서 태그를 삭제하려면

다음 untag-resource 예제에서는 고객 관리KMS "Purpose" 키에서 키가 있는 태그를 삭제합니다.

KMS 키를 지정하려면 key-id 파라미터를 사용합니다. 이 예제에서는 키 ID 값을 사용하지만이 명령에서 키 ID 또는 키 ARN를 사용할 수 있습니다. 이 명령을 실행하기 전에 예제 키 ID를 AWS 계정의 유효한 키 ID로 바꿉니다.

aws kms untag-resource \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --tag-key 'Purpose'

이 명령은 출력을 생성하지 않습니다. KMS AWS KMS 키에서 태그를 보려면 list-resource-tags 명령을 사용합니다.

AWS KMS에서 태그를 사용하는 방법에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서키 태그 지정을 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조UntagResource를 참조하세요.

다음 코드 예시에서는 update-alias을 사용하는 방법을 보여 줍니다.

AWS CLI

별칭을 다른 KMS 키와 연결하려면

다음 update-alias 예제에서는 별칭을 다른 KMS 키alias/test-key와 연결합니다.

--alias-name 파라미터는 별칭을 지정합니다. 별칭 이름 값은 로 시작해야 합니다alias/. --target-key-id 파라미터는 별칭과 연결할 KMS 키를 지정합니다. 별칭에 대한 현재 KMS 키를 지정할 필요가 없습니다.

aws kms update-alias \ --alias-name alias/test-key \ --target-key-id 1234abcd-12ab-34cd-56ef-1234567890ab

이 명령은 출력을 생성하지 않습니다. 별칭을 찾으려면 list-aliases 명령을 사용하세요.

자세한 내용은 AWS Key Management Service 개발자 안내서의 별칭 업데이트를 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조UpdateAlias를 참조하세요.

다음 코드 예시에서는 update-custom-key-store을 사용하는 방법을 보여 줍니다.

AWS CLI

예제 1: 사용자 지정 키 스토어의 표시 이름을 편집하려면

다음 update-custom-key-store 예제에서는 사용자 지정 키 스토어의 이름을 변경합니다. 이 예제는 AWS CloudHSM 키 스토어 또는 외부 키 스토어에서 작동합니다.

custom-key-store-id를 사용하여 키 스토어를 식별합니다. new-custom-key-store-name 파라미터를 사용하여 새 표시 이름을 지정합니다.

AWS CloudHSM 키 스토어의 표시 이름을 업데이트하려면 먼저 disconnect-custom-key-store 명령을 사용하여 키 스토어의 연결을 해제해야 합니다. 외부 키 스토어가 연결되거나 연결이 끊긴 상태에서 해당 스토어의 표시 이름을 업데이트할 수 있습니다. 사용자 지정 키 스토어의 연결 상태를 찾으려면 describe-custom-key-store 명령을 사용합니다.

aws kms update-custom-key-store \ --custom-key-store-id cks-1234567890abcdef0 \ --new-custom-key-store-name ExampleKeyStore

이 명령은 데이터를 반환하지 않습니다. 명령이 작동하는지 확인하려면 describe-custom-key-stores 명령을 사용합니다.

AWS CloudHSM 키 스토어 업데이트에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서AWS CloudHSM 키 스토어 설정 편집을 참조하세요.

외부 키 스토어 업데이트에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서외부 키 스토어 속성 편집을 참조하세요.

예제 2: AWS CloudHSM 키 스토어의 kmsuser 암호를 편집하려면

다음 update-custom-key-store 예제에서는 지정된 키 스토어와 연결된 CloudHSM 클러스터kmsuserkmsuser 암호 값을에 대한 현재 암호로 업데이트합니다. 이 명령은 클러스터의 kmsuser 암호를 변경하지 않습니다. 단지 현재 암호를 AWS KMS에 알려줍니다. KMS에 현재 kmsuser 암호가 없는 경우 AWS CloudHSM 키 스토어에 연결할 수 없습니다.

NOTE: AWS CloudHSM 키 스토어를 업데이트하기 전에 연결을 해제해야 합니다. disconnect-custom-key-store 명령을 사용합니다. 명령이 완료되면 AWS CloudHSM 키 스토어를 다시 연결할 수 있습니다. connect-custom-key-store 명령을 사용합니다.

aws kms update-custom-key-store \ --custom-key-store-id cks-1234567890abcdef0 \ --key-store-password ExamplePassword

이 명령은 출력을 반환하지 않습니다. 변경 사항이 유효한지 확인하려면 describe-custom-key-stores 명령을 사용합니다.

AWS CloudHSM 키 스토어 업데이트에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서AWS CloudHSM 키 스토어 설정 편집을 참조하세요.

예제 3: AWS CloudHSM 키 스토어의 AWS CloudHSM 클러스터 편집

다음 예제에서는 AWS CloudHSM 키 스토어와 연결된 AWS CloudHSM 클러스터를 동일한 클러스터의 다른 백업과 같은 관련 클러스터로 변경합니다.

NOTE: AWS CloudHSM 키 스토어를 업데이트하기 전에 연결을 해제해야 합니다. disconnect-custom-key-store 명령을 사용합니다. 명령이 완료되면 AWS CloudHSM 키 스토어를 다시 연결할 수 있습니다. connect-custom-key-store 명령을 사용합니다.

aws kms update-custom-key-store \ --custom-key-store-id cks-1234567890abcdef0 \ --cloud-hsm-cluster-id cluster-1a23b4cdefg

이 명령은 출력을 반환하지 않습니다. 변경 사항이 유효한지 확인하려면 describe-custom-key-stores 명령을 사용합니다.

AWS CloudHSM 키 스토어 업데이트에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서AWS CloudHSM 키 스토어 설정 편집을 참조하세요.

예제 4: 외부 키 스토어의 프록시 인증 자격 증명을 편집하는 방법

다음 예제에서는 외부 키 스토어의 프록시 인증 자격 증명을 업데이트합니다. 값 중 하나만 변경access-key-id하더라도 raw-secret-access-key 및를 모두 지정해야 합니다. 이 기능을 사용하여 잘못된 자격 증명을 수정하거나 외부 키 스토어 프록시가 자격 증명을 교체할 때 자격 증명을 변경할 수 있습니다.

외부 키 스토어에서 AWS KMS에 대한 프록시 인증 자격 증명을 설정합니다. 그런 다음이 명령을 사용하여 자격 증명을 AWS KMS.Word에 제공합니다. AWS KMS는이 자격 증명을 사용하여 외부 키 스토어 프록시에 대한 요청에 서명합니다.

외부 키 스토어가 연결되거나 연결이 끊긴 상태에서 프록시 인증 보안 인증을 업데이트할 수 있습니다. 사용자 지정 키 스토어의 연결 상태를 찾으려면 describe-custom-key-store 명령을 사용합니다.

aws kms update-custom-key-store \ --custom-key-store-id cks-1234567890abcdef0 \ --xks-proxy-authentication-credential "AccessKeyId=ABCDE12345670EXAMPLE, RawSecretAccessKey=DXjSUawnel2fr6SKC7G25CNxTyWKE5PF9XX6H/u9pSo="

이 명령은 출력을 반환하지 않습니다. 변경 사항이 유효한지 확인하려면 describe-custom-key-stores 명령을 사용합니다.

외부 키 스토어 업데이트에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서외부 키 스토어 속성 편집을 참조하세요.

예제 5: 외부 키 스토어의 프록시 연결을 편집하려면

다음 예제에서는 외부 키 스토어 프록시 연결 옵션을 퍼블릭 엔드포인트 연결에서 VPC 엔드포인트 서비스 연결로 변경합니다. xks-proxy-connectivity 값을 변경하는 것 외에도 Word VPC 엔드포인트 서비스와 연결된 프라이빗 DNS 이름을 반영하도록 xks-proxy-uri-endpoint 값을 변경해야 합니다. 또한 xks-proxy-vpc-endpoint-service-name 값을 추가해야 합니다.

NOTE: 외부 스토어의 프록시 연결을 업데이트하기 전에 연결을 해제해야 합니다. disconnect-custom-key-store 명령을 사용합니다. 명령이 완료되면 connect-custom-key-store 명령을 사용하여 외부 키 스토어를 다시 연결할 수 있습니다.

aws kms update-custom-key-store \ --custom-key-store-id cks-1234567890abcdef0 \ --xks-proxy-connectivity VPC_ENDPOINT_SERVICE \ --xks-proxy-uri-endpoint "https://myproxy-private.xks.example.com" \ --xks-proxy-vpc-endpoint-service-name "com.amazonaws.vpce.us-east-1.vpce-svc-example"

이 명령은 출력을 반환하지 않습니다. 변경 사항이 유효한지 확인하려면 describe-custom-key-stores 명령을 사용합니다.

외부 키 스토어 업데이트에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서외부 키 스토어 속성 편집을 참조하세요.

다음 코드 예시에서는 update-key-description을 사용하는 방법을 보여 줍니다.

AWS CLI

예제 1: 고객 관리KMS 키에 설명을 추가하거나 변경하려면

다음 update-key-description 예제에서는 고객 관리형 KMS 키에 설명을 추가합니다. 동일한 명령을 사용하여 기존 설명을 변경할 수 있습니다.

--key-id 파라미터는 명령에서 KMS 키를 식별합니다. 이 예제에서는 키 ARN 값을 사용하지만 Word 키의 키 ID 또는 키 KMSARN를 사용할 수 있습니다. --description 파라미터는 새 설명을 지정합니다. 이 파라미터의 값은 KMS 키에 대한 현재 설명을 대체합니다.

aws kms update-key-description \ --key-id arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab \ --description "IT Department test key"

이 명령은 출력을 생성하지 않습니다. KMS 키에 대한 설명을 보려면 describe-key 명령을 사용합니다.

자세한 내용은 Key Management Service UpdateKeyDescription 참조의 Word를 참조하세요. AWS API

예제 2: 고객 관리형 KMS 키에 대한 설명을 삭제하려면

다음 update-key-description 예제에서는 고객 관리형 KMS 키에 대한 설명을 삭제합니다.

--key-id 파라미터는 명령에서 KMS 키를 식별합니다. 이 예제에서는 키 ID 값을 사용하지만 Word 키ARN의 키 ID 또는 키 KMS를 사용할 수 있습니다. 빈 문자열 값('')이 있는 --description 파라미터는 기존 설명을 삭제합니다.

aws kms update-key-description \ --key-id 0987dcba-09fe-87dc-65ba-ab0987654321 \ --description ''

이 명령은 출력을 생성하지 않습니다. KMS 키에 대한 설명을 보려면 describe-key 명령을 사용합니다.

자세한 내용은 Key Management Service UpdateKeyDescription 참조의 Word를 참조하세요. AWS API

다음 코드 예시에서는 verify을 사용하는 방법을 보여 줍니다.

AWS CLI

디지털 서명을 확인하려면

다음 verify 예제에서는 짧은 Base64 인코딩 메시지에 대한 암호화 서명을 확인합니다. 키 ID, 메시지, 메시지 유형 및 서명 알고리즘은 메시지에 서명하는 데 사용된 것과 동일해야 합니다. 지정한 서명은 Base64 인코딩할 수 없습니다. sign 명령에서 반환하는 서명을 디코딩하는 데 도움이 필요하면 sign 명령 예제를 참조하세요.

명령의 출력에는 서명이 확인되었음을 나타내는 부울 SignatureValid 필드가 포함됩니다. 서명 검증에 실패하면 verify 명령도 실패합니다.

이 명령을 실행하기 전에 예제 키 ID를 AWS 계정의 유효한 키 ID로 바꿉니다.

aws kms verify \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --message fileb://EncodedMessage \ --message-type RAW \ --signing-algorithm RSASSA_PKCS1_V1_5_SHA_256 \ --signature fileb://ExampleSignature

출력:

{ "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "SignatureValid": true, "SigningAlgorithm": "RSASSA_PKCS1_V1_5_SHA_256" }

AWS KMS에서 비대칭 KMS 키 사용에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서비대칭 키 사용을 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조확인을 참조하세요.