사용자 지정 키 스토어 문제 해결 - AWS Key Management Service

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

사용자 지정 키 스토어 문제 해결

사용자 지정 키 스토어는 가용성 및 복원력을 갖추도록 설계되었습니다. 하지만 사용자 지정 키 스토어가 계속 작동하도록 몇 가지 오류 조건을 복구해야 할 수도 있습니다.

사용 불가 CMK를 수정하는 방법

사용자 지정 키 스토어에서 고객 마스터 키(CMK)의 키 상태는 보통 Enabled입니다. 모든 CMK와 마찬가지로 사용자 지정 키 스토어에서 CMK를 비활성화하거나 삭제를 위해 CMK를 예약하면 키 상태가 변경됩니다. 하지만 다른 CMK와 달리 사용자 지정 키 스토어의 CMK는 키 상태Unavailable일 수도 있습니다.

의 주요 상태UnavailableCMK가 의도적으로 사용자 지정 키 스토어에 있음을 나타냅니다.AWS CloudHSM 클러스터에서 연결이 해제되었습니다.하고 다시 연결하려고 시도하지 못했습니다 (있는 경우). CMK가 사용 불가 상태인 경우에는 CMK를 확인 및 관리할 수 있지만, 이를 암호화 작업에 사용할 수 없습니다.

CMK의 키 상태를 확인하려면 Customer managed keys(고객 관리형 키) 페이지에서 CMK의 상태 필드를 확인합니다. 또는 DescribeKey 작업을 사용해 응답의 KeyState 요소를 확인합니다. 세부 정보는 키 보기 단원을 참조하십시오.

연결이 해제된 사용자 지정 키 스토어에서 CMK의 키 상태는 Unavailable 또는 PendingDeletion이 됩니다. 사용자 지정 키 스토어에서 삭제가 예약된 CMK의 경우Pending Deletion키 상태는 사용자 지정 키 스토어가 AWS CloudHSM 클러스터에서 연결이 해제되어 있는 경우에도 마찬가지입니다. 따라서 사용자 지정 키 스토어를 재연결하지 않고도 예약된 키 삭제를 취소할 수 있습니다.

사용 불가 상태인 CMK를 수정하려면 사용자 지정 키 스토어를 재연결합니다. 사용자 지정 키 스토어가 다시 연결되고 나면 사용자 지정 키 스토어의 CMK 키 상태가 이전 상태(Enabled 또는 Disabled)로 자동 복구됩니다. 삭제 보류 중인 CMK는 PendingDeletion 상태로 유지됩니다. 하지만 문제가 지속되는 동안 사용 불가 상태인 CMK를 활성화 및 비활성화해도 키 상태는 변경되지 않습니다. 이러한 활성화 또는 비활성화 작업은 키가 사용 가능한 상태가 될 때만 효과가 있습니다.

연결 실패에 대한 도움말은 연결 오류를 수정하는 방법 단원을 참조하십시오.

실패 CMK를 수정하는 방법

사용자 지정 키 스토어에서 CMK를 생성 및 사용할 때 발생하는 문제는 사용자 지정 키 스토어, 연결 AWS CloudHSM 클러스터, CMK 또는 키 구성 요소의 문제가 원인일 수 있습니다.

사용자 지정 키 스토어가 AWS CloudHSM 클러스터에서 연결이 해제되면 사용자 지정 키 스토어의 CMK의 키 상태는 이 됩니다.Unavailable를 선택합니다. 연결이 해제된 사용자 지정 키 스토어에서 CMK를 생성하라는 모든 요청은 CustomKeyStoreInvalidStateException 예외 메시지를 반환합니다. 데이터 키를 암호화, 해독 또는 생성하라는 모든 요청은 KMSInvalidStateException 예외 메시지를 반환합니다. 이 문제를 수정하려면 사용자 지정 키 스토어를 재연결합니다.

