

# AWS CLI를 사용한 AWS KMS 예시
<a name="cli_kms_code_examples"></a>

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

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

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

**Topics**
+ [작업](#actions)

## 작업
<a name="actions"></a>

### `cancel-key-deletion`
<a name="kms_CancelKeyDeletion_cli_topic"></a>

다음 코드 예시에서는 `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` 명령 을 사용합니다.  
자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [Scheduling and canceling key deletion](https://docs.aws.amazon.com/kms/latest/developerguide/deleting-keys.html#deleting-keys-scheduling-key-deletion) 섹션을 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [CancelKeyDeletion](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/cancel-key-deletion.html) 섹션을 참조하세요.

### `connect-custom-key-store`
<a name="kms_ConnectCustomKeyStore_cli_topic"></a>

다음 코드 예시에서는 `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 개발자 안내서*의 [Connecting and disconnecting an AWS CloudHSM key store](https://docs.aws.amazon.com/kms/latest/developerguide/disconnect-keystore.html) 섹션을 참조하세요.  
외부 키 저장소를 연결하는 방법에 대한 자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [Connecting and disconnecting an external key store](https://docs.aws.amazon.com/kms/latest/developerguide/xks-connect-disconnect.html) 섹션을 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [ConnectCustomKeyStore](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/connect-custom-key-store.html) 섹션을 참조하세요.

### `create-alias`
<a name="kms_CreateAlias_cli_topic"></a>

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

**AWS CLI**  
**KMS 키의 별칭 생성**  
다음 `create-alias` 명령은 키 ID `1234abcd-12ab-34cd-56ef-1234567890ab`로 식별되는 KMS 키에 대해 `example-alias`라는 별칭을 만듭니다.  
별칭 이름은 `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 개발자 안내서*의 [별칭 사용](https://docs.aws.amazon.com/kms/latest/developerguide/kms-alias.html)을 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [CreateAlias](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/create-alias.html)를 참조하세요.

### `create-custom-key-store`
<a name="kms_CreateCustomKeyStore_cli_topic"></a>

다음 코드 예시에서는 `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
}
```
자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [Creating an AWS CloudHSM key store](https://docs.aws.amazon.com/kms/latest/developerguide/create-keystore.html) 섹션을 참조하세요.  
**예시 2: 퍼블릭 엔드포인트 연결이 있는 외부 키 저장소 생성**  
다음 `create-custom-key-store` 예시에서는 인터넷을 통해 AWS KMS와 통신하는 외부 키 저장소(XKS)를 생성합니다.  
이 예시에서 `XksProxyUriPath`는 `example-prefix`라는 선택적 접두사를 사용합니다.  
참고: AWS CLI 버전 1.0을 사용하는 경우 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
}
```
자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [Creating an external key store](https://docs.aws.amazon.com/kms/latest/developerguide/create-keystorecreate-xks-keystore.html) 섹션을 참조하세요.  
**예시 3: VPC 엔드포인트 서비스 연결이 있는 외부 키 저장소 생성**  
다음 `create-custom-key-store` 예시에서는 Amazon VPC 엔드포인트 서비스를 사용하여 AWS KMS와 통신하는 외부 키 저장소(XKS)를 생성합니다.  
참고: AWS CLI 버전 1.0을 사용하는 경우 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
}
```
자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [Creating an external key store](https://docs.aws.amazon.com/kms/latest/developerguide/create-keystorecreate-xks-keystore.html) 섹션을 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [CreateCustomKeyStore](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/create-custom-key-store.html) 섹션을 참조하세요.

### `create-grant`
<a name="kms_CreateGrant_cli_topic"></a>

다음 코드 예시에서는 `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 개발자 안내서*의 [AWS KMS에서의 권한 부여](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html)를 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [CreateGrant](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/create-grant.html)를 참조하세요.

### `create-key`
<a name="kms_CreateKey_cli_topic"></a>

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

**AWS CLI**  
**예시 1: AWS KMS에서 고객 관리형 KMS 키 생성**  
다음 `create-key` 예시에서는 대칭 암호화 KMS 키를 생성합니다.  
대칭 암호화 키인 기본 KMS 키를 생성하기 위해 파라미터를 지정할 필요가 없습니다. 이러한 파라미터의 기본값은 대칭 암호화 키를 생성합니다.  
이 명령은 키 정책을 지정하지 않으므로 KMS 키는 프로그래밍 방식으로 만든 KMS 키에 대한 [기본 키 정책](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default)을 가져옵니다. 키 정책을 보려면 `get-key-policy` 명령을 사용합니다. 키 정책을 변경하려면 `put-key-policy` 명령을 사용합니다.  

```
aws kms create-key
```
`create-key` 명령은 새 KMS 키의 키 ID 및 ARN을 포함한 키 메타데이터를 반환합니다. 이 값을 사용하여 다른 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",
        "CurrentKeyMaterialId": "0b7fd7ddbac6eef27907413567cad8c810e2883dc8a7534067a82ee1142fc1e6",
        "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 개발자 안내서*의 [키 생성](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)을 참조하세요.  
**예시 2: 암호화 및 복호화를 위한 비대칭 RSA KMS 키 생성**  
다음 `create-key` 예시에서는 암호화 및 복호화를 위한 비대칭 RSA 키 페어가 포함된 KMS 키를 생성합니다. 키가 생성된 후에는 키 사양 및 키 사용량을 변경할 수 없습니다.  

```
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"
    }
}
```
자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [AWS KMS의 비대칭 키](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html)를 참조하세요.  
**예시 3: 서명 및 확인을 위한 비대칭 타원 곡선 KMS 키 생성**  
서명 및 확인을 위해 비대칭 타원 곡선(ECC) 키 페어가 포함된 비대칭 KMS 키를 생성합니다. ECC KMS 키에 사용할 수 있는 유일한 값이 `SIGN_VERIFY`이더라도 `--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"
        ]
    }
}
```
자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [AWS KMS의 비대칭 키](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html)를 참조하세요.  
**예제 4: 서명 및 확인을 위한 비대칭 ML-DSA KMS 키 만들기**  
이 예제에서는 서명 및 확인을 위한 모듈 격자 디지털 서명 알고리즘(ML-DSA) 키를 만듭니다. ML-DSA 키에 사용할 수 있는 유일한 값이 `SIGN_VERIFY`라도 key-usage 파라미터는 필수입니다.  

```
aws kms create-key \
    --key-spec ML_DSA_65 \
    --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",
        "Description": "",
        "Enabled": true,
        "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab",
        "KeyManager": "CUSTOMER",
        "KeySpec": "ML_DSA_65",
        "KeyState": "Enabled",
        "KeyUsage": "SIGN_VERIFY",
        "MultiRegion": false,
        "Origin": "AWS_KMS",
        "SigningAlgorithms": [
            "ML_DSA_SHAKE_256"
        ]
    }
}
```
자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [AWS KMS의 비대칭 키](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html)를 참조하세요.  
**예제 5: HMAC KMS 키 만들기**  
다음 `create-key` 예시에서는 384비트 HMAC KMS 키를 생성합니다. HMAC KMS 키에 사용할 수 있는 유일한 값이더라도 `--key-usage` 파라미터의 `GENERATE_VERIFY_MAC` 값은 필수입니다.  

```
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"
    }
}
```
자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [AWS KMS의 HMAC 키](https://docs.aws.amazon.com/kms/latest/developerguide/hmac.html)를 참조하세요.  
**예제 6: 다중 리전 프라이머리 KMS 키 만들기**  
다음 `create-key` 예시에서는 다중 리전 프라이머리 대칭 암호화 키를 생성합니다. 모든 파라미터의 기본값이 대칭 암호화 키를 생성하므로 이 KMS 키에는 `--multi-region` 파라미터만 필요합니다. 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",
        "CurrentKeyMaterialId": "0b7fd7ddbac6eef27907413567cad8c810e2883dc8a7534067a82ee1142fc1e6",
        "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"
    }
}
```
자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [AWS KMS의 비대칭 키](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html)를 참조하세요.  
**예제 7: 가져온 키 자료에 대한 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"
     }
 }
