Mengimpor dan mengekspor kunci

Halaman ini mencakup petunjuk bagi Operator Aplikasi (AO) untuk melakukan operasi impor kunci dari kunci sistem pengelolaan kunci (KMS) yang diekspor. AO melakukan operasi impor dan ekspor menggunakan antarmuka command line (CLI) kubectl dari resource berikut:

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

Lihat bagian Kunci yang didukung di halaman Sistem pengelolaan kunci (KMS) untuk melihat daftar lengkap dan detail kunci yang didukung KMS.

Sebelum memulai

Sebelum melanjutkan, pastikan Anda memiliki hal berikut:

  • Perintah kubectl dikonfigurasi untuk mengakses server Management API. Untuk melakukannya, ikuti bagian Mendapatkan file kubeconfig dan antarmuka command line (CLI) gdcloud.

  • Peran Admin Impor Kunci KMS dan Admin Ekspor Kunci KMS. Untuk mendapatkan izin yang diperlukan untuk mengimpor kunci yang diekspor, minta Administrator Platform (PA) untuk memberi Anda peran Admin Impor Kunci KMS (kms-keyimport-admin) dan Admin Ekspor Kunci KMS (kms-keyexport-admin).

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