그러나 사용자 지정 키 저장소 CMK를 사용하려고암호화 작업는 키 상태가Enabled사용자 지정 키 스토어의 연결 상태는Connected를 선택합니다. 이 오류는 다음 문제 중 하나로 인해 발생할 수 있습니다.

  • CMK의 키 구성 요소가 연결 AWS CloudHSM 클러스터에서 삭제되었을 수 있습니다. 조사를 하려면 CMK 키 구성 요소의 키 핸들을 확인하고 필요할 경우 키 구성 요소 복구를 시도합니다.

  • 사용자 지정 키 스토어에 연결된 AWS CloudHSM 클러스터에서 모든 HSM이 삭제되었습니다. 암호화 작업에서 사용자 지정 키 스토어에서 CMK를 사용하려면 AWS CloudHSM 클러스터에 하나 이상의 활성 HSM이 포함되어 있어야 합니다. AWS CloudHSM 클러스터에서 HSM의 수와 상태를 확인하려면AWS 클라우드후SM 콘솔을 사용또는DescribeClusters작업을 사용합니다. 클러스터에 HSM을 추가하려면 AWS CloudHSM 콘솔 또는CreateHsm작업을 사용합니다.

  • 사용자 지정 키 스토어에 연결된 AWS CloudHSM 클러스터가 삭제되었습니다. 이 문제를 수정하려면 원래 클러스터와 관련된 백업에서 클러스터를 생성합니다(예: 원래 클러스터의 백업이나 원래 클러스터를 생성하는 데 사용된 백업). 그런 다음, 사용자 지정 키 스토어 설정에서 클러스터 ID를 편집합니다. 지침은 CMK에서 삭제된 키 구성 요소를 복구하는 방법을 참조하십시오.

연결 오류를 수정하는 방법

당신이 시도하는 경우사용자 지정 키 스토어 연결가 AWS CloudHSM 클러스터에 액세스할 수 있지만 작업이 실패하면 사용자 지정 키 스토어의 연결 상태가FAILED를 선택합니다. 사용자 지정 키 스토어의 상태를 확인하려면상태열 또는 AWS 관리 콘솔에 있는 사용자 지정 키 저장소의ConnectionState요소를 사용합니다.DescribeCustomKeyStores응답을 사용합니다.

또는, 일부 연결 시도가 쉽게 감지되는 클러스터 구성 오류로 인해 빠르게 실패합니다. 이 경우 상태 또는 ConnectionState가 여전히 DISCONNECTED입니다. 이러한 실패는 시도가 실패한 이유를 설명하는 오류 메시지 또는 예외를 반환합니다. 예외 설명과 클러스터 요구 사항을 검토하고, 문제를 해결하고, 필요한 경우 사용자 지정 키 스토어를 업데이트한 후 다시 연결을 시도하십시오.

연결 상태가 FAILED인 경우 DescribeCustomKeyStores 작업을 실행하고 응답에서 ConnectionErrorCode 요소를 확인하십시오.

참고

사용자 지정 키 스토어의 연결 상태가 FAILED이면 재연결을 시도하기에 앞서 사용자 지정 키 스토어의 연결을 해제해야 합니다. 연결 상태가 FAILED이면 사용자 지정 키 스토어를 연결할 수 없습니다.

암호화 작업 실패에 응답하는 방법

사용자 지정 키 스토어에서 CMK를 사용하는 암호화 작업이 실패하면 다음과 같은 오류가 표시됩니다.

KMSInvalidStateException: KMS cannot communicate with your CloudHSM cluster

이 오류는 HTTPS 400 오류이지만 일시적인 네트워크 문제로 인해 발생할 수 있습니다. 응답하려면 먼저 요청을 다시 시도합니다. 그러나 계속 실패하면 네트워킹 구성 요소의 구성을 검사하십시오. 이 오류는 나가는 트래픽을 차단하는 방화벽 규칙 또는 VPC 보안 그룹 규칙과 같은 네트워킹 구성 요소의 잘못된 구성으로 인해 발생할 수 있습니다.

유효하지 않은 kmsuser 자격 증명을 수정하는 방법