```
자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [AWS KMS 키에서 키 구성 요소 가져오기](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html)를 참조하세요.  
**예시 6: AWS CloudHSM 키 저장소에 KMS 키 생성**  
다음 `create-key` 예시에서는 지정된 AWS CloudHSM 키 저장소에 KMS 키를 생성합니다. 이 작업은 AWS KMS에 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 개발자 안내서*의 [AWS CloudHSM 키 저장소](https://docs.aws.amazon.com/kms/latest/developerguide/keystore-cloudhsm.html)를 참조하세요.  
**예제 8: 외부 키 저장소에 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 개발자 안내서*의 [외부 키 저장소](https://docs.aws.amazon.com/kms/latest/developerguide/keystore-external.html)를 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [CreateKey](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/create-key.html)를 참조하세요.

### `decrypt`
<a name="kms_Decrypt_cli_topic"></a>

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

**AWS CLI**  
**예시 1: 대칭 KMS 키를 사용하여 암호화된 메시지 복호화(Linux 및 macOS)**  
다음 `decrypt` 명령 예시에서는 AWS CLI를 사용하여 데이터를 복호화하는 권장 방법을 보여줍니다. 이 버전은 대칭 KMS 키로 데이터를 복호화하는 방법을 보여줍니다.  
파일에 사이퍼텍스트를 입력합니다. `--ciphertext-blob` 파라미터 값에는 바이너리 파일에서 데이터를 읽도록 CLI에 지시하는 `fileb://` 접두사를 사용합니다. 파일이 현재 디렉터리에 없는 경우 파일의 전체 경로를 입력합니다. 파일에서 AWS CLI 파라미터 값을 읽는 방법에 대한 자세한 내용은 *AWS Command Line Interface 사용자 안내서*의 파일에서 AWS CLI 파라미터 로드<https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-parameters-file.html> 및 *AWS Command Line Tool 블로그*의 로컬 파일 파라미터의 모범 사례<https://aws.amazon.com/blogs/developer/best-practices-for-local-file-parameters/>를 참조하세요. 사이퍼텍스트를 복호화할 KMS 키를 지정합니다. 대칭 KMS 키로 복호화할 때는 `--key-id` 파라미터가 필요하지 않습니다. AWS KMS는 사이퍼텍스트 내 메타데이터에서 데이터를 암호화하는 데 사용된 KMS 키의 키 ID를 가져올 수 있습니다. 그러나 사용 중인 KMS 키를 지정하는 것이 항상 좋습니다. 이렇게 하면 의도한 KMS 키를 사용할 수 있으며 신뢰하지 않는 KMS 키를 사용하여 사이퍼텍스트를 실수로 복호화하는 것을 방지할 수 있습니다. 일반 텍스트 출력을 텍스트 값으로 요청하세요. `--query` 파라미터는 CLI에 출력에서 `Plaintext` 필드 값만 가져오도록 지시합니다. `--output` 파라미터는 출력을 텍스트로 반환합니다. 일반 텍스트를 Base64로 디코딩하여 파일에 저장합니다. 다음 예시에서는 `Plaintext` 파라미터 값을 Base64 유틸리티에 파이프(\$1)로 구분하며 유틸리티가 이를 디코딩합니다. 그런 다음 디코딩된 출력을 `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 참조*의 [암호화 해제](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)를 참조하세요.  
**예시 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 참조*의 [암호화 해제](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)를 참조하세요.  
**예시 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로 디코딩되어 파일에 저장됩니다.  
자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [AWS KMS의 비대칭 키](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html)를 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [Decrypt](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/decrypt.html)를 참조하세요.

### `delete-alias`
<a name="kms_DeleteAlias_cli_topic"></a>

다음 코드 예시에서는 `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 개발자 안내서*의 [별칭 삭제](https://docs.aws.amazon.com/kms/latest/developerguide/alias-manage.html#alias-delete)를 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [DeleteAlias](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/delete-alias.html)를 참조하세요.

### `delete-custom-key-store`
<a name="kms_DeleteCustomKeyStore_cli_topic"></a>

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

**AWS CLI**  
**사용자 지정 키 저장소 삭제**  
다음 `delete-custom-key-store` 예시에서는 지정된 사용자 지정 키 저장소를 삭제합니다.  
AWS CloudHSM 키 저장소를 삭제해도 연결된 CloudHSM 클러스터에는 영향을 주지 않습니다. 외부 키 저장소를 삭제해도 연결된 외부 키 저장소 프록시, 외부 키 관리자 또는 외부 키에는 영향을 주지 않습니다.  
**참고:** 사용자 지정 키 저장소를 삭제하려면 먼저 사용자 지정 키 저장소의 모든 KMS 키 삭제를 예약한 다음 해당 KMS 키가 삭제될 때까지 기다려야 합니다. 그런 다음 사용자 지정 키 저장소의 연결을 해제해야 합니다. 사용자 지정 키 저장소에서 KMS 키를 찾는 방법에 대한 자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [Delete an AWS CloudHSM key store (API)](https://docs.aws.amazon.com/kms/latest/developerguide/delete-keystore.html#delete-keystore-api) 섹션을 참조하세요.  

```
delete-custom-key-store \
    --custom-key-store-id cks-1234567890abcdef0
```
이 명령은 출력을 반환하지 않습니다. 사용자 지정 키 저장소가 삭제되는지 확인하려면 `describe-custom-key-stores` 명령을 사용합니다.  
AWS CloudHSM 키 스토어 삭제에 대한 자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [Deleting an AWS CloudHSM key store](https://docs.aws.amazon.com/kms/latest/developerguide/delete-keystore.html) 섹션을 참조하세요.  
외부 키 저장소를 삭제하는 방법에 대한 자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [Deleting an external key store](https://docs.aws.amazon.com/kms/latest/developerguide/delete-xks.html) 섹션을 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [DeleteCustomKeyStore](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/delete-custom-key-store.html) 섹션을 참조하세요.

### `delete-imported-key-material`
<a name="kms_DeleteImportedKeyMaterial_cli_topic"></a>

다음 코드 예시에서는 `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
```
출력:  

```
{
    "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab",
    "KeyMaterialId": "0b7fd7ddbac6eef27907413567cad8c810e2883dc8a7534067a82ee1142fc1e6"
}
```
자세한 내용은 *AWS Key Management Service 개발자 안내서*의[Deleting imported key material](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys-delete-key-material.html)을 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [DeleteImportedKeyMaterial](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/delete-imported-key-material.html) 섹션을 참조하세요.

### `derive-shared-secret`
<a name="kms_DeriveSharedSecret_cli_topic"></a>

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

**AWS CLI**  
**공유 보안 암호 파생**  
다음 `derive-shared-secret` 예시에서는 키 계약 알고리즘을 사용하여 공유 보안 암호를 도출합니다.  
DeriveSharedSecret을 직접적으로 호출하려면 `KEY_AGREEMENT`의 `KeyUsage` 값을 가진 비대칭 NIST 권장 타원 곡선(ECC) 또는 SM2(중국 리전만 해당) KMS 키 페어를 사용해야 합니다.  

```
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"
}
```
자세한 내용은 *AWS Key Management Service API 참조*의 [DeriveSharedSecret](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeriveSharedSecret.html) 섹션을 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [DeriveSharedSecret](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/derive-shared-secret.html) 섹션을 참조하세요.

### `describe-custom-key-stores`
<a name="kms_DescribeCustomKeyStores_cli_topic"></a>

다음 코드 예시에서는 `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
```
이 명령의 출력에는 연결 상태(`ConnectionState`)를 포함하여 AWS CloudHSM 키 저장소에 대한 유용한 세부 정보가 포함됩니다. 연결 상태가 `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>"
        }
    ]
}
```
자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [Viewing an AWS CloudHSM key store](https://docs.aws.amazon.com/kms/latest/developerguide/view-keystore.html) 섹션을 참조하세요.  
**예시 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"
            }
        }
    ]
}
```
자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [Viewing an external key store](https://docs.aws.amazon.com/kms/latest/developerguide/view-xks-keystore.html) 섹션을 참조하세요.  
**예시 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"
            }
        }
    ]
}
```
자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [Viewing an external key store](https://docs.aws.amazon.com/kms/latest/developerguide/view-xks-keystore.html) 섹션을 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [DescribeCustomKeyStores](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/describe-custom-key-stores.html) 섹션을 참조하세요.

### `describe-key`
<a name="kms_DescribeKey_cli_topic"></a>

다음 코드 예시에서는 `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",
        "CurrentKeyMaterialId": "0b7fd7ddbac6eef27907413567cad8c810e2883dc8a7534067a82ee1142fc1e6",
        "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 개발자 안내서*의 [키 보기](https://docs.aws.amazon.com/kms/latest/developerguide/viewing-keys.html)를 참조하세요.  
