Tentang kunci enkripsi Apigee

Halaman ini berlaku untuk Apigee, tetapi tidak untuk Apigee hybrid.

Lihat Dokumentasi Apigee Edge.

Bagian ini menjelaskan jenis-jenis kunci enkripsi dan cara membuatnya.

Selama proses penyiapan Apigee, Anda akan membuat hal berikut Kunci enkripsi Cloud Key Management Service:

Jenis Kunci Kapan Dibuat Deskripsi
Kunci enkripsi bidang kontrol Langkah 3: Buat organisasi (Langganan)

Langkah 3: Konfigurasi hosting dan enkripsi (Bayar sesuai penggunaan)

Saat menggunakan residensi data, Apigee menggunakan kunci ini untuk mengenkripsi Analytics yang disimpan di BigQuery di dalam project tenant.

Mengenkripsi proxy API, Server Target, Truststores dan Keystore, data analitik, dan apa pun yang dibagikan di seluruh runtime.

Apigee akan meminta Anda menyediakan dua kunci CMEK bidang kontrol. Kunci ini dan Kunci enkripsi data konsumen API.

Lokasi kunci enkripsi bidang kontrol harus cocok dengan lokasi bidang kontrol.

Kunci enkripsi data konsumen API Langkah 3: Buat organisasi (Langganan)

Langkah 3: Konfigurasi hosting dan enkripsi (Bayar sesuai penggunaan)

Saat menggunakan residensi data, Apigee memerlukan satu kunci region, di selain atribut kunci enkripsi bidang kontrol, yang digunakan untuk layanan yang hanya tersedia di satu region. Misalnya, Dataflow, dan Cloud SQL.

Lokasi kunci enkripsi data konsumen API harus berada dalam lokasi bidang kontrol.

Kunci enkripsi database runtime Langkah 3: Buat organisasi Apigee (Langganan)

Langkah 3: Konfigurasi hosting dan enkripsi (Bayar sesuai penggunaan)

Mengenkripsi data aplikasi seperti KVM, cache, dan klien secret, yang kemudian disimpan dalam database.

Ada satu kunci enkripsi database runtime per organisasi — semua instance/region di organisasi memiliki domain yang sama kunci enkripsi database runtime.

Kunci enkripsi database runtime mendukung semua Cloud KMS lokasi yang mendukung Cloud HSM dan Cloud EKM. Google merekomendasikan menggunakan lokasi multi-regional (seperti us atau europe) atau lokasi dual-regional (eur5, nam4) saat Anda membuat kunci ini.

Lokasi kunci enkripsi database runtime harus berada dalam lokasi bidang kontrol saat menggunakan residensi data.

Lokasi key ring dapat dipilih bergantung pada yang Anda gunakan: Apigee wizard penyediaan tidak memungkinkan Anda memilih lokasi untuk key ring; Android akan memilih lokasi untuk Anda. Jika Anda menggunakan baris perintah, Anda dapat memilih lokasi key ring.

Kunci enkripsi disk Langkah 5: Buat instance runtime Apigee (Langganan)

Langkah 3: Konfigurasi hosting dan enkripsi (Bayar sesuai penggunaan)

Mengenkripsi data instance runtime sebelum ditulis ke disk.

Jenis data yang dienkripsi mencakup Key Management System (KMS); Kunci Peta Nilai (KVM); definisi kuota, bucket, dan penghitung; dan semua data yang disimpan dalam cache. Data KMS mencakup produk API, developer, developer aplikasi, token OAuth (termasuk token akses, token refresh, dan kode otorisasi), dan kunci API.

Kunci ini terletak di region yang sama dengan instance runtime; kapan membuat kunci baru, cocokkan lokasi kunci dengan runtime Anda di lokasi instance.

Setiap kombinasi instance/region memiliki kunci enkripsi disk sendiri.

Poin utama

