이 문서에서는 키 관리 시스템 (KMS) 키를 가져오고 내보내는 방법을 보여줍니다. 이러한 작업은 kubectl 명령줄 인터페이스 (CLI)를 사용하고 다음 Kubernetes 리소스와 상호작용합니다.
이러한 리소스에 대한 자세한 내용은 KMS API 개요를 참조하세요.
KMS 지원 키의 전체 목록과 세부정보를 보려면 키 관리 시스템 문서의 지원되는 키 섹션을 참조하세요.
이 문서는 Google Distributed Cloud (GDC) 에어 갭 내에서 키 관리 작업을 수행할 때 애플리케이션 운영자 그룹 내의 사용자를 대상으로 합니다. 자세한 내용은 GDC 에어 갭 문서의 사용자층을 참조하세요.
시작하기 전에
키를 가져오거나 내보내기 전에 필요한 권한이 있어야 하고 환경을 준비해야 합니다.
IAM 역할 요청
조직 IAM 관리자에게 문의하여 프로젝트에서 다음 역할을 요청하세요.
- KMS 키 가져오기 관리자 (
kms-keyimport-admin):KeyImport리소스를 만들고 업데이트하고 삭제합니다. - KMS 키 내보내기 관리자 (
kms-keyexport-admin):KeyExport리소스를 만들고 업데이트하고 삭제합니다.
개발 환경 준비
kubeconfig 파일을 생성하여
kubectl액세스를 구성합니다.
내보낸 키 가져오기
내보낸 키를 가져오려면 다음 단계를 완료하세요.
YAML 파일을 만들고
KeyImport리소스를kind객체의 값으로 추가합니다.apiVersion: "kms.gdc.goog/v1" kind: KeyImport metadata: name: KEY_IMPORT_NAME namespace: PROJECT spec: context: mechanism: MECHANISM다음 변수를 바꿉니다.
- KEY_IMPORT_NAME 리소스의 이름
(예:
key-import-test)KeyImport - 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 키와 서명 키 사이).