**예시 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",
        "CurrentKeyMaterialId": "0b7fd7ddbac6eef27907413567cad8c810e2883dc8a7534067a82ee1142fc1e6",
        "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` 예시에서는 HMAC KMS 키의 세부 정보를 가져옵니다.  

```
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](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/describe-key.html)를 참조하세요.

### `disable-key-rotation`
<a name="kms_DisableKeyRotation_cli_topic"></a>

다음 코드 예시에서는 `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 개발자 안내서*의 [Rotating keys](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html) 섹션을 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [DisableKeyRotation](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/disable-key-rotation.html) 섹션을 참조하세요.

### `disable-key`
<a name="kms_DisableKey_cli_topic"></a>

다음 코드 예시에서는 `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 개발자 안내서*의 [키 활성화 및 비활성화](https://docs.aws.amazon.com/kms/latest/developerguide/enabling-keys.html)를 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [DisableKey](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/disable-key.html)를 참조하세요.

### `disconnect-custom-key-store`
<a name="kms_DisconnectCustomKeyStore_cli_topic"></a>

다음 코드 예시에서는 `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 키 저장소 연결 및 연결](https://docs.aws.amazon.com/kms/latest/developerguide/disconnect-keystore.html) 해제를 참조하세요.  
외부 키 저장소 연결 해제에 대한 자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [외부 키 저장소 연결 및 연결](https://docs.aws.amazon.com/kms/latest/developerguide/xks-connect-disconnect.html) 해제를 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [DisconnectCustomKeyStore](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/disconnect-custom-key-store.html) 섹션을 참조하세요.

### `enable-key-rotation`
<a name="kms_EnableKeyRotation_cli_topic"></a>

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

**AWS CLI**  
**KMS 키의 자동 교체 활성화**  
다음 `enable-key-rotation` 예시에서는 고객 관리형 KMS 키의 자동 교체를 180일의 교체 기간으로 활성화합니다. KMS 키는 이 명령이 완료된 날짜로부터 1년(약 365일) 후, 그 이후에는 매년 교체됩니다.  
`--key-id` 파라미터는 KMS 키를 식별합니다. 이 예시에서는 키 ARN 값을 사용하지만 KMS 키의 키 ID 또는 ARN을 사용할 수 있습니다. `--rotation-period-in-days` 파라미터는 각 교체 날짜 사이의 일 수를 지정합니다. 90\$12560의 값을 지정하세요. 값을 지정하지 않을 경우 기본값은 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 개발자 안내서*의 [Rotating keys](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html) 섹션을 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [EnableKeyRotation](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/enable-key-rotation.html) 섹션을 참조하세요.

### `enable-key`
<a name="kms_EnableKey_cli_topic"></a>

다음 코드 예시에서는 `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` 출력의 `KeyState` 및 `Enabled` 필드 값을 확인하세요.  
자세한 내용은 **AWS Key Management Service 개발자 안내서의 [키 활성화 및 비활성화](https://docs.aws.amazon.com/kms/latest/developerguide/enabling-keys.html)를 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [EnableKey](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/enable-key.html)를 참조하세요.

### `encrypt`
<a name="kms_Encrypt_cli_topic"></a>

다음 코드 예시에서는 `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 Command Line Interface 사용자 안내서*의 [파일에서 파라미터 로드](https://docs.aws.amazon.com/cli/latest/userguide/cli-using-param.html#cli-using-param-file) 및 AWS Command Line Tool 블로그의 [로컬 파일 파라미터 모범 사례](https://blogs.aws.amazon.com/cli/post/TxLWWN1O25V1HE/Best-Practices-for-Local-File-Parameters)를 참조하세요. `--output` 및 `--query` 파라미터를 사용하여 명령 출력을 제어합니다. 이러한 파라미터는 명령 출력에서 *사이퍼텍스트*라는 암호화된 데이터를 추출합니다. 출력을 제어하는 방법에 대한 자세한 내용은 *AWS Command Line Interface 사용자 안내서*의 [명령 출력 제어](https://docs.aws.amazon.com/cli/latest/userguide/controlling-output.html)를 참조하세요. `base64` 유틸리티를 사용하여 추출된 출력을 바이너리 데이터로 디코딩합니다. 성공적인 `encrypt` 명령에서 반환되는 사이퍼텍스트는 base64로 인코딩된 텍스트입니다. AWS CLI를 사용하여 복호화하려면 먼저 이 텍스트를 디코딩해야 합니다. 바이너리 사이퍼텍스트를 파일에 저장합니다. 명령의 마지막 부분(`> ExampleEncryptedFile`)은 복호화를 쉽게 하기 위해 바이너리 사이퍼텍스트를 파일에 저장합니다. AWS CLI를 사용하여 데이터를 복호화하는 예시 명령은 복호화 예시를 참조하세요.  
**예시 2: 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 명령 참조*의 [Encrypt](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/encrypt.html)를 참조하세요.

### `generate-data-key-pair-without-plaintext`
<a name="kms_GenerateDataKeyPairWithoutPlaintext_cli_topic"></a>

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

**AWS CLI**  
**ECC NIST P384 비대칭 데이터 키 페어를 생성하는 방법**  
다음 `generate-data-key-pair-without-plaintext` 예시에서는 AWS 외부에서 사용할 ECC NIST P384 키 페어를 요청합니다.  
명령은 지정된 KMS 키로 암호화된 프라이빗 키의 복사본과 일반 텍스트 퍼블릭 키를 반환합니다. 일반 텍스트 프라이빗 키는 반환하지 않습니다. 암호화된 프라이빗 키를 암호화된 데이터와 함께 안전하게 저장한 후 프라이빗 키를 사용해야 할 때 AWS KMS를 직접적으로 호출하여 복호화할 수 있습니다.  
ECC NIST P384 비대칭 데이터 키 페어를 요청하려면 값이 `ECC_NIST_P384`인 `key-pair-spec` 파라미터를 사용합니다.  
지정하는 KMS 키는 대칭 암호화 KMS 키, 즉 `KeySpec` 값이 `SYMMETRIC_DEFAULT`인 KMS 키여야 합니다.  
참고: 이 예시의 출력에 있는 값은 잘려서 표시됩니다.  

```
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",
    "KeyMaterialId": "0b7fd7ddbac6eef27907413567cad8c810e2883dc8a7534067a82ee1142fc1e6",
    "KeyPairSpec": "ECC_NIST_P384"
}
```
`PublicKey` 및 `PrivateKeyCiphertextBlob`은 base64 인코딩 형식으로 반환됩니다.  
자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [Data key pairs](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#data-key-pairs) 섹션을 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [GenerateDataKeyPairWithoutPlaintext](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/generate-data-key-pair-without-plaintext.html) 섹션을 참조하세요.

### `generate-data-key-pair`
<a name="kms_GenerateDataKeyPair_cli_topic"></a>

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

**AWS CLI**  
**비트 RSA 비대칭 데이터 키 페어를 생성하는 방법**  
다음 `generate-data-key-pair` 예시에서는 AWS 외부에서 사용할 2048비트 RSA 비대칭 데이터 키 페어를 요청합니다. 명령은 즉시 사용 및 삭제할 수 있는 일반 텍스트 프라이빗 키와 지정된 KMS 키로 암호화된 프라이빗 키의 복사본을 반환합니다. 암호화된 프라이빗 키를 암호화된 데이터와 함께 안전하게 저장할 수 있습니다.  
2048비트 RSA 비대칭 데이터 키 페어를 요청하려면 값이 `RSA_2048`인 `key-pair-spec` 파라미터를 사용합니다.  
지정하는 KMS 키는 대칭 암호화 KMS 키, 즉 `KeySpec` 값이 `SYMMETRIC_DEFAULT`인 KMS 키여야 합니다.  
참고: 이 예시의 출력에 있는 값은 잘려서 표시됩니다.  

```
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",
    "KeyMaterialId": "0b7fd7ddbac6eef27907413567cad8c810e2883dc8a7534067a82ee1142fc1e6"
    "KeyPairSpec": "RSA_2048"
}
```
`PublicKey`, `PrivateKeyPlaintext` 및 `PrivateKeyCiphertextBlob`는 base64 인코딩 형식으로 반환됩니다.  
자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [Data key pairs](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#data-key-pairs) 섹션을 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [GenerateDataKeyPair](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/generate-data-key-pair.html) 섹션을 참조하세요.

### `generate-data-key-without-plaintext`
<a name="kms_GenerateDataKeyWithoutPlaintext_cli_topic"></a>

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

**AWS CLI**  
**일반 텍스트 키 없이 256비트 대칭 데이터 키 생성**  
다음 `generate-data-key-without-plaintext` 예시에서는 AWS 외부에서 사용할 256비트 대칭 데이터 키의 암호화된 사본을 요청합니다. 사용할 준비가 되면 AWS KMS를 직접 호출하여 데이터 키를 복호화할 수 있습니다.  
256비트 데이터 키를 요청하려면 값이 `AES_256`인 `key-spec` 파라미터를 사용합니다. 128비트 데이터 키를 요청하려면 값이 `AES_128`인 `key-spec` 파라미터를 사용합니다. 다른 모든 데이터 키 길이에는 `number-of-bytes` 파라미터를 사용합니다.  
지정하는 KMS 키는 대칭 암호화 KMS 키, 즉 키 사양 값이 SYMMETRIC\$1DEFAULT인 KMS 키여야 합니다.  

```
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",
    "KeyMaterialId": "0b7fd7ddbac6eef27907413567cad8c810e2883dc8a7534067a82ee1142fc1e6"
}
```
`CiphertextBlob`(암호화된 데이터 키)은 base64로 인코딩된 형식으로 반환됩니다.  
자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [데이터 키](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#data-keys)를 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [GenerateDataKeyWithoutPlaintext](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/generate-data-key-without-plaintext.html)를 참조하세요.

### `generate-data-key`
<a name="kms_GenerateDataKey_cli_topic"></a>

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

**AWS CLI**  
**예시 1: 256비트 대칭 데이터 키 생성**  
다음 `generate-data-key` 예시에서는 AWS 외부에서 사용할 256비트 대칭 데이터 키를 요청합니다. 명령은 즉시 사용 및 삭제할 수 있는 일반 텍스트 데이터 키와 지정된 KMS 키로 암호화된 해당 데이터 키의 사본을 반환합니다. 암호화된 데이터 키를 암호화된 데이터와 함께 안전하게 저장할 수 있습니다.  
256비트 데이터 키를 요청하려면 값이 `AES_256`인 `key-spec` 파라미터를 사용합니다. 128비트 데이터 키를 요청하려면 값이 `AES_128`인 `key-spec` 파라미터를 사용합니다. 다른 모든 데이터 키 길이에는 `number-of-bytes` 파라미터를 사용합니다.  
지정하는 KMS 키는 대칭 암호화 KMS 키, 즉 키 사양 값이 SYMMETRIC\$1DEFAULT인 KMS 키여야 합니다.  

```
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",
    "KeyMaterialId": "0b7fd7ddbac6eef27907413567cad8c810e2883dc8a7534067a82ee1142fc1e6",
    "CiphertextBlob": "AQEDAHjRYf5WytIc0C857tFSnBaPn2F8DgfmThbJlGfR8P3WlwAAAH4wfAYJKoZIhvcNAQcGoG8wbQIBADBoBgkqhkiG9w0BBwEwHgYJYIZIAWUDBAEuMBEEDEFogLqPWZconQhwHAIBEIA7d9AC7GeJJM34njQvg4Wf1d5sw0NIo1MrBqZa+YdhV8MrkBQPeac0ReRVNDt9qleAt+SHgIRF8P0H+7U="
}
```
`Plaintext`(일반 텍스트 데이터 키) 및 `CiphertextBlob`(암호화된 데이터 키)은 base64로 인코딩된 형식으로 반환됩니다.  
자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [데이터 키](https://docs.aws.amazon.com/kms/latest/developerguide/data-keys.html)를 참조하세요. **예시 2: 512비트 대칭 데이터 키 생성**  
다음 `generate-data-key` 예시에서는 암호화 및 복호화를 위한 512비트 대칭 데이터 키를 요청합니다. 명령은 즉시 사용 및 삭제할 수 있는 일반 텍스트 데이터 키와 지정된 KMS 키로 암호화된 해당 데이터 키의 사본을 반환합니다. 암호화된 데이터 키를 암호화된 데이터와 함께 안전하게 저장할 수 있습니다.  
128비트 또는 256비트가 아닌 키 길이를 요청하려면 `number-of-bytes` 파라미터를 사용합니다. 512비트 데이터 키를 요청하기 위해 다음 예시에서는 값이 64(바이트)인 `number-of-bytes` 파라미터를 사용합니다.  
지정하는 KMS 키는 대칭 암호화 KMS 키, 즉 키 사양 값이 SYMMETRIC\$1DEFAULT인 KMS 키여야 합니다.  
참고: 이 예시의 출력에 있는 값은 잘려서 표시됩니다.  

```
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",
    "KeyMaterialId": "0b7fd7ddbac6eef27907413567cad8c810e2883dc8a7534067a82ee1142fc1e6"
}
```
`Plaintext`(일반 텍스트 데이터 키) 및 `CiphertextBlob`(암호화된 데이터 키)은 base64로 인코딩된 형식으로 반환됩니다.  
자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [데이터 키](https://docs.aws.amazon.com/kms/latest/developerguide/data-keys.html)를 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [GenerateDataKey](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/generate-data-key.html)를 참조하세요.

### `generate-mac`
<a name="kms_GenerateMac_cli_topic"></a>

다음 코드 예시는 `generate-mac`의 사용 방법을 보여줍니다.

**AWS CLI**  
**예제 1: 메시지에 대한 HMAC 생성**  
다음 `generate-mac` 명령은 메시지에 대한 HMAC, HMAC KMS 키 및 MAC 알고리즘을 생성합니다. 알고리즘은 지정된 HMAC KMS 키에서 지원되어야 합니다.  
AWS CLI v2에서 `message` 파라미터 값은 Base64로 인코딩되어야 합니다. 또는 메시지를 파일에 저장하고 AWS CLI에 파일에서 바이너리 데이터를 읽도록 지시하는 `fileb://` 접두사를 사용할 수 있습니다.  
이 명령을 실행하기 전에 예시 키 ID를 AWS 계정의 유효한 키 ID로 바꾸세요. 키 ID는 키 사용량이 `GENERATE_VERIFY_MAC`인 HMAC KMS 키를 나타내야 합니다.  