Perhatikan hal-hal berikut saat membuat kunci enkripsi database disk dan runtime:

  • Lokasi kunci enkripsi database runtime Apigee mendukung semua Lokasi Cloud KMS yang mendukung Cloud HSM dan Cloud EKM.
  • Lokasi kunci enkripsi disk harus cocok dengan lokasi runtime di mana kunci tersebut digunakan.
  • Setelah disetel, Anda tidak dapat mengubah lokasi kedua tombol tersebut.
  • Semua kunci harus berada dalam key ring.
  • Kunci dari jenis yang berbeda harus berada di key ring terpisah; kunci enkripsi disk tidak boleh berada dalam key ring yang sama dengan kunci enkripsi database runtime.
  • Kunci harus memiliki purpose. Jika Anda menggunakan baris perintah untuk membuat kunci baru, tetapkan purpose ke encryption. Jika Anda menggunakan konsol Google Cloud, pilih Symmetric mengenkripsi/mendekripsi sesuai tujuannya.
  • Kunci ditentukan oleh jalur kunci, yang menggunakan pola:
    projects/PROJECT_ID/locations/KEY_LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME

Mencantumkan kunci yang sudah ada

Jika Anda sudah membuat kunci enkripsi Cloud KMS baru untuk Apigee, Anda dapat menggunakannya daripada membuat kunci baru selama penyiapan.

Untuk mencantumkan semua kunci KMS dalam key ring:

Jalankan Perintah gcloud kms keys list:

gcloud kms keys list --keyring KEY_RING_NAME --location KEY_RING_LOCATION

Ganti kode berikut:

  • KEY_RING_NAME: nama key ring. Misalnya, my-key-ring.
  • KEY_RING_LOCATION: lokasi fisik key ring, Misalnya, us-west1.

Atau, Anda dapat melihat kunci Anda di Konsol Google Cloud.

Membuat kunci baru di command line

Anda dapat membuat key ring dan kunci pada baris perintah atau di konsol Google Cloud.

Setiap jenis kunci harus memiliki key ring-nya sendiri. Misalnya, disk Anda kunci enkripsi dapat disimpan dalam satu key ring, tetapi database runtime Anda kunci enkripsi harus disimpan dalam key ring terpisah.