사용자 지정 키 스토어 연결을 선택하면 AWS KMS 가 연결된 AWS CloudHSM 클러스터에kmsusercrypto user(CU). 사용자 지정 키 스토어의 연결이 해제되어 있는 한, 로그인 상태를 유지합니다. DescribeCustomKeyStores 응답에서는 ConnectionState의 값이 FAILED, ConnectionErrorCode 값이 INVALID_CREDENTIALS로 표시됩니다(아래 예제 참조).

사용자 지정 키 스토어의 연결을 해제하고kmsuser암호를 사용하는 경우, AWS KMS 는 AWS CloudHSM 클러스터에kmsuserCU 계정. 따라서 사용자 지정 키 스토어를 연결하려는 모든 시도가 실패합니다. 이DescribeCustomKeyStores응답은ConnectionStateFAILEDConnectionErrorCodeINVALID_CREDENTIALS다음 예제에 표시된 대로 을 사용합니다.

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

또한 올바르지 않은 암호로 클러스터에 로그인하려는 시도가 5번 실패하면 AWS CloudHSM 이 사용자 계정을 잠급니다. 클러스터에 로그인하려면 계정 암호를 변경해야 합니다.

로 클러스터에 로그인하려고 할 때 AWS KMS 가 잠금 응답을 수신하면kmsuserCU, 사용자 지정 키 스토어를 연결하라는 요청이 실패합니다. DescribeCustomKeyStores 응답에서 ConnectionState의 값은 FAILED, ConnectionErrorCode의 값은 USER_LOCKED_OUT입니다(아래 예제 참조).

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

이러한 조건 중 하나를 복구하려면 다음 절차를 따르십시오.

  1. 사용자 지정 키 스토어의 연결을 해제합니다.

  2. DescribeCustomKeyStores 작업을 실행하고 응답에서 ConnectionErrorCode 요소의 값을 확인합니다.

    • ConnectionErrorCode 값이 INVALID_CREDENTIALS인 경우에는 kmsuser 계정의 현재 암호를 확인합니다. 필요한 경우, cloudhsm_mgmt_util에서 changePswd 명령을 사용하여 알려진 값으로 암호를 설정합니다.

    • ConnectionErrorCode 값이 USER_LOCKED_OUT인 경우, cloudhsm_mgmt_util의 changePswd 명령을 사용하여 kmsuser 암호를 변경해야 합니다.

  3. 편집kmsuser비밀번호 설정그래서 그것은 현재kmsuser클러스터의 암호를 사용합니다. 이 작업은 AWS KMS 에 클러스터에 로그인하기 위해 사용하는 암호를 알려줍니다. 클러스터의 kmsuser 암호는 변경되지 않습니다.

  4. 사용자 지정 키 스토어를 연결합니다.

불필요한 키 구성 요소를 삭제하는 방법

사용자 지정 키 스토어에서 CMK 삭제를 예약한 후에 연결 클러스터에서 해당되는 키 구성 요소를 수동으로 삭제해야 할 수 있습니다.

사용자 지정 키 스토어에서 CMK를 생성하면 AWS KMS 에서 CMK 메타데이터를 생성하고 연결 AWS CloudHSM 클러스터에 키 구성 요소를 생성합니다. 사용자 지정 키 스토어에서 CMK 삭제를 예약하면 대기 기간 이후에 AWS KMS 는 CMK 메타데이터를 삭제합니다. 그런 다음, AWS KMS 는 클러스터에서 해당 키 구성 요소를 삭제하기 위해 최선의 노력을 다합니다. AWS KMS 는 클러스터 백업에서 키 구성 요소를 삭제하려고 시도하지 않습니다.

사용자 지정 키 스토어의 연결이 해제되어 있는 경우와 같이 AWS KMS 가 키 구성 요소를 삭제할 수 없는 경우, AWS KMS 는 AWS CloudTrail 로그에 항목을 작성합니다. 항목에는 CMK ID, AWS CloudHSM 클러스터 ID 및 키 구성 요소의 키 핸들이 포함되어 있습니다.

