키 가져오기 및 내보내기

이 페이지에서는 애플리케이션 운영자 (AO)가 내보낸 키 관리 시스템 (KMS) 키에서 키 가져오기 작업을 실행하는 방법을 설명합니다. AO는 다음 리소스에서 kubectl 명령줄 인터페이스 (CLI)를 사용하여 가져오기 및 내보내기 작업을 실행합니다.

이러한 리소스에 대한 자세한 내용은 KMS API 개요를 참고하세요.

키 관리 시스템 (KMS) 페이지의 지원되는 키 섹션을 참고하여 KMS 지원 키의 전체 목록과 세부정보를 확인하세요.

시작하기 전에

계속하기 전에 다음 사항을 확인하세요.

  • 관리 API 서버에 액세스하도록 구성된 kubectl 명령어 이렇게 하려면 kubeconfig 파일 가져오기gdcloud 명령줄 인터페이스 (CLI) 섹션을 따르세요.

  • KMS 키 가져오기 관리자 및 KMS 키 내보내기 관리자 역할 내보낸 키를 가져오는 데 필요한 권한을 얻으려면 플랫폼 관리자 (PA)에게 KMS 키 가져오기 관리자(kms-keyimport-admin) 및 KMS 키 내보내기 관리자 (kms-keyexport-admin) 역할을 부여해 달라고 요청하세요.

내보낸 키 가져오기

내보낸 키를 가져오려면 다음 단계를 완료하세요.

  1. 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`).
  2. YAML 파일의 콘텐츠를 KMS에 적용하고 KeyImport 리소스를 만듭니다.

    kubectl apply -f FILENAME.yaml
    

    FILENAME를 YAML 파일 이름으로 바꿉니다.

    내부적으로 생성된 키 쌍의 공개 키를 사용하여 KMS는 KeyImport 리소스의 상태를 AwaitingKeyToImport로 업데이트합니다. 계속하려면 리소스의 상태를 확인하고 KMS에서 생성된 공개 키를 가져와야 합니다.

  3. 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 리소스에 추가합니다.

  4. 다른 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)

  5. YAML 파일의 콘텐츠를 KMS에 적용하고 KeyExport 리소스를 만듭니다.

    kubectl apply -f FILENAME.yaml
    

    FILENAME를 YAML 파일 이름으로 바꿉니다.

    명령어를 실행하면 KMS가 KeyExport 리소스의 상태를 업데이트하고 내보낸 키를 생성합니다. 내보낸 키를 가져오려면 리소스의 상태를 확인하세요.

  6. 리소스의 상태를 확인하려면 다음을 실행하세요.

    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_KEY
    

    EXPORTED_KEY는 내보낸 키의 메타데이터를 나타냅니다. EXPORTED_KEY의 콘텐츠를 복사하여 다음 단계로 계속 진행합니다.

  7. 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_KEY
    
  8. YAML 파일을 편집한 후 콘텐츠를 KMS에 적용합니다.

    kubectl apply -f FILENAME.yaml
    

    명령어를 실행하면 KMS에서 제공된 내보낸 키를 가져옵니다.

  9. 가져온 키에 관한 세부정보를 보려면 다음을 실행하세요.

    kubectl get keyimport KEY_IMPORT_NAME
    

    다음과 비슷한 출력이 표시됩니다.

    NAMESPACE   NAME             AGE    READY   REASON              KEY KIND
    kms-test1  KEY_IMPORT_NAME   60s    True    KeyImportCompleted  KEY_PRIMITIVE
    

    KEY_PRIMITIVE는 가져온 키의 종류를 나타냅니다(AEAD 키와 서명 키 사이).