Langkah-langkah berikut menjelaskan cara membuat {i>key ring <i}dan sebuah kunci, serta cara memberikan akses kepada Agen Layanan Apigee untuk menggunakan kunci baru. Berkreasi key ring dan kunci untuk bidang kontrol (jika menggunakan residensi data), database runtime, dan disk runtime.

  1. Buat key ring baru menggunakan Perintah gcloud kms keyrings create:

    Bidang kontrol

    Saat residensi data diaktifkan, buat key ring untuk kontrol tersebut dan satu lagi untuk region data konsumen.

    gcloud kms keyrings create CONTROL_PLANE_KEY_RING_NAME \
    --location CONTROL_PLANE_LOCATION \
    --project PROJECT_ID
    gcloud kms keyrings create CONSUMER_DATA_KEY_RING_NAME \
    --location CONSUMER_DATA_REGION \
    --project PROJECT_ID

    Ganti kode berikut:

    • CONTROL_PLANE_KEY_RING_NAME: nama key ring bidang kontrol.
    • CONTROL_PLANE_LOCATION: lokasi fisik tempat data bidang kontrol Apigee akan disimpan.
    • PROJECT_ID: ID project Google Cloud.
    • CONSUMER_DATA_KEY_RING_NAME: nama key ring data konsumen.
    • CONSUMER_DATA_REGION: sub-region dari region bidang kontrol. Anda harus menentukan CONTROL_PLANE_LOCATION dan CONSUMER_DATA_REGION.

    Database runtime

    gcloud kms keyrings create RUNTIMEDB_KEY_RING_NAME \
      --location RUNTIMEDB_KEY_LOCATION \
      --project PROJECT_ID

    Ganti kode berikut:

    • RUNTIMEDB_KEY_RING_NAME: nama key ring database yang Anda buat.
    • RUNTIMEDB_KEY_LOCATION: lokasi fisik key ring database.
    • PROJECT_ID: ID project Google Cloud.

    Lokasi kunci enkripsi Apigee mendukung semua Cloud KMS yang mendukung Cloud HSM dan Cloud EKM.

    Disk runtime

    gcloud kms keyrings create RUNTIMEDISK_KEY_RING_NAME \
      --location RUNTIMEDISK_KEY_LOCATION \
      --project PROJECT_ID

    Ganti kode berikut:

    • RUNTIMEDISK_KEY_RING_NAME: nama disk key ring yang Anda buat.
    • RUNTIMEDISK_KEY_LOCATION: lokasi fisik key ring disk.
    • PROJECT_ID: ID project Google Cloud.

    Verifikasi bahwa key ring disk diatur ke lokasi yang sama dengan di instance Compute Engine. Setiap instance dan key ring harus memiliki lokasinya sendiri.

    gcloud kms keyrings list \
    --location  \
    --project $PROJECT_ID

    gcloud kms keyrings describe $DISK_KEY_RING_NAME \
    --location  \
    --project $PROJECT_ID
  2. Nama key ring harus unik untuk organisasi Anda. Jika Anda membuat di region tambahan, nama key ring untuk region itu tidak boleh berupa sama dengan nama key ring yang sudah ada.

  3. Buat kunci menggunakan metode Perintah kms keys create:

    Bidang kontrol

    Saat residensi data diaktifkan, buat key ring untuk kontrol tersebut dan satu lagi untuk region data konsumen.

    gcloud kms keys create CONTROL_PLANE_KEY_NAME \
    --keyring CONTROL_PLANE_KEY_RING_NAME \
    --location CONTROL_PLANE_LOCATION \
    --purpose "encryption" \
    --project PROJECT_ID
    gcloud kms keys create CONSUMER_DATA_KEY_NAME \
    --keyring CONSUMER_DATA_KEY_RING_NAME \
    --location CONSUMER_DATA_REGION \
    --purpose "encryption" \
    --project PROJECT_ID

    Ganti kode berikut:

    • CONTROL_PLANE_KEY_NAME: nama kunci bidang kontrol.
    • CONTROL_PLANE_KEY_RING_NAME: nama key ring bidang kontrol.
    • CONTROL_PLANE_LOCATION: lokasi fisik tempat data bidang kontrol Apigee akan disimpan.
    • PROJECT_ID: ID project Google Cloud.
    • CONSUMER_DATA_KEY_NAME: nama kunci data konsumen.
    • CONSUMER_DATA_KEY_RING_NAME: nama key ring data konsumen.
    • CONSUMER_DATA_REGION: sub-region dari region bidang kontrol. Anda harus menentukan CONTROL_PLANE_LOCATION dan CONSUMER_DATA_REGION.

    Database runtime

    gcloud kms keys create RUNTIMEDB_KEY_NAME \
      --keyring RUNTIMEDB_KEY_RING_NAME \
      --location RUNTIMEDB_KEY_LOCATION \
      --purpose "encryption" \
      --project PROJECT_ID

    Ganti kode berikut:

    • RUNTIMEDB_KEY_NAME: nama kunci database yang Anda buat.
    • RUNTIMEDB_KEY_RING_NAME: nama key ring database yang Anda buat.
    • RUNTIMEDB_KEY_LOCATION: lokasi fisik key ring database.
    • PROJECT_ID: ID project Google Cloud.

    Disk runtime

    gcloud kms keys create RUNTIMEDISK_KEY_NAME \
      --keyring RUNTIMEDISK_KEY_RING_NAME \
      --location RUNTIMEDISK_KEY_LOCATION \
      --purpose "encryption" \
      --project PROJECT_ID

    Ganti kode berikut:

    • RUNTIMEDISK_KEY_NAME: nama kunci disk yang Anda buat.
    • RUNTIMEDISK_KEY_RING_NAME: nama disk key ring yang Anda buat.
    • RUNTIMEDISK_KEY_LOCATION: lokasi fisik key ring disk.
    • PROJECT_ID: ID project Google Cloud.

    Perintah ini membuat kunci dan menambahkannya ke key ring.

    Saat Anda merujuk ke sebuah kunci, gunakan ID kunci.

  4. Berikan akses agar Agen Layanan Apigee dapat menggunakan kunci baru melalui Perintah gcloud kms keys add-iam-policy-binding:

    Bidang kontrol

    Saat residensi data diaktifkan, buat key ring untuk kontrol tersebut dan satu lagi untuk region data konsumen.

    gcloud kms keys add-iam-policy-binding CONTROL_PLANE_KEY_NAME \
    --location CONTROL_PLANE_LOCATION \
    --keyring CONTROL_PLANE_KEY_RING_NAME \
    --member "serviceAccount:service-PROJECT_NUMBER@gcp-sa-apigee." \
    --role roles/cloudkms.cryptoKeyEncrypterDecrypter \
    --project PROJECT_ID
    
    gcloud kms keys add-iam-policy-binding CONSUMER_DATA_KEY_NAME \
    --location CONSUMER_DATA_REGION \
    --keyring CONSUMER_DATA_KEY_RING_NAME \
    --member "serviceAccount:service-PROJECT_NUMBER@gcp-sa-apigee." \
    --role roles/cloudkms.cryptoKeyEncrypterDecrypter \
    --project PROJECT_ID
    

    Ganti kode berikut:

    • CONTROL_PLANE_KEY_NAME: nama kunci bidang kontrol.
    • CONTROL_PLANE_LOCATION: lokasi fisik tempat data bidang kontrol Apigee akan disimpan.
    • CONTROL_PLANE_KEY_RING_NAME: nama key ring bidang kontrol.
    • PROJECT_NUMBER: nomor project Google Cloud.
    • PROJECT_ID: ID project Google Cloud.
    • CONSUMER_DATA_KEY_NAME: nama kunci data konsumen.
    • CONSUMER_DATA_REGION: sub-region dari region bidang kontrol. Anda harus menentukan CONTROL_PLANE_LOCATION dan CONSUMER_DATA_REGION.
    • CONSUMER_DATA_KEY_RING_NAME: nama key ring data konsumen.

    Database runtime

    gcloud kms keys add-iam-policy-binding RUNTIMEDB_KEY_NAME \
      --location RUNTIMEDB_KEY_LOCATION \
      --keyring RUNTIMEDB_KEY_RING_NAME \
      --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-apigee. \
      --role roles/cloudkms.cryptoKeyEncrypterDecrypter \
      --project PROJECT_ID

    Ganti kode berikut:

    • RUNTIMEDB_KEY_NAME: nama kunci database yang Anda buat.
    • RUNTIMEDB_KEY_RING_NAME: nama key ring database yang Anda buat.
    • RUNTIMEDB_KEY_LOCATION: lokasi fisik key ring database.
    • PROJECT_NUMBER: nomor project Google Cloud.
    • PROJECT_ID: ID project Google Cloud.

    Disk runtime

    gcloud kms keys add-iam-policy-binding RUNTIMEDISK_KEY_NAME \
      --location RUNTIMEDISK_KEY_LOCATION \
      --keyring RUNTIMEDISK_KEY_RING_NAME \
      --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-apigee. \
      --role roles/cloudkms.cryptoKeyEncrypterDecrypter \
      --project PROJECT_ID

    Ganti kode berikut:

    • RUNTIMEDISK_KEY_NAME: nama kunci disk yang Anda buat.
    • RUNTIMEDISK_KEY_RING_NAME: nama disk key ring yang Anda buat.
    • RUNTIMEDISK_KEY_LOCATION: lokasi fisik key ring disk.
    • PROJECT_NUMBER: nomor project Google Cloud.
    • PROJECT_ID: ID project Google Cloud.

    Perintah ini mengikat kunci ke Agen Layanan Apigee.

    Setelah berhasil menyelesaikan permintaan ini, gcloud merespons dengan sesuatu yang mirip dengan berikut ini:

    Updated IAM policy for key [runtime].
    bindings:
    - members:
    - serviceAccount:service-1234567890@gcp-sa-apigee.
    role: roles/cloudkms.cryptoKeyEncrypterDecrypter
    etag: BwWqgEuCuwk=
    version: 1

    Jika Anda menerima pesan error seperti berikut:

    INVALID_ARGUMENT: Role roles/cloudkms.cryptokms.cryptoKeyEncrypterDecrypter is not supported for this resource.

    Pastikan Anda menggunakan nomor project dan bukan nama project di bagian alamat email akun layanan Anda.

    Untuk memverifikasi bahwa kunci tersebut terikat ke Agen Layanan Apigee:

    gcloud kms keys get-iam-policy $DISK_KEY_NAME \
      --keyring $DISK_KEY_RING_NAME \
      --location  \
      --project $PROJECT_ID

    gcloud kms keys describe $DISK_KEY_NAME \
      --keyring $DISK_KEY_RING_NAME \
      --location  \
      --project $PROJECT_ID

