이 가이드에서는 Google Cloud CLI를 사용하여 단독 테넌트 Cloud HSM 인스턴스를 만들고 프로비저닝하고 관리하는 방법을 보여줍니다. 인스턴스를 만들고 프로비저닝한 후에는 Google Cloud 콘솔, Cloud Key Management Service API, gcloud CLI, 클라이언트 라이브러리를 사용하여 인스턴스에서 키를 만들고 사용할 수 있습니다.
인스턴스를 만들고 관리하려면 쿼럼 인증이 필요합니다. 인스턴스를 만들 때 인스턴스 작업을 실행하는 데 필요한 쿼럼 구성원 승인 수를 정의합니다. 정족수 구성원은 항상 이 수치 이상의 제어 키를 보유하여 인스턴스의 관리 제어를 유지해야 합니다.
시작하기 전에
- 인스턴스를 만들고 유지관리할 때는 단독 테넌트 Cloud HSM 권장사항을 검토하고 적용하세요.
- 시작할 때 필요한 쿼럼 구성원 수를 결정합니다. 기존 쿼럼 구성원의 승인을 받은 경우 나중에 추가 쿼럼 구성원을 추가할 수 있습니다. 최소 쿼럼 구성원 수는 3명입니다.
- 제안을 승인하는 데 필요한 정족수 구성원 수를 결정합니다. 인스턴스를 만든 후에는 이 숫자를 변경할 수 없습니다. 인스턴스를 유지하려면 쿼럼 구성원이 항상 이만큼의 제어 키에 액세스할 수 있어야 합니다. 최소 쿼럼 크기는 2입니다. 필요한 쿼럼 크기는 쿼럼 구성원 수보다 작아야 합니다.
- 인스턴스가 제때 새로고침되도록 할 방법을 결정합니다.
인스턴스의
disableDate를 모니터링하고 기한 전에 인스턴스 새로고침 작업을 제안, 승인, 실행하여 원치 않는 다운타임을 방지해야 합니다. -
단독 테넌트 Cloud HSM 인스턴스를 만들고 관리하고 사용하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트 또는 상위 리소스에 대해 다음 IAM 역할을 부여해 달라고 요청하세요.
-
제안 만들기: Cloud KMS 단일 테넌트 HSM 제안자 (
cloudkms.hsmSingleTenantProposer) -
제안 승인:
Cloud KMS 단일 테넌트 HSM 쿼럼 구성원 (
cloudkms.hsmSingleTenantQuorumMember) -
제안 실행:
Cloud KMS 단일 테넌트 HSM 실행자 (
cloudkms.hsmSingleTenantExecutor) -
키 만들기: Cloud KMS 단일 테넌트 HSM 키 생성자 (
roles/cloudkms.hsmSingleTenantKeyCreator)
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
-
제안 만들기: Cloud KMS 단일 테넌트 HSM 제안자 (
각 쿼럼 구성원에 대해 2단계 인증 (2FA)용 RSA-2048 키 쌍을 하나씩 생성합니다. 제어 키에는 실제 토큰을 사용하는 것이 좋습니다. 물리적 토큰에서 RSA-2048 키 쌍을 만드는 조직의 표준을 따릅니다.
이 가이드에서는 시연 목적으로 OpenSSL을 사용하여 소프트웨어 지원 RSA-2048 키 3개를 만듭니다.
openssl genrsa -out rsaprivate1.pem openssl genrsa -out rsaprivate2.pem openssl genrsa -out rsaprivate3.pem openssl rsa -in rsaprivate1.pem -out rsapub1.pem --pubout openssl rsa -in rsaprivate2.pem -out rsapub2.pem --pubout openssl rsa -in rsaprivate3.pem -out rsapub3.pem --pubout비공개 키를 안전하게 보관하세요. 제안을 승인하는 데 필요합니다. 공개 키는 단일 테넌트 Cloud HSM 인스턴스를 만드는 데 필요하므로 잘 보관하세요.
단일 테넌트 Cloud HSM을 지원하는 Cloud KMS 위치를 선택합니다. 호환되는 위치를 확인하려면 Cloud KMS 위치 페이지에서 위치 목록을 확인하세요. HSM 지원 필터에서 단일 테넌트 HSM 지원을 선택합니다.
인스턴스 만들기 및 프로비저닝
단일 테넌트 Cloud HSM 인스턴스를 만들고 프로비저닝하려면 gcloud CLI를 사용하여 인스턴스 리소스를 만들고, 인증 키를 등록하는 제안을 만든 후 제안을 승인하고 실행합니다.
인스턴스 만들기
이 단계는 Cloud KMS 단일 테넌트 HSM 제안자 역할이 있는 인스턴스 관리자가 완료해야 합니다.
기본 프로젝트를 설정합니다.
gcloud config set project PROJECT_IDPROJECT_ID를 프로젝트의 식별자로 바꿉니다.
단일 테넌트 Cloud HSM 인스턴스를 만듭니다.
gcloud kms single-tenant-hsm create --location=LOCATION \ --total-approver-count=QUORUM_MEMBER_COUNT \ --single-tenant-hsm-instance-id=INSTANCE_ID다음을 바꿉니다.
LOCATION: 인스턴스를 만들 위치입니다(예:us-central1).QUORUM_MEMBER_COUNT: 쿼럼 구성원의 총수입니다. 이 값은 이전에 만든 제어 키의 수이기도 합니다. 최솟값은3입니다. 나중에 쿼럼 승인을 통해 키를 추가할 수 있습니다. 제어 키를 잃은 후 복구하려면 필요한 쿼럼 크기보다 쿼럼 구성원이 하나 이상 있어야 합니다.INSTANCE_ID: 인스턴스에 사용할 식별자입니다(예:example-sthsm-instance). Cloud HSM에서 UUID를 할당하도록--single-tenant-hsm-instance-id플래그를 생략할 수 있습니다.
인스턴스의 상태를 확인합니다.
gcloud kms single-tenant-hsm describe INSTANCE_ID \ --location=LOCATION다음을 바꿉니다.
INSTANCE_ID: 인스턴스의 식별자입니다.LOCATION: 인스턴스를 만든 위치입니다.
상태가
PENDING_TWO_FACTOR_AUTH_REGISTRATION이면 인스턴스를 프로비저닝할 수 있습니다. 이 상태에 도달하는 데 일반적으로 5~30분이 소요됩니다.
인스턴스 프로비저닝
-
register_two_factor_auth_keys작업을 사용하여 2단계 인증 키를 등록하는 제안을 만듭니다. 이 단계에는 Cloud KMS 단일 테넌트 HSM 제안자 역할이 필요합니다. 대부분의 제안과 달리 register_two_factor_auth_keys 제안에는 모든 정족수 구성원의 서명된 챌린지가 필요합니다.gcloud kms single-tenant-hsm proposal create INSTANCE_ID
--single-tenant-hsm-instance-proposal-id PROPOSAL_ID
--location LOCATION
--operation-type register_two_factor_auth_keys
--required-approver-count MEMBERS_REQUIRED_FOR_APPROVAL
--two-factor-public-key-pems=PUBLIC_KEY_LIST다음을 바꿉니다.
INSTANCE_ID: 인스턴스의 식별자입니다.PROPOSAL_ID이 제안에 사용할 고유 식별자입니다(예:set-up-2fa).LOCATION: 인스턴스를 만든 위치입니다.MEMBERS_REQUIRED_FOR_APPROVAL: 작업이 실행되기 전에 제안을 승인해야 하는 쿼럼 구성원 수입니다. 최솟값은2입니다. 이 값은 인스턴스가 프로비저닝된 후에는 변경할 수 없습니다. 인스턴스의 관리 제어를 유지하려면 쿼럼 구성원이 항상 최소한 이 개수의 제어 키에 액세스할 수 있어야 합니다.PUBLIC_KEY_LIST: 모든 제어 키의 공개 키 부분 경로를 쉼표로 구분한 목록입니다(예:rsapub1.pem,rsapub2.pem,rsapub3.pem). 이 목록의 공개 키 수는 이전에 사용한QUORUM_MEMBER_COUNT값과 일치해야 합니다.
-
제안 상태를 확인하고 상태가
PENDING이 될 때까지 기다립니다.gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID \ --location LOCATION
다음을 바꿉니다.
INSTANCE_ID: 인스턴스의 식별자입니다.PROPOSAL_ID: 제안의 식별자입니다(예:set-up-2fa).LOCATION: 인스턴스를 만든 위치입니다.
상태가
PENDING이면 챌린지에 서명할 수 있습니다. -
제안서에서 과제를 가져옵니다. 새 단일 테넌트 Cloud HSM 인스턴스를 프로비저닝하려면 쿼럼의 모든 구성원의 서명된 챌린지가 필요합니다.
gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID \ --location LOCATION \ --format="json[](quorumParameters.challenges)"
이 명령어는 JSON 형식의 챌린지 배열을 반환합니다.
-
각 키에 대해 `basenc --base64url -d` 를 사용하여 챌린지를 디코딩하고 해당 비공개 키로 서명합니다.
echo CHALLENGE_N | basenc --base64url -d > decoded-challenge-N.txt openssl dgst -sign PRIVATE_KEY_N -out signed-challenge-N.txt decoded-challenge-N.txt
다음을 바꿉니다.
N: 챌린지 번호입니다(예: 첫 번째 챌린지의 경우1, 두 번째 챌린지의 경우2등).CHALLENGE_N: 이전 단계 출력의 챌린지 번호N의 콘텐츠입니다.PRIVATE_KEY_N: 비공개 키 번호N의 경로입니다(예: 첫 번째 챌린지의 경우rsaprivate1.pem).
-
서명된 챌린지를 업로드하여 제안을 승인합니다. 한 번의 명령어로 업로드하거나 여러 번의 명령어로 업로드할 수 있습니다. 이 단계에는 Cloud KMS 단일 테넌트 HSM 쿼럼 구성원 역할이 필요합니다.
gcloud kms single-tenant-hsm proposal approve PROPOSAL_ID \ --location LOCATION \ --single_tenant_hsm_instance INSTANCE_ID \ --quorum-challenge-replies="SIGNED_QUORUM_CHALLENGE_LIST"
SIGNED_QUORUM_CHALLENGE_LIST를 JSON 형식의 챌린지 배열로 바꿉니다. 각 목록 항목은 서명된 챌린지의 경로와 해당 공개 키의 경로를 포함하는 튜플입니다. 예를 들어[('signed-challenge-1.txt','rsapub1.pem'), ('signed-challenge-2.txt','rsapub2.pem')]를 사용하여 하나의 명령어로 처음 두 개의 서명된 챌린지를 제출합니다.필요한 수의 서명된 챌린지를 업로드하면 제안 상태가
APPROVED로 업데이트됩니다. -
제안이 승인되면
execute명령어를 사용하여register_two_factor_auth_keys작업을 완료합니다. 이 단계에는 Cloud KMS 단일 테넌트 HSM 실행자 역할이 필요하며 제안서가 생성된 후 24시간 이내에 완료해야 합니다.gcloud kms single-tenant-hsm proposal execute PROPOSAL_ID
--single_tenant_hsm_instance INSTANCE_ID --location LOCATION사용자를 프로비저닝하고 백업을 생성하는 장기 실행 작업입니다. 인스턴스가 20~30분 후에
ACTIVE가 됩니다. 인스턴스가
ACTIVE된 후 인스턴스 세부정보를 확인하여disableDate을 확인합니다.gcloud kms single-tenant-hsm describe INSTANCE_ID
--location=LOCATION인스턴스의
disableDate를 확인합니다. 이 시간 전에refresh_single_tenant_hsm_instance작업을 완료해야 합니다. 그렇지 않으면 인스턴스가 사용 중지됩니다.
인스턴스 보기
다음 역할이 있는 사용자는 단독 테넌트 Cloud HSM 인스턴스 목록과 해당 상태를 볼 수 있습니다.
- Cloud KMS 단일 테넌트 HSM 제안자
- Cloud KMS 단일 테넌트 HSM 쿼럼 구성원
- Cloud KMS 단일 테넌트 HSM 실행자
- Cloud KMS 뷰어
- Cloud KMS 관리자
인스턴스의 상태를 정기적으로 검토하세요. 인스턴스는 활성 상태를 유지하기 위해 정기적으로 새로고침해야 합니다.
Active 상태의 인스턴스를 사용할 수 있습니다. 단일 테넌트 Cloud HSM 인스턴스에서 키를 만들거나 가져와야 하는 개발자에게는 인스턴스의 리소스 식별자가 필요합니다. 리소스 식별자는 다음 형식을 사용합니다.
projects/INSTANCE_PROJECT/locations/LOCATION/singleTenantHsmInstances/INSTANCE_NAME
조직의 인스턴스를 보고 리소스 식별자를 찾으려면 다음 단계를 따르세요.
콘솔
Google Cloud 콘솔에서 KMS 인프라 페이지로 이동합니다.
단일 테넌트 HSM 인스턴스 카드에서 보기를 클릭합니다. 단일 테넌트 HSM 인스턴스 페이지에는 보기 권한이 있는 모든 단일 테넌트 Cloud HSM 인스턴스의 목록이 표시됩니다.
인스턴스의 세부정보를 보려면 인스턴스 이름을 클릭합니다. 단일 테넌트 HSM 인스턴스 세부정보 페이지에는 선택한 인스턴스의 세부정보가 표시됩니다. 여기에는 인스턴스의 전체 리소스 식별자와 인스턴스에 대해 생성된 제안 목록이 포함됩니다.
선택사항: 쿼럼 구성원의 현재 2단계 인증 (2FA) 키와 연결된 공개 키를 보거나 다운로드하려면 공개 키 가져오기를 클릭합니다. 공개 키를 비공개 2FA 키와 비교하여 활성 제어 키를 확인할 수 있습니다.
gcloud
kms single-tenant-hsm list 메서드를 사용하여 기존 인스턴스 목록을 확인합니다.
gcloud kms single-tenant-hsm list projects/PROJECT_ID/locations/LOCATION
다음을 바꿉니다.
PROJECT_ID: 단독 테넌트 Cloud HSM 인스턴스를 보려는 프로젝트의 식별자입니다.LOCATION: 단독 테넌트 Cloud HSM 인스턴스를 보려는 위치입니다.
kms single-tenant-hsm describe 메서드를 사용하여 기존 인스턴스의 세부정보를 확인합니다.
gcloud kms single-tenant-hsm describe --location=LOCATION \ --singletenanthsminstance=INSTANCE_ID
다음을 바꿉니다.
LOCATION: 단독 테넌트 Cloud HSM 인스턴스를 보려는 위치입니다.INSTANCE_ID: 세부정보를 보려는 인스턴스입니다.
인스턴스 사용
인스턴스가 ACTIVE인 동안 키를 만들고 사용할 수 있습니다. 활성 단일 테넌트 Cloud HSM 인스턴스와 동일한 위치에 있는 키링에 단일 테넌트 Cloud HSM 키를 만들 수 있습니다.
단일 테넌트 Cloud HSM 키를 만들려면 Cloud KMS 관리자 역할 외에 Cloud KMS 단일 테넌트 HSM 키 생성자 역할이 필요합니다.
단독 테넌트 Cloud HSM 키가 생성된 후에는 특별한 권한이 필요하지 않습니다.
키 만들기
단일 테넌트 Cloud HSM 키를 만들 때는 키를 만들려는 단일 테넌트 Cloud HSM 인스턴스를 지정해야 합니다. 그렇지 않으면 프로세스가 다른 키를 만드는 것과 유사합니다. 자세한 내용은 키 만들기를 참고하세요.
키 가져오기
키 자료를 단일 테넌트 Cloud HSM 키로 가져올 때는 저장할 단일 테넌트 Cloud HSM 인스턴스를 지정해야 합니다. 그렇지 않은 경우 프로세스는 다른 키를 가져오는 것과 유사합니다. 자세한 안내는 Cloud Key Management Service로 키 버전 가져오기를 참고하세요.
키 사용
키가 생성된 후 단일 테넌트 Cloud HSM 키를 사용하는 것은 다른 Cloud HSM 키를 사용하는 것과 동일합니다. 키를 사용하기 위해 단일 테넌트 Cloud HSM 인스턴스를 지정할 필요는 없습니다.
인스턴스 유지
인스턴스가 프로비저닝된 후에는 인스턴스를 유지관리해야 합니다. 유지관리 작업을 위한 제안서를 만들고, 정족수 승인을 얻은 다음, 승인된 작업을 실행하여 인스턴스를 유지관리합니다. 한 번에 하나의 제안만 활성화할 수 있습니다. 제안을 진행하지 않기로 한 경우 활성 제안을 삭제하거나 제안이 만료될 때까지 기다리지 않으면 다른 작업을 제안할 수 없습니다.
disableDate 전에 인스턴스를 새로고침해야 합니다. 인스턴스의 disableDate를 확인해야 하는 경우 인스턴스 세부정보를 확인하면 됩니다.
인스턴스 제안 보기
인스턴스의 제안을 보려면 다음 단계를 따르세요.
콘솔
Google Cloud 콘솔에서 KMS 인프라 페이지로 이동합니다.
단일 테넌트 HSM 인스턴스 카드에서 보기를 클릭합니다. 단일 테넌트 HSM 인스턴스 페이지에는 보기 권한이 있는 모든 단일 테넌트 Cloud HSM 인스턴스의 목록이 표시됩니다.
제안서를 보려는 인스턴스를 찾은 다음 인스턴스 이름을 클릭합니다. 단독 테넌트 HSM 인스턴스 세부정보 페이지에 인스턴스에 대해 생성된 제안 목록을 비롯한 인스턴스 세부정보가 표시됩니다.
선택사항: 제안서 목록을 필터링하려면 필터 표시줄을 클릭하고 필터 기준을 입력합니다. 예를 들어 승인 대기 중인 제안서만 표시하거나 성공적으로 완료된 제안서만 표시하도록 목록을 필터링할 수 있습니다.
gcloud
-
kms single-tenant-hsm proposal list메서드를 사용하여 기존 제안 목록을 확인합니다.gcloud kms single-tenant-hsm proposal list --location=LOCATION \ --singletenanthsminstance=INSTANCE_ID
다음을 바꿉니다.
LOCATION: 단독 테넌트 Cloud HSM 인스턴스를 보려는 위치입니다.INSTANCE_ID: 제안을 보려는 단독 테넌트 Cloud HSM 인스턴스의 식별자입니다.
인스턴스 새로고침
인스턴스를 새로고침하여 최신 상태를 유지하고 계획되지 않은 다운타임을 방지할 수 있습니다. 이 작업에는 쿼럼 인증이 필요합니다. 제안이 승인되면 작업이 완료되는 데 약 15~30분이 걸립니다.
인스턴스를 새로고침하면 disableDate이 새로고침 시점으로부터 120일로 설정됩니다.
-
refresh_single_tenant_hsm_instance작업 유형을 사용하여 인스턴스를 새로고침하는 제안을 만듭니다. 이 단계에는 Cloud KMS 단일 테넌트 HSM 제안자 역할이 필요합니다.gcloud kms single-tenant-hsm proposal create INSTANCE_ID \ --location LOCATION \ --single-tenant-hsm-instance-proposal-id PROPOSAL_ID \ --operation-type refresh_single_tenant_hsm_instance
다음을 바꿉니다.
INSTANCE_ID: 인스턴스의 식별자입니다.LOCATION: 인스턴스를 만든 위치입니다.PROPOSAL_ID: 이 제안에 사용할 고유 식별자입니다(예:refresh_instance).
-
제안 상태를 확인하고 상태가
PENDING이 될 때까지 기다립니다.gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID \ --location LOCATION
다음을 바꿉니다.
INSTANCE_ID: 인스턴스의 식별자입니다.PROPOSAL_ID: 제안의 식별자입니다(예:refresh_instance).LOCATION: 인스턴스를 만든 위치입니다.
상태가
PENDING이면 챌린지에 서명할 수 있습니다. -
제안서에서 과제를 가져옵니다.
gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID \ --location LOCATION \ --format="json[](quorumParameters.challenges)"
이 명령어는 JSON 형식의 챌린지 배열을 반환합니다.
-
이전 단계에서 반환된 각 챌린지에 대해
basenc --base64url -d를 사용하여 챌린지를 디코딩하고 비공개 키로 서명합니다.echo CHALLENGE_N | basenc --base64url -d > decoded-challenge-N.txt openssl dgst -sign PRIVATE_KEY_N -out signed-challenge-N.txt decoded-challenge-N.txt
다음을 바꿉니다.
N: 챌린지 번호입니다(예: 첫 번째 챌린지의 경우1, 두 번째 챌린지의 경우2등).CHALLENGE_N: 이전 단계 출력의 챌린지 번호N의 콘텐츠입니다.PRIVATE_KEY_N: 비공개 키 번호N의 경로입니다(예: 첫 번째 챌린지의 경우rsaprivate1.pem).
-
서명된 챌린지를 업로드하여 제안을 승인합니다. 한 번의 명령어로 업로드하거나 여러 번의 명령어로 업로드할 수 있습니다. 이 단계에는 Cloud KMS 단일 테넌트 HSM 쿼럼 구성원 역할이 필요합니다.
gcloud kms single-tenant-hsm proposal approve PROPOSAL_ID \ --location LOCATION \ --single_tenant_hsm_instance INSTANCE_ID \ --quorum-challenge-replies="SIGNED_QUORUM_CHALLENGE_LIST"
SIGNED_QUORUM_CHALLENGE_LIST를 JSON 형식의 챌린지 배열로 바꿉니다. 각 목록 항목은 서명된 챌린지의 경로와 해당 공개 키의 경로를 포함하는 튜플입니다. 예를 들어[('signed-challenge-1.txt','rsapub1.pem'), ('signed-challenge-2.txt','rsapub2.pem')]를 사용하여 하나의 명령어로 처음 두 개의 서명된 챌린지를 제출합니다.필요한 수의 서명된 챌린지를 업로드하면 제안 상태가
APPROVED로 업데이트됩니다. -
제안을 실행합니다. 이 단계에는 Cloud KMS 단일 테넌트 HSM 실행자 역할이 필요하며 제안서가 생성된 후 24시간 이내에 완료해야 합니다.
gcloud kms single-tenant-hsm proposal execute PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID --location LOCATION
작업이 완료된 후 인스턴스는 `ACTIVE` 상태로 유지되고
disableDate는 새로고침 시간으로부터 120일로 설정됩니다.
쿼럼 구성원 추가
인스턴스에 쿼럼 구성원을 추가할 수 있습니다. 이 작업에는 쿼럼 인증이 필요합니다. 제안이 승인되면 작업이 완료되는 데 약 15~30분이 걸립니다.
새 쿼럼 구성원의 새 RSA-2048 키 쌍을 생성합니다. 물리적 토큰에서 RSA-2048 키 쌍을 만드는 조직의 표준을 따릅니다.
비공개 키를 안전하게 저장하세요. 제안을 승인하는 데 필요합니다. 공개 키를 보관하세요. 새 쿼럼 구성원을 단일 테넌트 Cloud HSM 인스턴스에 추가하는 데 필요합니다.
-
add_quorum_member작업을 사용하여 인스턴스에 쿼럼 구성원을 추가하는 제안을 만듭니다. 이 단계에는 Cloud KMS 단일 테넌트 HSM 제안자 역할이 필요합니다.gcloud kms single-tenant-hsm proposal create INSTANCE_ID \ --location LOCATION \ --single-tenant-hsm-instance-proposal-id PROPOSAL_ID \ --operation-type add_quorum_member \ --two_factor_public_key_pem PATH_TO_PUBLIC_KEY
다음을 바꿉니다.
INSTANCE_ID: 인스턴스의 식별자입니다.LOCATION: 인스턴스를 만든 위치입니다.PROPOSAL_ID: 이 제안에 사용할 고유 식별자입니다(예:add_quorum_member).PATH_TO_PUBLIC_KEY: 새 공개 키의 경로입니다(예:rsapub4.pem).
-
제안 상태를 확인하고 상태가
PENDING이 될 때까지 기다립니다.gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID \ --location LOCATION
다음을 바꿉니다.
INSTANCE_ID: 인스턴스의 식별자입니다.PROPOSAL_ID: 제안의 식별자입니다(예:add_quorum_member).LOCATION: 인스턴스를 만든 위치입니다.
상태가
PENDING이면 챌린지에 서명할 수 있습니다. -
제안서에서 과제를 가져옵니다. 새 쿼럼 구성원을 추가하려면 기존 구성원의 쿼럼에서 서명된 챌린지와 새 키를 사용하는 새 구성원의 서명된 챌린지가 필요합니다.
gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID \ --location LOCATION \ --format="json[](requiredActionQuorumParameters.requiredChallenges,requiredActionQuorumParameters.quorumChallenges)"
이 명령어는 JSON 형식의 챌린지 배열을 반환합니다.
requiredActionQuorumParameters.requiredChallenges필드에는 등록하려는 새 키의 챌린지가 포함됩니다.requiredActionQuorumParameters.quorumChallenges필드에는 기존 키의 쿼럼에 대한 챌린지가 포함됩니다.requiredActionQuorumParameters객체의 모든 챌린지에 서명해야 합니다. -
이전 단계에서 반환된 각 챌린지에 대해
basenc --base64url -d를 사용하여 챌린지를 디코딩하고 비공개 키로 서명합니다.echo CHALLENGE_N | basenc --base64url -d > decoded-challenge-N.txt openssl dgst -sign PRIVATE_KEY_N -out signed-challenge-N.txt decoded-challenge-N.txt
다음을 바꿉니다.
N: 챌린지 번호입니다(예: 첫 번째 챌린지의 경우1, 두 번째 챌린지의 경우2등).CHALLENGE_N: 이전 단계 출력의 챌린지 번호N의 콘텐츠입니다.PRIVATE_KEY_N: 비공개 키 번호N의 경로입니다(예: 첫 번째 챌린지의 경우rsaprivate1.pem).
-
서명된 챌린지를 업로드하여 제안을 승인합니다. 한 번의 명령어로 업로드하거나 여러 번의 명령어로 업로드할 수 있습니다. 이 단계에는 Cloud KMS 단일 테넌트 HSM 쿼럼 구성원 역할이 필요합니다.
gcloud kms single-tenant-hsm proposal approve PROPOSAL_ID \ --location LOCATION \ --single_tenant_hsm_instance INSTANCE_ID \ --quorum-challenge-replies="SIGNED_QUORUM_CHALLENGE_LIST" \ --required-challenge-replies="SIGNED_REQUIRED_CHALLENGE_LIST"
다음을 바꿉니다.
SIGNED_QUORUM_CHALLENGE_LIST: 이미 등록된 비공개 키를 사용하여 서명된 챌린지의 JSON 형식 배열입니다. 각 목록 항목은 서명된 챌린지의 경로와 해당 공개 키의 경로를 포함하는 튜플입니다. 예를 들어[('signed-challenge-1.txt','rsapub1.pem'), ('signed-challenge-2.txt','rsapub2.pem')]를 사용하여 하나의 명령으로 처음 두 개의 서명된 챌린지를 제출합니다.SIGNED_REQUIRED_CHALLENGE_LIST: 새 비공개 키를 사용하여 서명된 챌린지가 포함된 JSON 형식 배열입니다. 여기서 목록 항목은 서명된 챌린지 경로와 해당 공개 키 경로가 포함된 튜플입니다(예:[('signed-challenge-newkey.txt','rsapub-newkey.pem')]).
필요한 수의 서명된 챌린지를 업로드하면 제안 상태가
APPROVED로 업데이트됩니다. -
제안을 실행합니다. 이 단계에는 Cloud KMS 단일 테넌트 HSM 실행자 역할이 필요하며 제안이 생성된 후 24시간 이내에 완료해야 합니다.
gcloud kms single-tenant-hsm proposal execute PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID --location LOCATION
작업이 완료되면 새 쿼럼 구성원이 챌린지에 참여하여 제안을 승인할 수 있습니다. 이제 추가한 공개 키가 인스턴스 세부정보의 공개 키 목록에 포함됩니다.
쿼럼 구성원 삭제
필요한 쿼럼 크기보다 쿼럼 구성원이 많은 경우 인스턴스에서 쿼럼 구성원을 삭제할 수 있습니다. 이 작업에는 쿼럼 인증이 필요합니다. 제안이 승인되면 작업이 완료되는 데 약 15~30분이 걸립니다.
-
remove_quorum_member작업을 사용하여 쿼럼 구성원을 인스턴스에서 삭제하는 제안을 만듭니다. 이 단계에는 Cloud KMS 단일 테넌트 HSM 제안자 역할이 필요합니다.gcloud kms single-tenant-hsm proposal create INSTANCE_ID \ --location LOCATION \ --single-tenant-hsm-instance-proposal-id PROPOSAL_ID \ --operation-type remove_quorum_member \ --two_factor_public_key_pem PATH_TO_PUBLIC_KEY
다음을 바꿉니다.
INSTANCE_ID: 인스턴스의 식별자입니다.LOCATION: 인스턴스를 만든 위치입니다.PROPOSAL_ID: 이 제안에 사용할 고유 식별자입니다(예:remove_quorum_member).PATH_TO_PUBLIC_KEY: 인스턴스에서 삭제할 공개 키의 경로입니다(예:rsapub3.pem). 작업이 완료되면 해당 비공개 키를 사용하여 제안을 승인할 수 없습니다.
-
제안 상태를 확인하고 상태가
PENDING이 될 때까지 기다립니다.gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID \ --location LOCATION
다음을 바꿉니다.
INSTANCE_ID: 인스턴스의 식별자입니다.PROPOSAL_ID: 제안의 식별자입니다(예:remove_quorum_member).LOCATION: 인스턴스를 만든 위치입니다.
상태가
PENDING이면 챌린지에 서명할 수 있습니다. -
제안서에서 과제를 가져옵니다.
gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID \ --location LOCATION \ --format="json[](quorumParameters.challenges)"
이 명령어는 JSON 형식의 챌린지 배열을 반환합니다.
-
이전 단계에서 반환된 각 챌린지에 대해
basenc --base64url -d를 사용하여 챌린지를 디코딩하고 비공개 키로 서명합니다.echo CHALLENGE_N | basenc --base64url -d > decoded-challenge-N.txt openssl dgst -sign PRIVATE_KEY_N -out signed-challenge-N.txt decoded-challenge-N.txt
다음을 바꿉니다.
N: 챌린지 번호입니다(예: 첫 번째 챌린지의 경우1, 두 번째 챌린지의 경우2등).CHALLENGE_N: 이전 단계 출력의 챌린지 번호N의 콘텐츠입니다.PRIVATE_KEY_N: 비공개 키 번호N의 경로입니다(예: 첫 번째 챌린지의 경우rsaprivate1.pem).
-
서명된 챌린지를 업로드하여 제안을 승인합니다. 한 번의 명령어로 업로드하거나 여러 번의 명령어로 업로드할 수 있습니다. 이 단계에는 Cloud KMS 단일 테넌트 HSM 쿼럼 구성원 역할이 필요합니다.
gcloud kms single-tenant-hsm proposal approve PROPOSAL_ID \ --location LOCATION \ --single_tenant_hsm_instance INSTANCE_ID \ --quorum-challenge-replies="SIGNED_QUORUM_CHALLENGE_LIST"
SIGNED_QUORUM_CHALLENGE_LIST를 JSON 형식의 챌린지 배열로 바꿉니다. 각 목록 항목은 서명된 챌린지의 경로와 해당 공개 키의 경로를 포함하는 튜플입니다. 예를 들어[('signed-challenge-1.txt','rsapub1.pem'), ('signed-challenge-2.txt','rsapub2.pem')]를 사용하여 하나의 명령어로 처음 두 개의 서명된 챌린지를 제출합니다.필요한 수의 서명된 챌린지를 업로드하면 제안 상태가
APPROVED로 업데이트됩니다. -
제안을 실행합니다. 이 단계에는 Cloud KMS 단일 테넌트 HSM 실행자 역할이 필요하며 제안서가 생성된 후 24시간 이내에 완료해야 합니다.
gcloud kms single-tenant-hsm proposal execute PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID --location LOCATION
작업이 완료되면 삭제된 쿼럼 구성원은 더 이상 제안을 승인하는 챌린지에 참여할 수 없습니다. 삭제한 공개 키는 더 이상 인스턴스 세부정보의 공개 키 목록에 포함되지 않습니다.
인스턴스 사용 중지
인스턴스를 사용 중지하여 모든 키에 대한 액세스를 일시적으로 차단할 수 있습니다. 이 작업에는 쿼럼 인증이 필요합니다. 제안이 승인되면 작업이 완료되는 데 약 15~30분이 소요됩니다.
인스턴스가 사용 중지된 동안 해당 인스턴스에 저장된 키는 ACTIVE로 표시되지만 사용할 수 없습니다. 사용 중지된 인스턴스의 키로 암호화 작업을 수행하려고 하면 오류가 발생합니다.
-
disable_single_tenant_hsm_instance작업 유형을 사용하여 인스턴스를 사용 중지하는 제안을 만듭니다. 이 단계에는 Cloud KMS 단일 테넌트 HSM 제안자 역할이 필요합니다.gcloud kms single-tenant-hsm proposal create INSTANCE_ID \ --location LOCATION \ --single-tenant-hsm-instance-proposal-id PROPOSAL_ID \ --operation-type disable_single_tenant_hsm_instance
다음을 바꿉니다.
INSTANCE_ID: 인스턴스의 식별자입니다.LOCATION: 인스턴스를 만든 위치입니다.PROPOSAL_ID: 이 제안에 사용할 고유 식별자입니다(예:disable_instance).
-
제안 상태를 확인하고 상태가
PENDING이 될 때까지 기다립니다.gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID \ --location LOCATION
다음을 바꿉니다.
INSTANCE_ID: 인스턴스의 식별자입니다.PROPOSAL_ID: 제안의 식별자입니다(예:disable_instance).LOCATION: 인스턴스를 만든 위치입니다.
상태가
PENDING이면 챌린지에 서명할 수 있습니다. -
제안서에서 과제를 가져옵니다.
gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID \ --location LOCATION \ --format="json[](quorumParameters.challenges)"
이 명령어는 JSON 형식의 챌린지 배열을 반환합니다.
-
이전 단계에서 반환된 각 챌린지에 대해
basenc --base64url -d를 사용하여 챌린지를 디코딩하고 비공개 키로 서명합니다.echo CHALLENGE_N | basenc --base64url -d > decoded-challenge-N.txt openssl dgst -sign PRIVATE_KEY_N -out signed-challenge-N.txt decoded-challenge-N.txt
다음을 바꿉니다.
N: 챌린지 번호입니다(예: 첫 번째 챌린지의 경우1, 두 번째 챌린지의 경우2등).CHALLENGE_N: 이전 단계 출력의 챌린지 번호N의 콘텐츠입니다.PRIVATE_KEY_N: 비공개 키 번호N의 경로입니다(예: 첫 번째 챌린지의 경우rsaprivate1.pem).
-
서명된 챌린지를 업로드하여 제안을 승인합니다. 한 번의 명령어로 업로드하거나 여러 번의 명령어로 업로드할 수 있습니다. 이 단계에는 Cloud KMS 단일 테넌트 HSM 쿼럼 구성원 역할이 필요합니다.
gcloud kms single-tenant-hsm proposal approve PROPOSAL_ID \ --location LOCATION \ --single_tenant_hsm_instance INSTANCE_ID \ --quorum-challenge-replies="SIGNED_QUORUM_CHALLENGE_LIST"
SIGNED_QUORUM_CHALLENGE_LIST를 JSON 형식의 챌린지 배열로 바꿉니다. 각 목록 항목은 서명된 챌린지의 경로와 해당 공개 키의 경로를 포함하는 튜플입니다. 예를 들어[('signed-challenge-1.txt','rsapub1.pem'), ('signed-challenge-2.txt','rsapub2.pem')]를 사용하여 하나의 명령어로 처음 두 개의 서명된 챌린지를 제출합니다.필요한 수의 서명된 챌린지를 업로드하면 제안 상태가
APPROVED로 업데이트됩니다. -
제안을 실행합니다. 이 단계에는 Cloud KMS 단일 테넌트 HSM 실행자 역할이 필요하며 제안서가 생성된 후 24시간 이내에 완료해야 합니다.
gcloud kms single-tenant-hsm proposal execute PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID --location LOCATION
작업이 완료된 후 인스턴스는
DISABLED상태로 유지되며 다시 사용 설정될 때까지 사용할 수 없습니다.
인스턴스 사용 설정
DISABLED 인스턴스를 다시 사용 설정하여 인스턴스와 키에 대한 액세스 권한을 복원할 수 있습니다.
이 작업에는 쿼럼 인증이 필요합니다. 제안이 승인되면 작업이 완료되는 데 약 15~30분이 걸립니다.
-
enable_single_tenant_hsm_instance작업 유형을 사용하여 인스턴스를 사용 설정하는 제안을 만듭니다. 이 단계에는 Cloud KMS 단일 테넌트 HSM 제안자 역할이 필요합니다.gcloud kms single-tenant-hsm proposal create INSTANCE_ID \ --location LOCATION \ --single-tenant-hsm-instance-proposal-id PROPOSAL_ID \ --operation-type enable_single_tenant_hsm_instance
다음을 바꿉니다.
INSTANCE_ID: 인스턴스의 식별자입니다.LOCATION: 인스턴스를 만든 위치입니다.PROPOSAL_ID: 이 제안에 사용할 고유 식별자입니다(예:enable_instance).
-
제안 상태를 확인하고 상태가
PENDING이 될 때까지 기다립니다.gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID \ --location LOCATION
다음을 바꿉니다.
INSTANCE_ID: 인스턴스의 식별자입니다.PROPOSAL_ID: 제안의 식별자입니다(예:enable_instance).LOCATION: 인스턴스를 만든 위치입니다.
상태가
PENDING이면 챌린지에 서명할 수 있습니다. -
제안서에서 과제를 가져옵니다.
gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID \ --location LOCATION \ --format="json[](quorumParameters.challenges)"
이 명령어는 JSON 형식의 챌린지 배열을 반환합니다.
-
이전 단계에서 반환된 각 챌린지에 대해
basenc --base64url -d를 사용하여 챌린지를 디코딩하고 비공개 키로 서명합니다.echo CHALLENGE_N | basenc --base64url -d > decoded-challenge-N.txt openssl dgst -sign PRIVATE_KEY_N -out signed-challenge-N.txt decoded-challenge-N.txt
다음을 바꿉니다.
N: 챌린지 번호입니다(예: 첫 번째 챌린지의 경우1, 두 번째 챌린지의 경우2등).CHALLENGE_N: 이전 단계 출력의 챌린지 번호N의 콘텐츠입니다.PRIVATE_KEY_N: 비공개 키 번호N의 경로입니다(예: 첫 번째 챌린지의 경우rsaprivate1.pem).
-
서명된 챌린지를 업로드하여 제안을 승인합니다. 한 번의 명령어로 업로드하거나 여러 번의 명령어로 업로드할 수 있습니다. 이 단계에는 Cloud KMS 단일 테넌트 HSM 쿼럼 구성원 역할이 필요합니다.
gcloud kms single-tenant-hsm proposal approve PROPOSAL_ID \ --location LOCATION \ --single_tenant_hsm_instance INSTANCE_ID \ --quorum-challenge-replies="SIGNED_QUORUM_CHALLENGE_LIST"
SIGNED_QUORUM_CHALLENGE_LIST를 JSON 형식의 챌린지 배열로 바꿉니다. 각 목록 항목은 서명된 챌린지의 경로와 해당 공개 키의 경로를 포함하는 튜플입니다. 예를 들어[('signed-challenge-1.txt','rsapub1.pem'), ('signed-challenge-2.txt','rsapub2.pem')]를 사용하여 하나의 명령어로 처음 두 개의 서명된 챌린지를 제출합니다.필요한 수의 서명된 챌린지를 업로드하면 제안 상태가
APPROVED로 업데이트됩니다. -
제안을 실행합니다. 이 단계에는 Cloud KMS 단일 테넌트 HSM 실행자 역할이 필요하며 제안서가 생성된 후 24시간 이내에 완료해야 합니다.
gcloud kms single-tenant-hsm proposal execute PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID --location LOCATION
작업이 완료되면 인스턴스가 `ACTIVE` 상태로 돌아가고
disableDate이 갱신 시간으로부터 120일로 설정됩니다.
인스턴스 삭제
인스턴스를 삭제하여 인스턴스와 키를 영구적으로 폐기할 수 있습니다. 이 작업에는 쿼럼 인증이 필요합니다. 제안이 승인되면 작업이 완료되는 데 약 15~30분이 소요됩니다.
인스턴스가 삭제된 후에도 해당 인스턴스에 저장된 키는 ACTIVE로 표시되지만 사용할 수 없습니다. 삭제된 인스턴스의 키로 암호화 작업을 수행하려고 하면 오류가 발생합니다.
-
delete_single_tenant_hsm_instance작업 유형을 사용하여 인스턴스를 삭제하는 제안을 만듭니다. 이 단계에는 Cloud KMS 단일 테넌트 HSM 제안자 역할이 필요합니다.gcloud kms single-tenant-hsm proposal create INSTANCE_ID \ --location LOCATION \ --single-tenant-hsm-instance-proposal-id PROPOSAL_ID \ --operation-type delete_single_tenant_hsm_instance
다음을 바꿉니다.
INSTANCE_ID: 삭제하려는 인스턴스의 식별자입니다.LOCATION: 인스턴스를 만든 위치입니다.PROPOSAL_ID: 이 제안에 사용할 고유 식별자입니다(예:delete_instance).
-
제안 상태를 확인하고 상태가
PENDING이 될 때까지 기다립니다.gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID \ --location LOCATION
다음을 바꿉니다.
INSTANCE_ID: 인스턴스의 식별자입니다.PROPOSAL_ID: 제안의 식별자입니다(예:delete_instance).LOCATION: 인스턴스를 만든 위치입니다.
상태가
PENDING이면 챌린지에 서명할 수 있습니다. -
제안서에서 과제를 가져옵니다.
gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID \ --location LOCATION \ --format="json[](quorumParameters.challenges)"
이 명령어는 JSON 형식의 챌린지 배열을 반환합니다.
-
이전 단계에서 반환된 각 챌린지에 대해
basenc --base64url -d를 사용하여 챌린지를 디코딩하고 비공개 키로 서명합니다.echo CHALLENGE_N | basenc --base64url -d > decoded-challenge-N.txt openssl dgst -sign PRIVATE_KEY_N -out signed-challenge-N.txt decoded-challenge-N.txt
다음을 바꿉니다.
N: 챌린지 번호입니다(예: 첫 번째 챌린지의 경우1, 두 번째 챌린지의 경우2등).CHALLENGE_N: 이전 단계 출력의 챌린지 번호N의 콘텐츠입니다.PRIVATE_KEY_N: 비공개 키 번호N의 경로입니다(예: 첫 번째 챌린지의 경우rsaprivate1.pem).
-
서명된 챌린지를 업로드하여 제안을 승인합니다. 한 번의 명령어로 업로드하거나 여러 번의 명령어로 업로드할 수 있습니다. 이 단계에는 Cloud KMS 단일 테넌트 HSM 쿼럼 구성원 역할이 필요합니다.
gcloud kms single-tenant-hsm proposal approve PROPOSAL_ID \ --location LOCATION \ --single_tenant_hsm_instance INSTANCE_ID \ --quorum-challenge-replies="SIGNED_QUORUM_CHALLENGE_LIST"
SIGNED_QUORUM_CHALLENGE_LIST를 JSON 형식의 챌린지 배열로 바꿉니다. 각 목록 항목은 서명된 챌린지의 경로와 해당 공개 키의 경로를 포함하는 튜플입니다. 예를 들어[('signed-challenge-1.txt','rsapub1.pem'), ('signed-challenge-2.txt','rsapub2.pem')]를 사용하여 하나의 명령어로 처음 두 개의 서명된 챌린지를 제출합니다.필요한 수의 서명된 챌린지를 업로드하면 제안 상태가
APPROVED로 업데이트됩니다. -
인스턴스를 삭제하고 이 인스턴스에서 생성된 키를 사용하여 암호화된 모든 데이터를 암호-파쇄할 것인지 확인한 후 제안을 실행합니다. 이 단계에는 Cloud KMS 단일 테넌트 HSM 실행자 역할이 필요하며 제안서가 생성된 후 24시간 이내에 완료해야 합니다.
경고: 다음 명령어는 되돌릴 수 없습니다. 영구적인 데이터 손실이 발생할 수 있습니다. Google에서는 삭제된 인스턴스의 키를 복구할 수 없습니다.gcloud kms single-tenant-hsm proposal execute PROPOSAL_ID \ --single_tenant_hsm_instance INSTANCE_ID --location LOCATION
작업이 완료되면 인스턴스가 삭제됩니다.
제안 삭제
제안을 승인하거나 실행하지 않기로 결정한 경우 만료되기 전에 제안을 삭제할 수 있습니다. 대기 중인 제안서를 삭제하면 승인할 수 없으며 새 제안서를 만들 수 있습니다. 승인된 제안을 삭제하면 작업을 실행할 수 없습니다.
-
proposal delete명령어를 사용하여 제안을 삭제합니다. 이 작업을 수행하려면 Cloud KMS 단일 테넌트 HSM 제안자 역할이 필요합니다.gcloud kms single-tenant-hsm proposal delete PROPOSAL_ID \ --location LOCATION \ --single_tenant_hsm_instance INSTANCE_ID
다음을 바꿉니다.
INSTANCE_ID: 인스턴스의 식별자입니다.LOCATION: 인스턴스를 만든 위치입니다.PROPOSAL_ID: 삭제할 제안서의 고유 식별자입니다(예:proposal_to_delete).
다음 단계
- 단독 테넌트 Cloud HSM에 대해 자세히 알아보세요.