AWS CloudHSM 키 저장소에서 KMS 키 생성 - AWS Key Management Service

AWS CloudHSM 키 저장소에서 KMS 키 생성

AWS CloudHSM 키 저장소를 생성한 후에는 키 저장소에서 AWS KMS keys를 생성할 수 있습니다. AWS KMS가 생성하는 키 구성 요소가 있는 대칭 암호화 KMS 키여야 합니다. 비대칭 KMS 키, HMAC KMS 키 또는 사용자 지정 키 스토어에 가져온 키 구성 요소가 있는 KMS 키는 생성할 수 없습니다. 또한 사용자 지정 키 스토어에서 대칭 암호화 KMS 키를 사용하여 비대칭 데이터 키 페어를 생성할 수 없습니다. KMS는 IPv6를 통해 AWS CloudHSM 키 저장소와 통신할 수 없습니다.

AWS CloudHSM 키 스토어에서 KMS 키를 생성하려면 AWS CloudHSM 키 스토어가 연결된 AWS CloudHSM 클러스터에 연결되어 있어야 하고, 클러스터에서 서로 다른 가용 영역에 최소 두 개의 활성 HSM이 포함되어 있어야 합니다. 연결 상태 및 HSM 수를 찾으려면 AWS Management 콘솔에서 AWS CloudHSM 키 스토어 페이지를 봅니다. API 작업을 사용할 때 DescribeCustomKeyStores 작업을 사용해 AWS CloudHSM 키 스토어가 연결되어 있는지 확인합니다. 클러스터 및 가용 영역에서 활성 HSM의 수를 확인하려면 AWS CloudHSM DescribeClusters 작업을 사용합니다.

AWS CloudHSM 키 스토어에서 KMS 키를 생성할 때 AWS KMS가 AWS KMS에 KMS 키를 생성합니다. 하지만 연결 AWS CloudHSM 클러스터에서 KMS 키용 키 구성 요소를 생성합니다. 특히, AWS KMS는 생성한 kmsuser CU로 클러스터에 로그인합니다. 그런 다음, 클러스터에서 지속적이고 추출 불가능한 256비트 고급 암호화 표준(AES) 대칭 키를 생성합니다. AWS KMS는 클러스터에서만 표시되는 키 라벨 속성의 값을 KMS 키의 Amazon 리소스 이름(ARN)으로 설정합니다.

명령이 성공하면 새 KMS 키의 키 상태Enabled가 되고 오리진은 AWS_CLOUDHSM이 됩니다. 생성 이후에 KMS 키의 오리진을 변경할 수 없습니다. AWS KMS 콘솔에서 또는 DescribeKey 작업을 사용하여 AWS CloudHSM 키 스토어에서 KMS 키를 볼 때 키 ID, 키 상태, 생성 날짜 등의 일반적인 속성을 확인할 수 있습니다. 하지만 사용자 지정 키 스토어 ID와 AWS CloudHSM 클러스터 ID(선택 사항)을 확인할 수도 있습니다.

AWS CloudHSM 키 스토어에서 KMS 키를 생성하려는 시도가 실패할 때 오류 메시지를 사용하면 원인을 판단하는 데 도움이 됩니다. AWS CloudHSM 키 스토어가 연결되어 있지 않거나(CustomKeyStoreInvalidStateException) 연결된 AWS CloudHSM 클러스터에 이 작업에 필요한 두 개의 활성 HSM이 포함되어 있지 않다는(CloudHsmClusterInvalidConfigurationException) 의미일 수 있습니다. 도움말은 사용자 지정 키 스토어 문제 해결 섹션을 참조하십시오.

AWS CloudHSM 키 스토어에서 KMS 키를 생성하는 작업의 AWS CloudTrail 로그 예제는 CreateKey 섹션을 참조하세요.

CloudHSM 키 저장소에서 새로운 KMS 키 생성

AWS KMS 콘솔의 AWS CloudHSM 키 저장소에서 또는 CreateKey 작업을 사용하여 대칭 암호화 KMS 키를 생성할 수 있습니다.

