Mengimpor dan mengekspor kunci

Dokumen ini menunjukkan cara mengimpor dan mengekspor kunci Key Management System (KMS). Operasi ini menggunakan antarmuka command line (CLI) kubectl dan berinteraksi dengan resource Kubernetes berikut:

Untuk melihat detail selengkapnya tentang resource ini, lihat Ringkasan KMS API.

Lihat bagian Kunci yang didukung dalam dokumen Sistem pengelolaan kunci untuk melihat daftar lengkap dan detail kunci yang didukung KMS.

Dokumen ini ditujukan untuk audiens dalam grup operator aplikasi saat melakukan operasi pengelolaan kunci dalam Google Distributed Cloud (GDC) dengan air gap. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi audiens untuk GDC yang terisolasi dari jaringan.

Sebelum memulai

Sebelum mengimpor atau mengekspor kunci, Anda harus memiliki izin yang diperlukan dan menyiapkan lingkungan Anda.

Meminta peran IAM

Hubungi Admin IAM Organisasi Anda untuk meminta peran berikut di project Anda:

  • Admin Impor Kunci KMS (kms-keyimport-admin): membuat, memperbarui, dan menghapus resource KeyImport.
  • Admin Ekspor Kunci KMS (kms-keyexport-admin): membuat, memperbarui, dan menghapus KeyExport resource.

Menyiapkan lingkungan Anda

Mengimpor kunci yang diekspor

Untuk mengimpor kunci yang diekspor, selesaikan langkah-langkah berikut:

  1. Buat file YAML, lalu tambahkan resource KeyImport sebagai nilai objek kind:

    apiVersion: "kms.gdc.goog/v1"
    kind: KeyImport
    metadata:
      name: KEY_IMPORT_NAME
      namespace: PROJECT
    spec:
      context:
        mechanism: MECHANISM
    

    Ganti variabel berikut:

    • KEY_IMPORT_NAME: nama resource KeyImport — misalnya: key-import-test.
    • PROJECT: nama namespace project — misalnya: kms-test1.
    • MECHANISM: mekanisme berbagi kunci — misalnya: `EDCH_P521_AES256` .
  2. Terapkan isi file YAML ke KMS dan buat resource KeyImport:

    kubectl apply -f FILENAME.yaml
    

    Ganti FILENAME dengan nama file YAML.

    Dengan kunci publik pasangan kunci yang dibuat secara internal, KMS memperbarui status resource KeyImport menjadi AwaitingKeyToImport. Untuk melanjutkan, Anda perlu melihat status resource dan mendapatkan kunci publik yang dibuat KMS.

  3. Untuk melihat status resource KeyImport dan mendapatkan kunci publik yang dihasilkan KMS, jalankan perintah berikut:

    kubectl describe keyimport KEY_IMPORT_NAME --namespace PROJECT
    

    Ganti variabel berikut:

    • KEY_IMPORT_NAME: nama resource KeyImport — misalnya, key-import-test.
    • PROJECT: nama namespace project — misalnya: kms-test1.

    Setelah menjalankan perintah, Anda akan melihat output yang mirip dengan berikut ini:

    ...
    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>
    

    Nilai PUBLIC_KEY mewakili kunci publik yang dihasilkan KMS. Salin kunci publik, lalu tambahkan ke resource KeyExport pada langkah berikutnya.

  4. Buat file YAML lain, tambahkan resource KeyExport sebagai nilai objek kind, dan konten berikut:

    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
    

    Ganti variabel berikut:

    • KEY_EXPORT_NAME: nama resource KeyExport — misalnya: key-export-test.
    • PROJECT: nama namespace project — misalnya: kms-test1.

    • MECHANISM: mekanisme berbagi kunci — misalnya: `EDCH_P521_AES256` .

    • PUBLIC_KEY: kunci publik dari keyImport.Status.PeerContext.PublicKey.

    • KEY_PRIMITIVE: CRD kunci—misalnya, aeadkey dan signingkey.

    • KEY_NAME: nama kunci—misalnya, key-1.

  5. Terapkan isi file YAML ke KMS dan buat resource KeyExport:

    kubectl apply -f FILENAME.yaml
    

    Ganti FILENAME dengan nama file YAML.

    Setelah menjalankan perintah, KMS akan memperbarui status resource KeyExport dan membuat kunci yang diekspor. Untuk mendapatkan kunci yang diekspor, lihat status resource.

  6. Untuk melihat status resource, jalankan perintah berikut:

    kubectl describe keyexport KEY_EXPORT_NAME --namespace PROJECT
    

    Ganti variabel berikut:

    • KEY_EXPORT_NAME: nama resource KeyExport — misalnya, key-export-test.
    • PROJECT: nama namespace project—misalnya: kms-test1.

    Setelah menjalankan perintah, Anda akan melihat output yang mirip dengan berikut ini:

    ...
    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 merepresentasikan metadata kunci yang diekspor. Salin konten di EXPORTED_KEY untuk melanjutkan ke langkah berikutnya.

  7. Edit file YAML yang berisi resource KeyImport, lalu tambahkan konten yang Anda salin dari output di 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. Setelah mengedit file YAML, terapkan isinya ke KMS:

    kubectl apply -f FILENAME.yaml
    

    Setelah menjalankan perintah, KMS akan mengimpor kunci yang diekspor yang Anda berikan.

  9. Untuk melihat detail kunci yang diimpor, jalankan perintah berikut:

    kubectl get keyimport KEY_IMPORT_NAME
    

    Anda akan melihat output yang mirip dengan berikut ini:

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

    KEY_PRIMITIVE merepresentasikan jenis kunci yang Anda impor, antara kunci AEAD dan Penandatanganan.