Membuat kunci baru menggunakan konsol Google Cloud

Anda dapat membuat kunci baru menggunakan konsol, seperti yang dijelaskan di Membuat kunci enkripsi simetris.

Saat Anda menggunakan konsol untuk membuat kunci baru:

  • Untuk kunci enkripsi database runtime, tetapkan lokasi ke Cloud KMS mana pun yang mendukung Cloud HSM dan Cloud EKM. UI tidak mengizinkan Anda memilih lokasi lain untuk kunci, sehingga lokasi tersebut akan cocok dengan yang Anda pilih di key ring.
  • Setelah membuat kunci, dapatkan jalur kunci di Kunci kriptografis dengan mengklik More di samping kunci, lalu pilih Copy Resource Name.

Mendapatkan ID kunci

Saat Anda merujuk ke resource Cloud Key Management Service menggunakan Cloud KMS API atau Google Cloud CLI, gunakan ID resource. Anda dapat dapatkan ID kunci dengan Perintah gcloud kms keys list:

Bidang kontrol

Saat residensi data diaktifkan, terdapat key ring untuk kontrol dan satu lagi untuk region data konsumen.

gcloud kms keys list \
--location=CONTROL_PLANE_LOCATION \
--keyring=CONTROL_PLANE_KEY_RING_NAME \
--project=PROJECT_ID