다음 절차에 따라 AWS CloudHSM 키 스토어에서 대칭 암호화 KMS 키를 생성하세요.

참고

별칭, 설명 또는 태그에 기밀 또는 민감한 정보를 포함하지 마십시오. 이러한 필드는 CloudTrail 로그 및 기타 출력에 일반 텍스트로 표시될 수 있습니다.

  1. AWS Management 콘솔에 로그인하고 https://console.aws.amazon.com/kms에서 AWS Key Management Service(AWS KMS) 콘솔을 엽니다.

  2. AWS 리전을 변경하려면 페이지의 오른쪽 상단 모서리에 있는 리전 선택기를 사용합니다.

  3. 탐색 창에서 고객 관리형 키를 선택합니다.

  4. 키 생성(Create key)을 선택합니다.

  5. 대칭(Symmetric)을 선택합니다.

  6. 키 사용(Key usage)에서 암호화 및 해독(Encrypt and decrypt) 옵션이 선택됩니다. 변경할 수 없습니다.

  7. 고급 옵션을 선택합니다.

  8. Key material origin(키 구성 요소 오리진)에서 AWS CloudHSM key store를 선택합니다.

    AWS CloudHSM 키 스토어에서는 다중 리전 키를 생성할 수 없습니다.

  9. 다음을 선택합니다.

  10. 새 KMS 키에 대한 AWS CloudHSM 키 스토어를 선택합니다. AWS CloudHSM 키 스토어를 새로 생성하려면 Create custom key store(사용자 지정 키 스토어 생성)를 선택합니다.

    선택한 AWS CloudHSM 키 스토어가 연결됨 상태여야 합니다. 연결 AWS CloudHSM 클러스터는 활성 상태여야 하고 서로 다른 가용 영역에 최소 2개의 활성 HSM을 포함하고 있어야 합니다.

    AWS CloudHSM 키 스토어를 연결하는 방법에 대한 도움말은 AWS CloudHSM 키 저장소 연결 해제 섹션을 참조하세요. HSM 추가에 대한 도움말은 AWS CloudHSM 사용 설명서HSM 추가를 참조하십시오.

  11. 다음을 선택합니다.

  12. KMS 키의 별칭과 설명을 입력합니다.

  13. (선택 사항). 태그 추가(Add Tags) 페이지에서 KMS 키를 식별 및 분류하는 태그를 추가합니다.

    AWS 리소스에 태그를 추가하면 AWS에서 사용 내역 및 비용을 태그별로 집계한 비용 할당 보고서를 생성합니다. KMS 키에 대한 액세스를 제어하는 데에도 태그를 사용할 수 있습니다. KMS 키 태그 지정에 대한 자세한 내용은 AWS KMS의 태그AWS KMS의 ABAC 섹션을 참조하십시오.

  14. 다음을 선택합니다.

  15. 키 관리자(Key Administrators) 섹션에서 KMS 키를 관리할 수 있는 IAM 사용자 및 역할을 선택합니다. 자세한 내용은 키 관리자가 KMS 키를 관리하도록 허용을 참조하세요.

    Notes

    IAM 정책은 다른 IAM 사용자 및 역할에 KMS 키 사용 권한을 제공할 수 있습니다.

    IAM 모범 사례는 장기 보안 인증 정보가 있는 IAM 사용자의 사용을 장려하지 않습니다. 가능할 경우, 임시 보안 인증 정보를 제공하는 IAM 역할을 사용하세요. 자세한 내용은 IAM 사용 설명서IAM의 보안 모범 사례를 참조하세요.

    AWS KMS 콘솔은 키 정책의 문 식별자 "Allow access for Key Administrators"에 키 관리자를 추가합니다. 이 문 식별자를 수정하면 문에 대해 콘솔이 업데이트 내용을 표시하는 방식에 영향을 미칠 수 있습니다.

  16. (선택 사항) 이러한 키 관리자가 KMS 키를 삭제하지 못하도록 하려면 페이지 하단에 있는 키 관리자가 이 키를 삭제하도록 허용(Allow key administrators to delete this key) 확인란의 선택을 취소합니다.

  17. 다음을 선택합니다.

  18. 이 계정 섹션에서 암호화 작업에 CMK를 사용할 수 있는 이 AWS 계정의 IAM 사용자 및 역할을 선택합니다. 자세한 내용은 키 사용자가 KMS 키를 사용하도록 허용을 참조하세요.

    Notes

    IAM 모범 사례는 장기 보안 인증 정보가 있는 IAM 사용자의 사용을 장려하지 않습니다. 가능할 경우, 임시 보안 인증 정보를 제공하는 IAM 역할을 사용하세요. 자세한 내용은 IAM 사용 설명서IAM의 보안 모범 사례를 참조하세요.

    AWS KMS 콘솔은 키 정책의 문 식별자 "Allow use of the key""Allow attachment of persistent resources"에 키 사용자를 추가합니다. 이러한 문 식별자들을 수정하면 문에 대해 콘솔이 업데이트 내용을 표시하는 방식에 영향을 미칠 수 있습니다.

  19. (선택 사항) 다른 AWS 계정이 암호화 작업에서 이 KMS 키를 사용하도록 허용할 수 있습니다. 이렇게 하려면 페이지 하단의 기타 AWS 계정 섹션에서 다른 AWS 계정 추가를 선택하고 외부 계정의 AWS 계정 ID를 입력합니다. 외부 계정을 여러 개 추가하려면 이 단계를 반복합니다.

    참고

    다른 AWS 계정의 관리자는 사용자에 대해 IAM 정책을 생성하여 KMS 키에 대한 액세스도 허용해야 합니다. 자세한 내용은 다른 계정의 사용자가 KMS를 사용하도록 허용 섹션을 참조하세요.

  20. 다음을 선택합니다.

  21. 키에 대한 키 정책 문을 검토합니다. 키 정책을 변경하려면 편집을 선택하세요.

  22. 다음을 선택합니다.

  23. 선택한 키 설정을 검토합니다. 여전히 돌아가서 모든 설정을 변경할 수 있습니다.

  24. 완료했으면 마침(Finish)을 선택하여 키를 생성합니다.