```
msg=(echo 'Hello World' | base64)

aws kms generate-mac \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
    --message fileb://Message \
    --mac-algorithm HMAC_SHA_384
```
출력:  

```
{
    "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
    "Mac": "<HMAC_TAG>",
    "MacAlgorithm": "HMAC_SHA_384"
}
```
AWS KMS에서 HMAC KMS 키를 사용하는 방법에 대한 자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [HMAC keys in AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/hmac.html)를 참조하세요.  
**예제 2: HMAC를 파일에 저장(Linux 및 macOS)**  
다음 `generate-mac` 예제에서는 로컬 파일에 저장된 짧은 메시지에 대한 HMAC를 생성합니다. 또한 명령은 응답에서 `Mac` 속성을 가져오고 Base64로 디코딩하여 ExampleMac 파일에 저장합니다. MAC를 확인하는 `verify-mac` 명령에서 MAC 파일을 사용할 수 있습니다.  
`generate-mac` 명령에는 Base64로 인코딩된 메시지와 HMAC KMS 키가 지원하는 MAC 알고리즘이 필요합니다. KMS 키가 지원하는 MAC 알고리즘을 가져오려면 `describe-key` 명령을 사용합니다.  
이 명령을 실행하기 전에 예시 키 ID를 AWS 계정의 유효한 키 ID로 바꾸세요. 키 ID는 GENERATE\$1VERIFY\$1MAC라는 키가 사용된 비대칭 KMS 키를 나타내야 합니다.  