연결 AWS CloudHSM 클러스터에서 키 구성 요소를 삭제하려면 다음과 같은 절차를 사용합니다. 이 예에서는 AWS CLI와 AWS CloudHSM 명령줄 도구를 사용하고 있지만, CLI 대신 AWS 관리 콘솔을 사용할 수 있습니다.

  1. 아직 연결이 해제되지 않은 경우에는 사용자 지정 키 스토어의 연결을 해제한 다음, key_mgmt_util에 로그인합니다(연결 해제 및 로그인 방법 설명 참조).

  2. key_mgmt_util의 deleteKey 명령을 사용하여 클러스터의 HSM에서 키를 삭제합니다.

    예를 들어 이 명령은 클러스터의 HSM에서 키 262162를 삭제합니다. 키 핸들은 CloudTrail 로그 항목에 나열됩니다.

    Command: deleteKey -k 262162 Cfm3DeleteKey returned: 0x00 : HSM Return: SUCCESS Cluster Error Status Node id 0 and err state 0x00000000 : HSM Return: SUCCESS Node id 1 and err state 0x00000000 : HSM Return: SUCCESS Node id 2 and err state 0x00000000 : HSM Return: SUCCESS
  3. key_mgmt_util에서 로그아웃되고 사용자 지정 키 스토어를 다시 연결합니다(로그아웃 및 재연결 방법 설명 참조).

CMK에서 삭제된 키 구성 요소를 복구하는 방법

고객 마스터 키의 키 구성 요소가 삭제되어 있으면 CMK를 사용할 수 없고 CMK 하에서 암호화된 모든 암호화 텍스트를 해독할 수 없습니다. 사용자 지정 키 스토어의 CMK용 키 구성 요소가 연결 AWS CloudHSM 클러스터에서 삭제된 경우에 이런 문제가 발생할 수 있습니다. 하지만 키 구성 요소를 복구하는 것이 가능할 수 있습니다.

사용자 지정 키 스토어에서 고객 마스터 키 (CMK) 를 생성하면, AWS KMS 는 연결 AWS CloudHSM 클러스터에 로그인하여 CMK의 키 구성 요소를 생성합니다. 또한 자신만 알고 있는 값으로 암호를 변경하고 사용자 지정 키 스토어가 연결되어 있는 한 로그인 상태를 유지합니다. 키 소유자이자 키를 생성한 CU만 키를 삭제할 수 있기 때문에 HSM에서 실수로 키가 삭제될 일이 없습니다.

하지만 CMK의 키 구성 요소가 클러스터의 HSM에서 삭제된 경우 CMK 키 상태가 궁극적으로 UNAVAILABLE로 변경됩니다. 암호화 작업에서 CMK를 사용하려고 시도하면 KMSInvalidStateException 예외 메시지와 함께 작업이 실패합니다. 가장 중요한 것은 CMK 하에서 암호화된 데이터는 해독이 불가능합니다.

특정 상황에서 키 구성 요소가 포함된 백업에서 클러스터를 생성하여 삭제된 키 구성 요소를 복구할 수 있습니다. 이 전략은 삭제 전 키가 존재한 동안 최소 하나의 백업이 생성되었을 때만 효과가 있습니다.