절차가 성공하면 화면에서 선택한 AWS CloudHSM 키 스토어에 새 KMS 키가 표시됩니다. 새 KMS 키의 이름 또는 별칭을 선택하면 세부 정보 페이지의 Cryptographic configuration(암호화 구성) 탭에 KMS 키의 오리진(AWS CloudHSM), 사용자 지정 키 스토어의 이름, ID 및 유형, AWS CloudHSM 클러스터의 ID가 표시됩니다. 이 절차가 실패하면 실패 원인을 설명하는 오류 메시지가 나타납니다.

작은 정보

사용자 지정 키 스토어에서 KMS 키를 손쉽게 식별하려면 고객 관리형 키(Customer managed keys) 페이지에서 사용자 지정 키 스토어 ID(Custom key store ID) 열을 화면에 추가합니다. 오른쪽 상단의 기어 아이콘을 클릭하고 Custom key store ID(사용자 지정 키 스토어 ID)를 선택합니다. 자세한 내용은 콘솔 보기 사용자 지정을 참조하세요.

AWS CloudHSM 키 저장소에서 AWS KMS key(KMS 키)를 새로 생성하려면 CreateKey 작업을 사용합니다. CustomKeyStoreId 파라미터를 사용하여 사용자 지정 키 스토어를 식별하고 OriginAWS_CLOUDHSM 값을 지정합니다.

Policy 파라미터를 사용해 키 정책을 지정할 수도 있습니다. 언제든 키 정책(PutKeyPolicy)을 변경하고 설명태그 등의 선택적 요소를 추가할 수 있습니다.

이 섹션의 예제는 AWS Command Line Interface(AWS CLI)를 사용하지만, 지원되는 모든 프로그래밍 언어를 사용할 수 있습니다.