```
echo 'hello world' | base64 > EncodedMessage

aws kms generate-mac \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
    --message fileb://EncodedMessage \
    --mac-algorithm HMAC_SHA_384 \
    --output text \
    --query Mac | base64 --decode > ExampleMac
```
이 명령은 출력을 생성하지 않습니다. 이 예시에서는 출력의 `Mac` 속성을 추출하여 파일에 저장합니다.  
AWS KMS에서 HMAC KMS 키를 사용하는 방법에 대한 자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [HMAC keys in AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/hmac.html)를 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [GenerateMac](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/generate-mac.html)을 참조하세요.

### `generate-random`
<a name="kms_GenerateRandom_cli_topic"></a>

다음 코드 예시는 `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 클러스터에 무작위 바이트 문자열이 생성됩니다.  
이 예시에서는 다음 파라미터와 값을 사용합니다.  
값이 `32`인 필수 `--number-of-bytes` 파라미터를 사용하여 32바이트(256비트) 문자열을 요청합니다. 값이 `text`인 `--output` 파라미터를 사용하여 AWS CLI가 출력을 JSON 대신 텍스트로 반환하도록 지시합니다. 응답에서 `Plaintext` 속성 값을 추출하는 데 `--query parameter`를 사용합니다. `base64` 유틸리티에 명령 출력을 파이프(\$1)로 구분하고, 이 유틸리티는 추출된 출력을 디코딩합니다. 리디렉션 연산자(>)를 사용하여 디코딩된 바이트 문자열을 `ExampleRandom` 파일에 저장합니다. 리디렉션 연산자(>)를 사용 바이너리 사이퍼텍스트를 파일에 저장합니다.  

```
aws kms generate-random \
    --number-of-bytes 32 \
    --output text \
    --query Plaintext | base64 --decode > ExampleRandom
```
이 명령은 출력을 생성하지 않습니다.  
자세한 내용은 *AWS Key Management Service API 참조*의 [GenerateRandom](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateRandom.html)을 참조하세요.  
**예시 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.
```
자세한 내용은 *AWS Key Management Service API 참조*의 [GenerateRandom](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateRandom.html)을 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [GenerateRandom](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/generate-random.html)을 참조하세요.

### `get-key-policy`
<a name="kms_GetKeyPolicy_cli_topic"></a>

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

**AWS CLI**  
**한 KMS 키에서 다른 KMS 키로 키 정책 복사**  
다음 `get-key-policy` 예시에서는 한 KMS 키에서 키 정책을 가져와 텍스트 파일에 저장합니다. 그런 다음 텍스트 파일을 정책 입력으로 사용하여 다른 KMS 키의 정책을 대체합니다.  
`put-key-policy`의 `--policy` 파라미터에는 문자열이 필요하므로 출력을 JSON 대신 텍스트 문자열로 반환하려면 `--output text` 옵션을 사용해야 합니다.  

```
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
```
이 명령은 출력을 생성하지 않습니다.  
자세한 내용은 *AWS KMS API 참조*의 [PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html)를 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [GetKeyPolicy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/get-key-policy.html)를 참조하세요.

### `get-key-rotation-status`
<a name="kms_GetKeyRotationStatus_cli_topic"></a>

다음 코드 예시에서는 `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 개발자 안내서*의 [Rotating keys](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html) 섹션을 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [GetKeyRotationStatus](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/get-key-rotation-status.html) 섹션을 참조하세요.

### `get-parameters-for-import`
<a name="kms_GetParametersForImport_cli_topic"></a>

다음 코드 예시에서는 `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 개발자 안내서*의 [Download the public key and import token](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys-get-public-key-and-token.html) 섹션을 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [GetParametersForImport](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/get-parameters-for-import.html) 섹션을 참조하세요.

### `get-public-key`
<a name="kms_GetPublicKey_cli_topic"></a>

다음 코드 예시에서는 `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 개발자 안내서*의 [AWS KMS에서의 비대칭 키](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html)를 참조하세요. **예시 2: 퍼블릭 키를 DER 형식으로 변환(Linux 및 macOS)**  
다음 `get-public-key` 예시에서는 비대칭 KMS 키의 퍼블릭 키를 다운로드하여 DER 파일에 저장합니다.  
AWS CLI에서 `get-public-key` 명령을 사용하면 Base64로 인코딩된 DER 인코딩 X.509 퍼블릭 키를 반환합니다. 이 예시에서는 `PublicKey` 속성 값을 텍스트로 가져옵니다. `PublicKey`를 Base64로 디코딩하고 `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 개발자 안내서*의 [AWS KMS에서의 비대칭 키](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html)를 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [GetPublicKey](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/get-public-key.html) 섹션을 참조하세요.

### `import-key-material`
<a name="kms_ImportKeyMaterial_cli_topic"></a>

