이 문서에서는 키 관리 시스템 (KMS) 키를 가져오고 내보내는 방법을 보여줍니다. 이러한 작업은 kubectl 명령줄 인터페이스 (CLI)를 사용하며 다음 Kubernetes 리소스와 상호작용합니다.
이러한 리소스에 대한 자세한 내용은 KMS API 개요를 참고하세요.
KMS 지원 키의 전체 목록과 세부정보를 보려면 키 관리 시스템 문서의 지원되는 키 섹션을 참고하세요.
이 문서는 Google Distributed Cloud (GDC) 에어갭 내에서 키 관리 작업을 실행할 때 애플리케이션 운영자 그룹 내의 사용자를 대상으로 합니다. 자세한 내용은 GDC 오프라인 문서 대상을 참고하세요.
시작하기 전에
키를 가져오거나 내보내기 전에 필요한 권한이 있어야 하며 환경을 준비해야 합니다.
IAM 역할 요청
조직 IAM 관리자에게 문의하여 프로젝트에 다음 역할을 요청하세요.
- KMS 키 가져오기 관리자 (
kms-keyimport-admin):KeyImport리소스를 만들고, 업데이트하고, 삭제합니다. - KMS 키 내보내기 관리자 (
kms-keyexport-admin):KeyExport리소스를 만들고, 업데이트하고, 삭제합니다.
개발 환경 준비
구성요소 설치에 설명된 대로
kubectlCLI를 설치합니다.kubectl액세스를 구성하려면 kubeconfig 파일을 생성하세요.
내보낸 키 가져오기
내보낸 키를 가져오려면 다음 단계를 완료하세요.
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와 서명 키 사이).