다음 프로세스를 이용해 키 구성 요소를 복구합니다.

  1. 키 구성 요소가 포함된 클러스터 백업을 찾습니다. 백업에는 클러스터와 암호화된 데이터를 지원하는 데 필요한 모든 사용자와 키도 포함되어 있어야 합니다.

    DescribeBackups 작업을 사용해 클러스터의 백업을 나열합니다. 그런 다음, 백업을 선택하는 데 도움이 되는 백업 타임스탬프를 사용합니다. 사용자 지정 키 스토어에 연결된 클러스터로 출력을 제한하려면 Filters 파라미터를 사용합니다(아래 예제 참조).

    $ aws cloudhsmv2 describe-backups --filters clusterIds=<cluster ID> { "Backups": [ { "ClusterId": "cluster-1a23b4cdefg", "BackupId": "backup-9g87f6edcba", "CreateTimestamp": 1536667238.328, "BackupState": "READY" }, ... ] }
  2. 선택한 백업에서 클러스터를 생성합니다. 백업에 삭제된 키와 기타 사용자 및 클러스터에서 필요한 키가 포함되어 있는지 확인합니다.

  3. 속성을 편집할 수 있도록 사용자 지정 키 스토어의 연결을 해제합니다.

  4. 사용자 지정 키 스토어의 클러스터 ID를 편집합니다. 백업에서 생성한 클러스터의 클러스터 ID를 입력합니다. 클러스터가 원래 클러스터와 백업 기록을 공유하기 때문에 새 클러스터 ID는 유효해야 합니다.

  5. 사용자 지정 키 스토어를 다시 연결합니다.

kmsuser로 로그인하는 방법

사용자 지정 키 스토어의 AWS CloudHSM 클러스터에 키 구성 요소를 생성 및 관리하기 위해 AWS KMS 는kmsuser CU (Crypto User) 계정를 선택합니다. 그냥 필요한 만큼생성kmsuserCU 계정는 사용자 지정 키 스토어를 생성할 때 AWS KMS 에 암호를 제공합니다.

일반적으로 AWS KMS 는kmsuser계정을 사용합니다. 하지만 일부 작업에서는 사용자 지정 키 스토어의 연결을 해제하고, kmsuser CU로 클러스터에 로그인하고, cloudhsm_mgmt_util 및 key_mgmt_util 명령줄 도구를 사용해야 합니다.

참고

사용자 지정 키 스토어의 연결이 해제된 상태에서는 사용자 지정 키 스토어에서 고객 마스터 키(CMK)를 생성하거나, 암호화 작업을 위해 기존 CMK를 사용하려는 모든 시도가 실패합니다. 이 작업은 사용자가 기밀 데이터를 저장하거나 액세스하지 못하도록 차단합니다.

이 주제에서는 를 수행하는 방법을 설명합니다.사용자 지정 키 스토어의 연결을 해제하고 로그인하기kmsuser에서 AWS CloudHSM 명령행 도구를 실행하고로그아웃을 하고 사용자 지정 키 스토어를 재연결합니다.를 선택합니다.

연결 해제 및 로그인 방법

연결 클러스터에 kmsuser CU로 로그인해야 할 때마다 다음 절차를 따릅니다.

  1. 아직 연결이 해제되지 않은 경우에는 사용자 지정 키 스토어의 연결을 해제합니다. AWS Management Console 또는 AWS KMS API를 사용할 수 있습니다.

    사용자 지정 키가 연결되어 있는 동안 AWS KMS 는kmsuser를 선택합니다. 따라서 kmsuser로 로그인하거나 kmsuser 암호를 변경할 수 없습니다.

    예를 들어 이 명령은 DisconnectCustomKeyStore를 사용해 예제 키 스토어의 연결을 해제합니다. 예제에 나온 사용자 지정 키 스토어 ID를 유효한 ID로 바꿉니다.

    $ aws kms disconnect-custom-key-store --custom-key-store-id cks-1234567890abcdef0
  2. cloudhsm_mgmt_util을 시작합니다. 에서 설명하는 프로시저 사용cloudhsm_mgmt_util을 실행하기 위해 준비의 단원AWS CloudHSM 사용 설명서를 선택합니다.

  3. AWS CloudHSM 클러스터의 cloudhsm_mgmt_util에CO(공동).

    예를 들어 이 명령은 admin이라는 CO로 로그인합니다. 예제에 나온 CO 사용자 이름 및 암호를 유효한 이름과 암호로 바꿉니다.

    aws-cloudhsm>loginHSM CO admin <password> loginHSM success on server 0(10.0.2.9) loginHSM success on server 1(10.0.3.11) loginHSM success on server 2(10.0.1.12)
  4. 사용changePswd명령을 사용해 암호를 변경합니다.kmsuser계정을 알고 있는 계정으로 설정합니다. AWS KMS 는 사용자 지정 키 스토어를 연결할 때 암호를 교체합니다. 암호는 7~32자의 영숫자로만 구성되어야 합니다. 대소문자가 구분되며 어떤 특수 문자도 포함해서는 안 됩니다.

    예를 들어 이 명령은 kmsuser 암호를 tempPassword로 변경합니다.

    aws-cloudhsm>changePswd CU kmsuser tempPassword *************************CAUTION******************************** This is a CRITICAL operation, should be done on all nodes in the cluster. Cav server does NOT synchronize these changes with the nodes on which this operation is not executed or failed, please ensure this operation is executed on all nodes in the cluster. **************************************************************** Do you want to continue(y/n)?y Changing password for kmsuser(CU) on 3 nodes
  5. 설정한 암호를 사용해 kmsuser로 key_mgmt_util 또는 cloudhsm_mgmt_util에 로그인합니다. 자세한 지침은 cloudhsm_mgmt_util 시작하기key_mgmt_util 시작하기를 참조하십시오. 사용하는 도구는 작업마다 다릅니다.

    예를 들어 이 명령은 key_mgmt_util에 로그인합니다.

    Command: loginHSM -u CU -s kmsuser -p tempPassword Cfm3LoginHSM returned: 0x00 : HSM Return: SUCCESS Cluster Error Status Node id 0 and err state 0x00000000 : HSM Return: SUCCESS Node id 1 and err state 0x00000000 : HSM Return: SUCCESS Node id 2 and err state 0x00000000 : HSM Return: SUCCESS