다음 코드 예시에서는 `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 키를 생성해야 합니다.  
이 명령을 실행하기 전에 예시 키 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
```
출력:  

```
{
    "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab",
    "KeyMaterialId": "0b7fd7ddbac6eef27907413567cad8c810e2883dc8a7534067a82ee1142fc1e6"
}
```
자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [키 구성 요소 가져오기](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html)를 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [ImportKeyMaterial](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/import-key-material.html) 섹션을 참조하세요.

### `list-aliases`
<a name="kms_ListAliases_cli_topic"></a>

다음 코드 예시에서는 `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 개발자 안내서*의 [별칭으로 작업](https://docs.aws.amazon.com/kms/latest/developerguide/programming-aliases.html)을 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [ListAliases](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/list-aliases.html)를 참조하세요.

### `list-grants`
<a name="kms_ListGrants_cli_topic"></a>

다음 코드 예시에서는 `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 관리형 KMS 키의 키 ID 또는 키 ARN을 가져오려면 `list-keys` 또는 `list-aliases` 명령을 사용합니다.  

```
aws kms list-grants \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab
```
출력은 권한 부여가 Amazon DynamoDB에 KMS 키를 암호화 작업에 사용할 권한을 부여하고 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 개발자 안내서*의 [AWS KMS에서의 권한 부여](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html)를 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [ListGrants](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/list-grants.html)를 참조하세요.

### `list-key-policies`
<a name="kms_ListKeyPolicies_cli_topic"></a>

다음 코드 예시에서는 `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 키 정책에 대한 자세한 내용은 **AWS Key Management Service 개발자 안내서의 [AWS KMS에서 키 정책 사용](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)을 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [ListKeyPolicies](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/list-key-policies.html)를 참조하세요.

### `list-key-rotations`
<a name="kms_ListKeyRotations_cli_topic"></a>

다음 코드 예시에서는 `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 개발자 안내서*의 [Rotating keys](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html) 섹션을 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [ListKeyRotations](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/list-key-rotations.html) 섹션을 참조하세요.

### `list-keys`
<a name="kms_ListKeys_cli_topic"></a>

다음 코드 예시에서는 `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 개발자 안내서*의 [키 보기](https://docs.aws.amazon.com/kms/latest/developerguide/viewing-keys.html)를 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [ListKeys](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/list-keys.html)를 참조하세요.

### `list-resource-tags`
<a name="kms_ListResourceTags_cli_topic"></a>

다음 코드 예시에서는 `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
}
```
AWS KMS에서 태그를 사용하는 방법에 대한 자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [키 태그 지정](https://docs.aws.amazon.com/kms/latest/developerguide/tagging-keys.html)을 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [ListResourceTags](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/list-resource-tags.html) 섹션을 참조하세요.

### `list-retirable-grants`
<a name="kms_ListRetirableGrants_cli_topic"></a>

다음 코드 예시에서는 `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 개발자 안내서*의 [AWS KMS에서의 권한 부여](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html)를 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [ListRetirableGrants](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/list-retirable-grants.html) 섹션을 참조하세요.

### `put-key-policy`
<a name="kms_PutKeyPolicy_cli_topic"></a>

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

**AWS CLI**  
**KMS 키의 키 정책 변경**  
다음 `put-key-policy` 예시에서는 고객 관리형 키의 키 정책을 변경합니다.  
시작하려면 키 정책을 생성하고 로컬 JSON 파일로 저장합니다. 이 예시에서 파일은 `key_policy.json`입니다. 키 정책을 `policy` 파라미터의 문자열 값으로 지정할 수도 있습니다.  
이 키 정책의 첫 번째 문은 IAM 정책을 사용하여 KMS 키에 대한 액세스를 제어할 권한을 AWS 계정에 부여합니다. 두 번째 문은 `test-user` 사용자에게 KMS 키에서 `describe-key` 및 `list-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://` 접두사를 사용합니다. 이 접두사는 지원되는 모든 운영 체제에서 파일을 식별하는 데 필요합니다. 마지막으로, 이 명령은 값이 `default`인 `policy-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 키에 대한 키 정책을 가져옵니다. 값이 `text`인 `output` 파라미터는 읽기 쉬운 텍스트 형식을 반환합니다.  

```
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 개발자 안내서*의 [키 정책 변경](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying.html)을 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [PutKeyPolicy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/put-key-policy.html)를 참조하세요.

### `re-encrypt`
<a name="kms_ReEncrypt_cli_topic"></a>

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

