Tentang kunci enkripsi Apigee

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

Baca dokumentasi Apigee Edge.

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

Selama proses penyiapan Apigee, Anda membuat kunci enkripsi Cloud Key Management Service berikut:

Jenis Kunci Saat 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 data Analytics yang disimpan di BigQuery dalam project tenant.

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

Apigee akan meminta Anda memberikan 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, selain 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 KVMs, cache, dan rahasia klien, yang kemudian disimpan dalam database.

Ada satu kunci enkripsi database runtime per organisasi. Semua instance/region di dalam organisasi memiliki kunci enkripsi database runtime yang sama.

Kunci enkripsi database runtime mendukung semua lokasi Cloud KMS yang mendukung Cloud HSM dan Cloud EKM. Google merekomendasikan penggunaan 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.

Pemilihan lokasi key ring bergantung pada jenis penginstalan yang Anda gunakan: wizard penyediaan Apigee tidak memungkinkan Anda memilih lokasi key ring; alat ini memilih lokasi untuk Anda. Jika menggunakan command line, 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); Key Value Maps (KVM); definisi kuota, bucket, dan penghitung; serta semua data yang di-cache. Data KMS mencakup produk API, developer, aplikasi developer, token OAuth (termasuk token akses, token refresh, dan kode otorisasi), serta kunci API.

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

Setiap kombinasi instance/region memiliki kunci enkripsi disk sendiri.

Poin utama

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

  • Lokasi kunci enkripsi database runtime Apigee mendukung semua lokasi Cloud KMS yang mendukung Cloud HSM dan Cloud EKM.
  • Lokasi kunci enkripsi disk harus sesuai dengan lokasi instance runtime tempat kunci tersebut digunakan.
  • Setelah disetel, Anda tidak dapat mengubah lokasi salah satu tombol.
  • Semua kunci harus berada dalam key ring.
  • Kunci dengan jenis yang berbeda harus berada dalam key ring yang terpisah; kunci enkripsi disk tidak boleh berada dalam key ring yang sama dengan kunci enkripsi database runtime Anda.
  • Kunci harus memiliki purpose. Jika Anda menggunakan command line untuk membuat kunci baru, tetapkan purpose ke encryption. Jika Anda menggunakan konsol Google Cloud, pilih Enkripsi/dekripsi simetris untuk tujuan tersebut.
  • Kunci ditentukan oleh jalur kunci, yang menggunakan pola berikut:
    projects/PROJECT_ID/locations/KEY_LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME

Mencantumkan kunci yang ada

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

Untuk menampilkan daftar 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 pada command line

Anda dapat membuat key ring dan key di command line atau di Konsol Google Cloud.

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

Langkah-langkah berikut menjelaskan cara membuat key ring dan kunci, serta cara memberikan akses kepada Agen Layanan Apigee untuk menggunakan kunci baru tersebut. Buat 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

    Jika residensi data diaktifkan, buat key ring untuk bidang kontrol, dan key ring lainnya 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 lokasi 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 key ring disk yang Anda buat.
    • RUNTIMEDISK_KEY_LOCATION: lokasi fisik key ring disk.
    • PROJECT_ID: ID project Google Cloud.

    Pastikan key ring disk disetel ke lokasi yang sama dengan instance. 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 region tambahan, nama key ring untuk region tersebut tidak boleh sama dengan nama key ring yang sudah ada.

  3. Buat kunci menggunakan perintah kms keys create:

    Bidang kontrol

    Jika residensi data diaktifkan, buat key ring untuk bidang kontrol, dan key ring lainnya 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 key ring disk 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 kunci, gunakan ID kunci.

  4. Berikan akses kepada Agen Layanan Apigee untuk menggunakan kunci baru menggunakan perintah gcloud kms keys add-iam-policy-binding:

    Bidang kontrol

    Jika residensi data diaktifkan, buat key ring untuk bidang kontrol, dan key ring lainnya 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.iam.gserviceaccount.com" \
    --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.iam.gserviceaccount.com" \
    --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.iam.gserviceaccount.com \
      --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.iam.gserviceaccount.com \
      --role roles/cloudkms.cryptoKeyEncrypterDecrypter \
      --project PROJECT_ID

    Ganti kode berikut:

    • RUNTIMEDISK_KEY_NAME: nama kunci disk yang Anda buat.
    • RUNTIMEDISK_KEY_RING_NAME: nama key ring disk 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 akan merespons dengan sesuatu yang mirip dengan berikut:

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

    Jika Anda menerima error seperti berikut:

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

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

    Untuk memverifikasi bahwa kunci terikat dengan 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 dalam Membuat kunci enkripsi simetris.

Saat Anda menggunakan konsol untuk membuat kunci baru:

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

Mendapatkan ID kunci

Saat merujuk ke resource Cloud Key Management Service menggunakan Cloud KMS API atau Google Cloud CLI, artinya Anda menggunakan ID resource. Anda bisa mendapatkan ID kunci dengan perintah gcloud kms keys list:

Bidang kontrol

Jika residensi data diaktifkan, ada key ring untuk bidang 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 (serupa 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 (serupa 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 (serupa 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 mengetahui informasi selengkapnya, lihat Mendapatkan ID resource Cloud KMS.