로그아웃 및 재연결 방법

  1. 작업을 수행한 다음, 명령줄 도구를 로그아웃합니다. 로그아웃을 하지 않으면 사용자 지정 키 스토어를 재시도하려는 연결이 실패합니다.

    Command: logoutHSM Cfm3LogoutHSM returned: 0x00 : HSM Return: SUCCESS Cluster Error Status Node id 0 and err state 0x00000000 : HSM Return: SUCCESS Node id 1 and err state 0x00000000 : HSM Return: SUCCESS
  2. 사용자 지정 키 스토어에 대한 kmsuser 암호 설정을 편집합니다.

    AWS KMS 에 현재 암호를 알려줍니다.kmsuser클러스터에 있습니다. 이 단계를 생략하면 AWS KMS 가 클러스터에 로그인할 수 없음을 나타냅니다.kmsuser사용자 지정 키 스토어를 재연결하려는 모든 시도가 실패합니다. AWS Management Console 사용 또는KeyStorePassword의 매개 변수UpdateCustomKeyStore작업을 사용합니다.

    예를 들어 이 명령은 AWS KMS 에 현재 암호가tempPassword를 선택합니다. 예제 암호를 실제 암호로 바꿉니다.

    $ aws kms update-custom-key-store --custom-key-store-id cks-1234567890abcdef0 --key-store-password tempPassword
  3. AWS KMS 에 사용자 지정 키 스토어를 재연결합니다. 예제에 나온 사용자 지정 키 스토어 ID를 유효한 ID로 바꿉니다. 연결 프로세스 중에 AWS KMS 는kmsuser암호를 자신만 알고 있는 값으로 변경합니다.

    ConnectCustomKeyStore 작업이 신속하게 값을 반환하지만, 연결 프로세스의 소요 시간이 연장될 수 있습니다. 하지만 이러한 초기 응답은 연결 프로세스가 성공했음을 의미하지는 않습니다.

    $ aws kms connect-custom-key-store --custom-key-store-id cks-1234567890abcdef0
  4. DescribeCustomKeyStores 작업을 사용해 사용자 지정 키 스토어가 연결되어 있는지 확인합니다. 예제에 나온 사용자 지정 키 스토어 ID를 유효한 ID로 바꿉니다.

    이 예제에서 연결 상태 필드는 사용자 지정 키 스토어가 현재 연결되어 있음을 나타냅니다.

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