**AWS CLI**  
**예시 1: 다른 대칭 KMS 키를 사용하여 암호화된 메시지 다시 암호화(Linux 및 macOS)**  
다음 `re-encrypt` 명령 예시에서는 AWS CLI를 사용하여 데이터를 다시 암호화하는 권장 방법을 보여줍니다.  
파일에 사이퍼텍스트를 입력합니다. `--ciphertext-blob` 파라미터 값에는 바이너리 파일에서 데이터를 읽도록 CLI에 지시하는 `fileb://` 접두사를 사용합니다. 파일이 현재 디렉터리에 없는 경우 파일의 전체 경로를 입력합니다. 파일에서 AWS CLI 파라미터 값을 읽는 방법에 대한 자세한 내용은 *AWS Command Line Interface 사용 설명서*의 [Loading AWS CLI parameters from a file](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-parameters-file.html) 및 *AWS Command Line Tool Blog*의 [Best Practices for Local File Parameters](https://aws.amazon.com/blogs/developer/best-practices-for-local-file-parameters/)를 참조하세요. 사이퍼텍스트를 복호화하는 소스 KMS 키를 지정하세요. 대칭 암호화 KMS 키를 사용하여 복호화할 때는 `--source-key-id` 파라미터가 필요하지 않습니다. AWS KMS는 사이퍼텍스트 블롭 내 메타데이터에서 데이터를 암호화하는 데 사용된 KMS 키를 가져올 수 있습니다. 그러나 사용 중인 KMS 키를 지정하는 것이 항상 좋습니다. 이렇게 하면 의도한 KMS 키를 사용할 수 있으며 신뢰하지 않는 KMS 키를 사용하여 사이퍼텍스트를 실수로 복호화하는 것을 방지할 수 있습니다. 데이터를 다시 암호화하는 대상 KMS 키를 지정하세요. `--destination-key-id` 파라미터는 항상 필요합니다. 이 예시에서는 키 ARN을 사용하지만 모든 유효한 키 식별자를 사용할 수 있습니다. 일반 텍스트 출력을 텍스트 값으로 요청하세요. `--query` 파라미터는 출력에서 `Plaintext` 필드 값만 가져오도록 CLI에 지시합니다. `--output` 파라미터는 출력을 텍스트로 반환합니다. 일반 텍스트를 Base64로 디코딩하여 파일에 저장합니다. 다음 예시에서는 `Plaintext` 파라미터 값을 Base64 유틸리티에 파이프(\$1)로 구분하며 유틸리티가 이를 디코딩합니다. 그런 다음 디코딩된 출력을 `ExamplePlaintext` 파일로 리디렉션(>)합니다.  
이 명령을 실행하기 전에 예시 키 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 | base64 --decode > ExampleReEncryptedFile
```
이 명령은 출력을 생성하지 않습니다. `re-encrypt` 명령의 출력은 base64로 디코딩되어 파일에 저장됩니다.  
자세한 내용은 *AWS Key Management Service API 참조*의 [ReEncrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_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/API_ReEncrypt.html)를 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [ReEncrypt](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/re-encrypt.html)를 참조하세요.

### `retire-grant`
<a name="kms_RetireGrant_cli_topic"></a>

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

**AWS CLI**  
**고객 마스터 키에 대한 권한 부여 사용 중지**  
다음 `retire-grant` 예시에서는 KMS 키에서 권한 부여를 삭제합니다.  
다음 예시 명령은 `grant-id` 및 `key-id` 파라미터를 지정합니다. `key-id` 파라미터 값은 KMS 키의 키 ARN이어야 합니다.  

```
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 개발자 안내서*의 [권한 부여 사용 중지 및 취소](https://docs.aws.amazon.com/kms/latest/developerguide/grant-manage.html#grant-delete)를 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [RetireGrant](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/retire-grant.html)를 참조하세요.

### `revoke-grant`
<a name="kms_RevokeGrant_cli_topic"></a>

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

**AWS CLI**  
**고객 마스터 키에 대한 권한 부여 사용 중지**  
다음 `revoke-grant` 예시에서는 KMS 키에서 권한 부여를 삭제합니다. 다음 예시 명령은 `grant-id` 및 `key-id` 파라미터를 지정합니다. `key-id` 파라미터 값은 KMS 키의 키 ID 또는 키 ARN일 수 있습니다.  

```
aws kms revoke-grant \
    --grant-id 1234a2345b8a4e350500d432bccf8ecd6506710e1391880c4f7f7140160c9af3 \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab
```
이 명령은 출력을 생성하지 않습니다. 권한 부여가 취소되었는지 확인하려면 `list-grants` 명령을 사용합니다.  
자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [권한 부여 사용 중지 및 취소](https://docs.aws.amazon.com/kms/latest/developerguide/grant-manage.html#grant-delete)를 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [RevokeGrant](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/revoke-grant.html)를 참조하세요.

### `rotate-key-on-demand`
<a name="kms_RotateKeyOnDemand_cli_topic"></a>

다음 코드 예시에서는 `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"
}
```
자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [How to perform on-demand key rotation](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html#rotating-keys-on-demand) 섹션을 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [RotateKeyOnDemand](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/rotate-key-on-demand.html) 섹션을 참조하세요.

### `schedule-key-deletion`
<a name="kms_ScheduleKeyDeletion_cli_topic"></a>

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

**AWS CLI**  
**고객 관리형 KMS 키 삭제 예약**  
다음 `schedule-key-deletion` 예시에서는 지정된 고객 관리형 KMS 키가 15일 후에 삭제되도록 예약합니다.  
`--key-id` 파라미터는 KMS 키를 식별합니다. 이 예시에서는 키 ARN 값을 사용하지만 KMS 키의 키 ID 또는 ARN을 사용할 수 있습니다. `--pending-window-in-days` 파라미터는 7\$130일의 대기 기간을 지정합니다. 기본 대기 기간은 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 개발자 안내서*의 [키 삭제](https://docs.aws.amazon.com/kms/latest/developerguide/deleting-keys.html)를 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [ScheduleKeyDeletion](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/schedule-key-deletion.html)을 참조하세요.

### `sign`
<a name="kms_Sign_cli_topic"></a>

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

**AWS CLI**  
**예시 1: 메시지에 대한 디지털 서명을 생성하는 방법**  
다음 `sign` 예시에서는 짧은 메시지에 대한 암호화 서명을 생성합니다. 명령 출력에는 `verify` 명령을 사용하여 확인할 수 있는 base-64로 인코딩된 `Signature` 필드가 포함됩니다.  
서명할 메시지와 비대칭 KMS 키가 지원하는 서명 알고리즘을 지정해야 합니다. KMS 키의 서명 알고리즘을 가져오려면 `describe-key` 명령을 사용합니다.  
AWS CLI v2에서 `message` 파라미터 값은 Base64로 인코딩되어야 합니다. 또는 메시지를 파일에 저장하고 AWS CLI에 파일에서 바이너리 데이터를 읽도록 지시하는 `fileb://` 접두사를 사용할 수 있습니다.  
이 명령을 실행하기 전에 예시 키 ID를 AWS 계정의 유효한 키 ID로 바꾸세요. 키 ID는 SIGN\$1VERIFY라는 키가 사용된 비대칭 KMS 키를 나타내야 합니다.  

```
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 Key Management Service 개발자 안내서*의 [AWS KMS에서의 비대칭 키](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html)를 참조하세요.  
**예시 2: 디지털 서명을 파일에 저장(Linux 및 macOS)**  
다음 `sign` 예시에서는 로컬 파일에 저장된 짧은 메시지에 대한 암호화 서명을 생성합니다. 또한 명령은 응답에서 `Signature` 속성을 가져오고 Base64로 디코딩하여 ExampleSignature 파일에 저장합니다. 서명을 확인하는 `verify` 명령에서 서명 파일을 사용할 수 있습니다.  
`sign` 명령에는 Base64로 인코딩된 메시지와 비대칭 KMS 키가 지원하는 서명 알고리즘이 필요합니다. KMS 키가 지원하는 서명 알고리즘을 가져오려면 `describe-key` 명령을 사용합니다.  
이 명령을 실행하기 전에 예시 키 ID를 AWS 계정의 유효한 키 ID로 바꾸세요. 키 ID는 SIGN\$1VERIFY라는 키가 사용된 비대칭 KMS 키를 나타내야 합니다.  

```
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에서의 비대칭 키](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html)를 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [Sign](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/sign.html) 섹션을 참조하세요.

### `tag-resource`
<a name="kms_TagResource_cli_topic"></a>

다음 코드 예시에서는 `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'
```
이 명령은 출력을 생성하지 않습니다. AWS KMS 키의 태그를 보려면 `list-resource-tags` 명령을 사용합니다.  
AWS KMS에서 태그를 사용하는 방법에 대한 자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [키 태그 지정](https://docs.aws.amazon.com/kms/latest/developerguide/tagging-keys.html)을 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [TagResource](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/tag-resource.html)를 참조하세요.

### `untag-resource`
<a name="kms_UntagResource_cli_topic"></a>

다음 코드 예시에서는 `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'
```
이 명령은 출력을 생성하지 않습니다. AWS KMS 키의 태그를 보려면 `list-resource-tags` 명령을 사용합니다.  
AWS KMS에서 태그를 사용하는 방법에 대한 자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [키 태그 지정](https://docs.aws.amazon.com/kms/latest/developerguide/tagging-keys.html)을 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [UntagResource](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/untag-resource.html)를 참조하세요.

### `update-alias`
<a name="kms_UpdateAlias_cli_topic"></a>

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

**AWS CLI**  
**별칭을 다른 KMS 키에 연결**  
다음 `update-alias` 예시에서는 별칭 `alias/test-key`를 다른 KMS 키와 연결합니다.  
`--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 개발자 안내서*의 [별칭 업데이트](https://docs.aws.amazon.com/kms/latest/developerguide/alias-manage.html#alias-update)를 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [UpdateAlias](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/update-alias.html)를 참조하세요.

### `update-custom-key-store`
<a name="kms_UpdateCustomKeyStore_cli_topic"></a>

다음 코드 예시에서는 `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 키 저장소 설정 편집](https://docs.aws.amazon.com/kms/latest/developerguide/update-keystore.html)을 참조하세요.  
외부 키 저장소를 업데이트하는 방법에 대한 자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [외부 키 저장소 속성 편집](https://docs.aws.amazon.com/kms/latest/developerguide/update-xks-keystore.html)을 참조하세요.  
**예시 2: AWS CloudHSM 키 저장소의 kmsuser 암호 편집**  
다음 `update-custom-key-store` 예시에서는 지정된 키 저장소와 연결된 CloudHSM 클러스터에서 `kmsuser`의 `kmsuser` 암호 값을 현재 암호로 업데이트합니다. 이 명령은 클러스터의 `kmsuser` 암호를 변경하지 않습니다. 단지 AWS KMS에 현재 암호를 알려줍니다. KMS에 현재 `kmsuser` 암호가 없는 경우 AWS CloudHSM 키 저장소에 연결할 수 없습니다.  
**참고:** 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 키 저장소 설정 편집](https://docs.aws.amazon.com/kms/latest/developerguide/update-keystore.html)을 참조하세요.  
**예시 3: AWS CloudHSM 키 저장소의 AWS CloudHSM 클러스터 편집**  
다음 예시에서는 AWS CloudHSM 키 저장소에 연결된 AWS CloudHSM 클러스터를 동일한 클러스터의 다른 백업과 같은 관련 클러스터로 변경합니다.  
**참고:** 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 키 저장소 설정 편집](https://docs.aws.amazon.com/kms/latest/developerguide/update-keystore.html)을 참조하세요.  
**예시 4: 외부 키 저장소의 프록시 인증 자격 증명 편집**  
다음 예시에서는 외부 키 저장소의 프록시 인증 자격 증명을 업데이트합니다. 값 중 하나만 변경하더라도 `raw-secret-access-key` 및 `access-key-id`를 모두 지정해야 합니다. 이 특성을 사용하여 잘못된 자격 증명을 수정하거나 외부 키 저장소 프록시가 자격 증명을 교체할 때 해당 자격 증명을 변경할 수 있습니다.  
외부 키 저장소에서 AWS KMS의 프록시 인증 자격 증명을 설정합니다. 그런 다음 이 명령을 사용하여 AWS KMS에 자격 증명을 제공합니다. 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 개발자 안내서*의 [외부 키 저장소 속성 편집](https://docs.aws.amazon.com/kms/latest/developerguide/update-xks-keystore.html)을 참조하세요.  
**예시 5: 외부 키 저장소의 프록시 연결 편집**  
다음 예시에서는 외부 키 저장소 프록시 연결 옵션을 퍼블릭 엔드포인트 연결에서 VPC 엔드포인트 서비스 연결로 변경합니다. `xks-proxy-connectivity` 값을 변경하는 것 외에도 VPC 엔드포인트 서비스에 연결된 프라이빗 DNS 이름을 반영하도록 `xks-proxy-uri-endpoint` 값을 변경해야 합니다. 또한 `xks-proxy-vpc-endpoint-service-name` 값을 추가해야 합니다.  
**참고:** 외부 저장소의 프록시 연결을 업데이트하기 전에 연결을 해제해야 합니다. `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 개발자 안내서*의 [외부 키 저장소 속성 편집](https://docs.aws.amazon.com/kms/latest/developerguide/update-xks-keystore.html)을 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [UpdateCustomKeyStore](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/update-custom-key-store.html) 섹션을 참조하세요.

### `update-key-description`
<a name="kms_UpdateKeyDescription_cli_topic"></a>

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

**AWS CLI**  
**예시 1: 고객 관리형 KMS 키에 설명을 추가하거나 변경**  
다음 `update-key-description` 예시에서는 고객 관리형 KMS 키에 설명을 추가합니다. 동일한 명령을 사용하여 기존 설명을 변경할 수 있습니다.  
`--key-id` 파라미터는 명령에서 KMS 키를 식별합니다. 이 예시에서는 키 ARN 값을 사용하지만 KMS 키의 키 ID 또는 ARN을 사용할 수 있습니다. `--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` 명령을 사용합니다.  
자세한 내용은 *AWS Key Management Service API 참조*의 [UpdateKeyDescription](https://docs.aws.amazon.com/cli/latest/reference/kms/update-key-description.html) 섹션을 참조하세요.  
**예시 2: 고객 관리형 KMS 키의 설명 삭제**  
다음 `update-key-description` 예시에서는 고객 관리형 KMS 키의 설명을 삭제합니다.  
`--key-id` 파라미터는 명령에서 KMS 키를 식별합니다. 이 예시에서는 키 ID 값을 사용하지만 KMS 키의 키 ID 또는 키 ARN을 사용할 수 있습니다. 빈 문자열 값('')이 있는 `--description` 파라미터는 기존 설명을 삭제합니다.  

```
aws kms update-key-description \
    --key-id 0987dcba-09fe-87dc-65ba-ab0987654321 \
    --description ''
```
이 명령은 출력을 생성하지 않습니다. KMS 키에 대한 설명을 보려면 describe-key 명령을 사용합니다.  
자세한 내용은 *AWS Key Management Service API 참조*의 [UpdateKeyDescription](https://docs.aws.amazon.com/cli/latest/reference/kms/update-key-description.html) 섹션을 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [UpdateKeyDescription](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/update-key-description.html) 섹션을 참조하세요.

### `verify-mac`
<a name="kms_VerifyMac_cli_topic"></a>

다음 코드 예시는 `verify-mac`의 사용 방법을 보여줍니다.

**AWS CLI**  
**예제 1: HMAC 확인**  
다음 `verify-mac` 명령은 특정 메시지에 대한 HMAC, HMAC KMS 키 및 MAC 알고리즘을 확인합니다. 응답의 MacValid 값에서 'true' 값은 HMAC가 유효함을 나타냅니다.  
AWS CLI v2에서 `message` 파라미터 값은 Base64로 인코딩되어야 합니다. 또는 메시지를 파일에 저장하고 AWS CLI에 파일에서 바이너리 데이터를 읽도록 지시하는 `fileb://` 접두사를 사용할 수 있습니다.  
지정하는 MAC는 base64로 인코딩할 수 없습니다. `generate-mac` 명령이 반환하는 MAC를 디코딩하는 데 도움이 필요하면 `generate-mac` 명령 예제를 참조하세요.  
이 명령을 실행하기 전에 예시 키 ID를 AWS 계정의 유효한 키 ID로 바꾸세요. 키 ID는 키 사용량이 `GENERATE_VERIFY_MAC`인 HMAC KMS 키를 나타내야 합니다.  

```
msg=(echo 'Hello World' | base64)

aws kms verify-mac \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
    --message fileb://Message \
    --mac-algorithm HMAC_SHA_384 \
    --mac fileb://ExampleMac
```
출력:  

```
{
    "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
    "MacValid": true,
    "MacAlgorithm": "HMAC_SHA_384"
}
```
AWS KMS에서 HMAC KMS 키를 사용하는 방법에 대한 자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [HMAC keys in AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/hmac.html)를 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [VerifyMac](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/verify-mac.html)을 참조하세요.

### `verify`
<a name="kms_Verify_cli_topic"></a>

다음 코드 예시는 `verify`의 사용 방법을 보여줍니다.

**AWS CLI**  
**디지털 서명을 확인하는 방법**  
다음 `verify` 명령은 Base64로 인코딩된 짧은 메시지에 대한 암호화 서명을 확인합니다. 키 ID, 메시지, 메시지 유형 및 서명 알고리즘은 메시지 서명에 사용된 것과 동일해야 합니다.  
AWS CLI v2에서 `message` 파라미터 값은 Base64로 인코딩되어야 합니다. 또는 메시지를 파일에 저장하고 AWS CLI에 파일에서 바이너리 데이터를 읽도록 지시하는 `fileb://` 접두사를 사용할 수 있습니다.  
지정하는 서명은 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 개발자 안내서*의 [비대칭 키 사용](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html)을 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [Verify](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kms/verify.html) 섹션을 참조하세요.