다음 예제는 AWS CloudHSM 키 스토어가 연결된 AWS CloudHSM 클러스터에 연결되어 있는지 확인하기 위해 DescribeCustomKeyStores 작업을 호출하는 것으로 시작합니다. 기본적으로 이 작업은 계정 및 리전에서 모든 사용자 지정 키 스토어를 반환합니다. 특정 AWS CloudHSM 키 스토어만 설명하려면 CustomKeyStoreId 또는 CustomKeyStoreName 파라미터를 사용합니다(둘 다 사용해서는 안 됨).

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

참고

Description 또는 Tags 필드에 기밀 또는 민감한 정보를 포함하지 마십시오. 이러한 필드는 CloudTrail 로그 및 기타 출력에 일반 텍스트로 표시될 수 있습니다.

$ aws kms describe-custom-key-stores --custom-key-store-id cks-1234567890abcdef0 { "CustomKeyStores": [ "CustomKeyStoreId": "cks-1234567890abcdef0", "CustomKeyStoreName": "ExampleKeyStore", "CustomKeyStoreType": "AWS CloudHSM key store", "CloudHsmClusterId": "cluster-1a23b4cdefg", "TrustAnchorCertificate": "<certificate string appears here>", "CreationDate": "1.499288695918E9", "ConnectionState": "CONNECTED" ], }

다음 예제 명령은 DescribeClusters 작업을 사용해 ExampleKeyStore(cluster-1a23b4cdefg) 에 연결된 AWS CloudHSM 클러스터가 최소 두 개의 활성 HSM을 가지고 있는지 확인합니다. 클러스터의 HSM 수가 2개 미만이면 CreateKey 작업이 실패합니다.

$ aws cloudhsmv2 describe-clusters { "Clusters": [ { "SubnetMapping": { ... }, "CreateTimestamp": 1507133412.351, "ClusterId": "cluster-1a23b4cdefg", "SecurityGroup": "sg-865af2fb", "HsmType": "hsm1.medium", "VpcId": "vpc-1a2b3c4d", "BackupPolicy": "DEFAULT", "Certificates": { "ClusterCertificate": "-----BEGIN CERTIFICATE-----\...\n-----END CERTIFICATE-----\n" }, "Hsms": [ { "AvailabilityZone": "us-west-2a", "EniIp": "10.0.1.11", "ClusterId": "cluster-1a23b4cdefg", "EniId": "eni-ea8647e1", "StateMessage": "HSM created.", "SubnetId": "subnet-a6b10bd1", "HsmId": "hsm-abcdefghijk", "State": "ACTIVE" }, { "AvailabilityZone": "us-west-2b", "EniIp": "10.0.0.2", "ClusterId": "cluster-1a23b4cdefg", "EniId": "eni-ea8647e1", "StateMessage": "HSM created.", "SubnetId": "subnet-b6b10bd2", "HsmId": "hsm-zyxwvutsrqp", "State": "ACTIVE" }, ], "State": "ACTIVE" } ] }

이 예제 명령은 CreateKey 작업을 사용해 AWS CloudHSM 키 스토어에서 KMS 키를 생성합니다. AWS CloudHSM 키 스토어에서 KMS 키를 생성하려면 AWS CloudHSM 키 스토어의 사용자 지정 키 스토어 ID를 제공하고 AWS_CLOUDHSMOrigin 값을 지정해야 합니다.

응답에는 사용자 지정 키 스토어 및 AWS CloudHSM 클러스터의 ID가 포함되어 있습니다.

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

$ aws kms create-key --origin AWS_CLOUDHSM --custom-key-store-id cks-1234567890abcdef0 { "KeyMetadata": { "AWSAccountId": "111122223333", "Arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "CreationDate": 1.499288695918E9, "Description": "Example key", "Enabled": true, "MultiRegion": false, "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "KeyManager": "CUSTOMER", "KeyState": "Enabled", "KeyUsage": "ENCRYPT_DECRYPT", "Origin": "AWS_CLOUDHSM" "CloudHsmClusterId": "cluster-1a23b4cdefg", "CustomKeyStoreId": "cks-1234567890abcdef0" "KeySpec": "SYMMETRIC_DEFAULT", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ] } }