이 페이지에서는 애플리케이션 운영자 (AO)가 내보낸 키 관리 시스템 (KMS) 키에서 키 가져오기 작업을 실행하는 방법을 설명합니다. AO는 다음 리소스에서 kubectl 명령줄 인터페이스 (CLI)를 사용하여 가져오기 및 내보내기 작업을 실행합니다.
이러한 리소스에 대한 자세한 내용은 KMS API 개요를 참고하세요.
키 관리 시스템 (KMS) 페이지의 지원되는 키 섹션을 참고하여 KMS 지원 키의 전체 목록과 세부정보를 확인하세요.
시작하기 전에
KMS 작업을 수행하기 전에 관리 API 서버에 액세스하고 필요한 권한을 얻도록 kubectl를 구성합니다.
Management API 서버 액세스 구성
관리 API 서버에 액세스하도록 kubectl를 구성합니다.
- 아직 수행하지 않았다면 gdcloud CLI-line 인터페이스 (CLI)를 사용하여 관리 API 서버의 kubeconfig 파일을 가져옵니다.
MANAGEMENT_API_SERVER환경 변수를 설정합니다.export MANAGEMENT_API_SERVER=PATH_TO_KUBECONFIGPATH_TO_KUBECONFIG를 생성된 kubeconfig 파일의 경로로 바꿉니다.
필수 권한
필요한 권한을 얻으려면 조직 IAM 관리자에게 KMS 키 가져오기 관리자(kms-keyimport-admin) 및 KMS 키 내보내기 관리자 (kms-keyexport-admin) 역할을 부여해 달라고 요청하세요.
내보낸 키 가져오기
내보낸 키를 가져오려면 다음 단계를 완료하세요.
YAML 파일을 만들고
kind객체의 값으로KeyImport리소스를 추가합니다.apiVersion: "kms.gdc.goog/v1" kind: KeyImport metadata: name: KEY_IMPORT_NAME namespace: PROJECT spec: context: mechanism: MECHANISM다음 변수를 바꿉니다.
- KEY_IMPORT_NAME:
KeyImport리소스의 이름입니다(예:key-import-test). - PROJECT: 프로젝트 네임스페이스의 이름입니다(예:
kms-test1). - MECHANISM: 키의 키 공유 메커니즘입니다(예: `EDCH_P521_AES256`).
- KEY_IMPORT_NAME:
YAML 파일의 콘텐츠를 KMS에 적용하고
KeyImport리소스를 만듭니다.kubectl apply -f FILENAME.yamlFILENAME를 YAML 파일 이름으로 바꿉니다.
내부적으로 생성된 키 쌍의 공개 키를 사용하여 KMS는
KeyImport리소스의 상태를AwaitingKeyToImport로 업데이트합니다. 계속하려면 리소스의 상태를 확인하고 KMS에서 생성된 공개 키를 가져와야 합니다.KeyImport리소스의 상태를 확인하고 KMS 생성 공개 키를 가져오려면 다음을 실행하세요.kubectl describe keyimport KEY_IMPORT_NAME --namespace PROJECT다음 변수를 바꿉니다.
- KEY_IMPORT_NAME:
KeyImport리소스 이름(예:key-import-test) - PROJECT: 프로젝트 네임스페이스의 이름입니다(예:
kms-test1).
명령어를 실행하면 다음과 비슷한 출력이 표시됩니다.
... Status: Conditions: Last Transition Time: 2022-12-14T20:43:50Z Message: waiting for user to provide KeyToImport Observed Generation: 1 Reason: AwaitingKeyToImport Status: False Type: Ready Imported Key Ref: Kind: KeyImport Name: key-import-test Peer Context: Private Key: Public Key: PUBLIC_KEY Events: <none>PUBLIC_KEY 값은 KMS에서 생성된 공개 키를 나타냅니다. 공개 키를 복사하고 다음 단계에서
KeyExport리소스에 추가합니다.- KEY_IMPORT_NAME:
다른 YAML 파일을 만들고
KeyExport리소스를kind객체의 값으로 추가하고 다음 콘텐츠를 추가합니다.apiVersion: "kms.gdc.goog/v1" kind: KeyExport metadata: name: KEY_EXPORT_NAME namespace: PROJECT spec: context: mechanism: MECHANISM publicKey: PUBLIC_KEY keyToExport: kind: KEY_PRIMITIVE name: KEY_NAME다음 변수를 바꿉니다.
- KEY_EXPORT_NAME:
KeyExport리소스의 이름입니다(예:key-export-test). PROJECT: 프로젝트 네임스페이스의 이름입니다(예:
kms-test1).MECHANISM: 키의 키 공유 메커니즘입니다(예: `EDCH_P521_AES256`).
PUBLIC_KEY:
keyImport.Status.PeerContext.PublicKey의 공개 키입니다.KEY_PRIMITIVE: 키의 CRD입니다(예: aeadkey 및 signingkey).
KEY_NAME: 키의 이름입니다(예:
key-1).
- KEY_EXPORT_NAME:
YAML 파일의 콘텐츠를 KMS에 적용하고
KeyExport리소스를 만듭니다.kubectl apply -f FILENAME.yamlFILENAME를 YAML 파일 이름으로 바꿉니다.
명령어를 실행하면 KMS가
KeyExport리소스의 상태를 업데이트하고 내보낸 키를 생성합니다. 내보낸 키를 가져오려면 리소스의 상태를 확인하세요.리소스의 상태를 확인하려면 다음을 실행하세요.
kubectl describe keyexport KEY_EXPORT_NAME --namespace PROJECT다음 변수를 바꿉니다.
- KEY_EXPORT_NAME:
KeyExport리소스의 이름입니다(예:key-export-test). - PROJECT: 프로젝트 네임스페이스의 이름입니다(예:
kms-test1).
명령어를 실행하면 다음과 비슷한 출력이 표시됩니다.
... Status: Conditions: Last Transition Time: 2022-12-14T20:45:57Z Message: key successfully exported Observed Generation: 1 Reason: KeyExportCompleted Status: True Type: Ready Exported Key: EXPORTED_KEYEXPORTED_KEY는 내보낸 키의 메타데이터를 나타냅니다. EXPORTED_KEY의 콘텐츠를 복사하여 다음 단계를 계속합니다.
- KEY_EXPORT_NAME:
KeyImport리소스가 포함된 YAML 파일을 수정하고keyexport.status.exportedkey의 출력에서 복사한 콘텐츠를 추가합니다.apiVersion: "kms.gdc.goog/v1" kind: KeyImport metadata: name: key-import-test namespace: kms-test1 spec: context: mechanism: EDCH_P521_AES256 keyToImport: EXPORTED_KEYYAML 파일을 수정한 후 콘텐츠를 KMS에 적용합니다.
kubectl apply -f FILENAME.yaml명령어를 실행하면 KMS가 제공된 내보낸 키를 가져옵니다.
가져온 키에 관한 세부정보를 보려면 다음을 실행하세요.
kubectl get keyimport KEY_IMPORT_NAME다음과 비슷한 출력이 표시됩니다.
NAMESPACE NAME AGE READY REASON KEY KIND kms-test1 KEY_IMPORT_NAME 60s True KeyImportCompleted KEY_PRIMITIVEKEY_PRIMITIVE는 가져온 키의 종류를 나타냅니다(AEAD와 서명 키 사이).