gcloud kms keys list \
--location=CONSUMER_DATA_REGION \
--keyring=CONSUMER_DATA_KEY_RING_NAME \
--project=PROJECT_ID

ID kunci memiliki sintaksis berikut (mirip dengan jalur file):

projects/PROJECT_ID/locations/CONTROL_PLANE_LOCATION/keyRings/CONTROL_PLANE_KEY_RING_NAME/cryptoKeys/CONTROL_PLANE_KEY_NAME

Database runtime

gcloud kms keys list \
--location=RUNTIMEDB_KEY_LOCATION \
--keyring=RUNTIMEDB_KEY_RING_NAME \
--project=PROJECT_ID

ID kunci memiliki sintaksis berikut (mirip dengan jalur file):

projects/PROJECT_ID/locations/RUNTIMEDB_KEY_LOCATION/keyRings/RUNTIMEDB_KEY_RING_NAME/cryptoKeys/RUNTIMEDB_KEY_NAME

Disk runtime

gcloud kms keys list \
  --location=RUNTIMEDISK_KEY_LOCATION \
  --keyring=RUNTIMEDISK_KEY_RING_NAME \
  --project=PROJECT_ID

ID kunci memiliki sintaksis berikut (mirip dengan jalur file):

projects/PROJECT_ID/locations/RUNTIMEDISK_KEY_LOCATION/keyRings/RUNTIMEDISK_KEY_RING_NAME/cryptoKeys/RUNTIMEDISK_KEY_NAME

Contoh:

NAME: projects/my-project/locations/us-west1/keyRings/my-key-ring/cryptoKeys/my-key
PURPOSE: ENCRYPT_DECRYPT
ALGORITHM: GOOGLE_SYMMETRIC_ENCRYPTION
PROTECTION_LEVEL: SOFTWARE
LABELS:
PRIMARY_ID: 1
PRIMARY_STATE: ENABLED

Anda juga bisa mendapatkan ID kunci di Konsol Google Cloud. Untuk selengkapnya informasi, lihat Mendapatkan Cloud KMS ID resource.