Mengonfigurasi autentikasi workload identity terkelola

Halaman ini menjelaskan cara mengonfigurasi identitas workload terkelola menggunakan gcloud CLI.

Halaman ini juga menjelaskan cara menyiapkan penyediaan otomatis dan pengelolaan siklus proses identitas workload terkelola untuk Compute Engine. Anda mengonfigurasi kumpulan certificate authority (CA) untuk menerbitkan sertifikat menggunakan Certificate Authority Service. CA Service adalah layanan Google Cloud yang skalabel dan sangat tersedia yang menyederhanakan serta mengotomatiskan deployment, pengelolaan, dan keamanan layanan CA. Anda dapat membuat instance virtual machine (VM) yang disediakan dengan kredensial X.509 dari kumpulan CA yang dikonfigurasi. Kredensial ini kemudian dapat digunakan untuk membuat koneksi mTLS di antara beban kerja.

Sebelum memulai

  1. Buat atau pilih project Google Cloud.

    • Membuat project Google Cloud:

      gcloud projects create PROJECT_ID

      Ganti PROJECT_ID dengan nama untuk project Google Cloud yang Anda buat.

    • Pilih project Google Cloud yang Anda buat:

      gcloud config set project PROJECT_ID

      Ganti PROJECT_ID dengan nama project Google Cloud Anda.

  2. Minta akses ke Pratinjau identitas workload terkelola.

  3. Memahami identitas beban kerja terkelola.

  4. Pelajari penerbitan sertifikat menggunakan Certificate Authority Service.

  5. Pelajari cara mengautentikasi workload Compute Engine menggunakan identitas workload terkelola.

  6. Aktifkan API IAM and Certificate Authority Service:

    gcloud services enable iam.googleapis.com privateca.googleapis.com

  7. Konfigurasi Google Cloud CLI agar menggunakan project yang ditambahkan ke daftar yang diizinkan untuk penagihan dan kuota.

    gcloud config set billing/quota_project PROJECT_ID
    

    Ganti PROJECT_ID dengan ID project yang telah ditambahkan ke daftar yang diizinkan untuk pratinjau identitas workload terkelola.

Peran yang diperlukan

Untuk mendapatkan izin yang diperlukan untuk membuat identitas workload terkelola dan menyediakan sertifikat identitas workload terkelola, minta administrator untuk memberi Anda peran IAM berikut pada project:

Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses.

Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.

Selain itu, peran dasar Pemilik IAM (roles/owner) juga mencakup izin untuk mengonfigurasi identitas beban kerja terkelola. Anda tidak boleh memberikan peran dasar dalam lingkungan produksi, tetapi Anda dapat memberikannya dalam lingkungan pengembangan atau pengujian.

Ringkasan

Agar dapat menggunakan identitas workload terkelola untuk aplikasi, Anda harus melakukan tugas berikut:

  1. Administrator Keamanan:

  2. Administrator Compute:

    Aktifkan identitas workload terkelola untuk workload yang berjalan di Compute Engine:

Membuat identitas workload terkelola

Identitas workload terkelola memungkinkan Google Cloud secara otomatis menyediakan kredensial untuk identitas kumpulan workload identity ke dalam workload Anda. Identitas workload ditentukan dalam kumpulan workload identity, dan diatur ke dalam batas-batas administratif yang disebut namespace.

Membuat kumpulan workload identity

Anda harus membuat kumpulan dalam mode TRUST_DOMAIN untuk membuat identitas workload terkelola. Untuk membuat kumpulan workload identity untuk identitas workload terkelola, gunakan perintah workload-identity-pools create.

gcloud iam workload-identity-pools create POOL_ID \
    --location="global" \
    --mode="TRUST_DOMAIN"

Ganti kode berikut:

  • POOL_ID: ID unik untuk pool. ID harus berisi antara 4 hingga 32 karakter, dan hanya dapat berisi tanda pisah dan karakter alfanumerik huruf kecil, serta diawali dan diakhiri dengan karakter alfanumerik. Setelah membuat kumpulan workload identity, Anda tidak dapat mengubah ID-nya.

Untuk memverifikasi bahwa kumpulan workload identity Anda telah dibuat dalam mode TRUST_DOMAIN, gunakan perintah workload-identity-pools describe.

gcloud iam workload-identity-pools describe POOL_ID \
    --location="global"

Output perintahnya akan terlihat seperti berikut:

mode: TRUST_DOMAIN
name: projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID
state: ACTIVE

Jika mode: TRUST_DOMAIN tidak ada dalam output perintah, verifikasi bahwa project Anda telah ditambahkan ke daftar yang diizinkan untuk Pratinjau Workload Identity terkelola dan bahwa Anda telah mengonfigurasi gcloud CLI dengan benar agar menggunakan project yang benar untuk penagihan dan kuota. Anda mungkin perlu mengupdate gcloud CLI ke versi yang lebih baru.

Buat namespace

Perintah workload-identity-pools namespaces create memungkinkan Anda membuat namespace di kumpulan workload identity.

gcloud iam workload-identity-pools namespaces create NAMESPACE_ID \
    --workload-identity-pool="POOL_ID" \
    --location="global"

Ganti kode berikut:

  • NAMESPACE_ID: ID unik untuk namespace. ID harus berisi antara 2 hingga 63 karakter, hanya berisi karakter alfanumerik huruf kecil dan tanda pisah, serta diawali dan diakhiri dengan karakter alfanumerik. Setelah membuat namespace, Anda tidak dapat mengubah ID-nya.
  • POOL_ID: ID kumpulan workload identity yang Anda buat sebelumnya.

Membuat identitas workload terkelola

Perintah workload-identity-pools managed-identities create memungkinkan Anda membuat workload identity terkelola dalam kumpulan workload identity.

gcloud iam workload-identity-pools managed-identities create MANAGED_IDENTITY_ID \
    --namespace="NAMESPACE_ID" \
    --workload-identity-pool="POOL_ID" \
    --location="global"

Ganti kode berikut:

  • MANAGED_IDENTITY_ID: ID unik untuk identitas terkelola. ID harus berisi antara 2 hingga 63 karakter, hanya berisi karakter alfanumerik huruf kecil dan tanda pisah, serta diawali dan diakhiri dengan karakter alfanumerik. Setelah membuat identitas workload terkelola, Anda tidak dapat mengubah ID-nya.
  • NAMESPACE_ID: ID namespace yang Anda buat sebelumnya.
  • POOL_ID: ID kumpulan workload identity yang Anda buat sebelumnya.

Identitas SPIFFE untuk identitas workload terkelola Anda sama dengan yang berikut:

spiffe://POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID

Menentukan kebijakan pengesahan workload

Kebijakan pengesahan beban kerja memastikan bahwa hanya beban kerja tepercaya yang dapat menggunakan identitas terkelola. Anda harus mengizinkan workload untuk menggunakan identitas workload terkelola sebelum dapat dikeluarkan kredensial.

Untuk melakukannya, Anda harus membuat akun layanan yang dikelola pengguna dan melampirkan ke beban kerja Anda. Workload Anda akan menggunakan workload identity terkelola sebagai identitasnya saat melakukan autentikasi ke beban kerja lain menggunakan mutual TLS (mTLS), dan workload Anda akan menggunakan akun layanan sebagai identitasnya saat mengakses layanan dan resource Google Cloud lainnya.

Perintah service-accounts create memungkinkan Anda membuat workload identity terkelola dalam kumpulan workload identity.

Untuk membuat akun layanan yang terkait, jalankan perintah berikut:

gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

Ganti kode berikut:

  • SERVICE_ACCOUNT_NAME: nama akun layanan

Untuk membuat kebijakan pengesahan workload yang memungkinkan workload Anda dengan akun layanan yang dilampirkan diberi kredensial untuk identitas workload terkelola, gunakan perintah workload-identity-pools managed-identities workload-sources create:

gcloud iam workload-identity-pools managed-identities workload-sources create \
    project-WORKLOAD_PROJECT_NUMBER \
    --single-attribute-selectors "compute.googleapis.com/Instance.attached_service_account.email=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \
    --managed-identity MANAGED_IDENTITY_ID \
    --namespace NAMESPACE_ID \
    --workload-identity-pool POOL_ID \
    --location "global"

Ganti kode berikut:

  • SERVICE_ACCOUNT_NAME: nama akun layanan.
  • WORKLOAD_PROJECT_NUMBER: nomor project untuk project yang berisi beban kerja Anda. Kebijakan ini memungkinkan beban kerja dalam project ini menggunakan identitas workload terkelola.
  • PROJECT_ID: ID project yang berisi akun layanan.
  • MANAGED_IDENTITY_ID: ID unik untuk identitas terkelola.
  • NAMESPACE_ID: ID namespace yang Anda buat sebelumnya.
  • POOL_ID: ID kumpulan workload identity yang Anda buat sebelumnya.

Untuk kumpulan identitas workload tertentu, Anda dapat menentukan maksimum 50 pemilih atribut tunggal untuk project beban kerja Anda.

Untuk mempelajari cara mengupdate atau menghapus kebijakan pengesahan, jalankan perintah berikut:

gcloud iam workload-identity-pools managed-identities workload-sources --help

Mengonfigurasi Certificate Authority Service untuk menerbitkan sertifikat untuk identitas beban kerja yang dikelola

Buat penyiapan yang direkomendasikan untuk root dan certificate authority (CA) bawah menggunakan kumpulan Layanan Certificate Authority. Kumpulan CA subordinat menerbitkan sertifikat identitas workload X.509 ke VM.

Setelah mengonfigurasi kumpulan CA, Anda kemudian mengizinkan identitas workload yang dikelola untuk meminta dan menerima sertifikat yang ditandatangani dari kumpulan CA.

Mengonfigurasi kumpulan root CA

Gunakan antarmuka Google Cloud CLI ke Certificate Authority Service untuk mengonfigurasi kumpulan CA root.

gcloud

Buat kumpulan root CA.

  1. Buat kumpulan root CA di tingkat Enterprise, yang dimaksudkan untuk penerbitan sertifikat berdurasi panjang dan bervolume rendah menggunakan perintah gcloud privateca pools create.

    gcloud privateca pools create ROOT_CA_POOL_ID \
       --location=REGION \
       --tier=enterprise
    

    Ganti kode berikut:

    • ROOT_CA_POOL_ID: ID unik untuk kumpulan CA root. Panjang ID dapat berisi hingga 64 karakter dan hanya boleh berisi karakter alfanumerik yang lebih kecil dan huruf besar, garis bawah, atau tanda hubung. ID kumpulan harus unik di dalam region.
    • REGION: region tempat kumpulan CA root.

    Untuk mengetahui informasi selengkapnya, lihat Membuat kumpulan CA.

  2. Buat CA root di kumpulan CA root menggunakan perintah gcloud privateca roots create. Anda mungkin diminta untuk mengaktifkan CA root jika ini adalah satu-satunya CA dalam Kumpulan CA root.

    Misalnya, Anda dapat menggunakan perintah yang mirip dengan berikut ini untuk membuat CA root.

    gcloud privateca roots create ROOT_CA_ID \
       --pool=ROOT_CA_POOL_ID \
       --subject "CN=ROOT_CA_CN, O=ROOT_CA_ORGANIZATION" \
       --key-algorithm="ec-p256-sha256" \
       --max-chain-length=1 \
       --location=REGION
    

    Ganti kode berikut:

    • ROOT_CA_ID: nama unik untuk root CA. Panjang nama CA maksimal 64 karakter dan hanya boleh berisi karakter alfanumerik huruf kecil dan huruf besar, garis bawah, atau tanda hubung. Nama CA harus unik di dalam region.
    • ROOT_CA_POOL_ID: ID kumpulan CA root.
    • ROOT_CA_CN: nama umum untuk root CA.
    • ROOT_CA_ORGANIZATION: organisasi CA root.
    • REGION: region tempat kumpulan CA root.

    Untuk informasi selengkapnya, lihat Membuat root certificate authority. Untuk informasi selengkapnya tentang kolom subject untuk CA, lihat Subjek.

  3. Opsional: Ulangi langkah-langkah sebelumnya untuk membuat root CA tambahan dalam kumpulan root CA. Hal ini dapat berguna untuk rotasi CA root.

Mengonfigurasi subordinate CA

Gunakan antarmuka Google Cloud CLI ke Certificate Authority Service untuk membuat kumpulan CA subordinate dan CA subordinate.

Jika Anda memiliki beberapa skenario penerbitan sertifikat, Anda dapat membuat CA subordinat untuk setiap skenario tersebut. Selain itu, menambahkan beberapa CA subordinat dalam satu kumpulan CA akan membantu Anda melakukan load balancing yang lebih baik untuk permintaan sertifikat.

gcloud

Gunakan perintah gcloud privateca pools create untuk membuat kumpulan CA subordinat.

  1. Buat kumpulan CA subordinat di tingkat DevOps, yang ditujukan untuk penerbitan sertifikat berdurasi singkat dan bervolume tinggi .

    gcloud privateca pools create SUBORDINATE_CA_POOL_ID \
       --location=REGION \
       --tier=devops
    

    Ganti kode berikut:

    • SUBORDINATE_CA_POOL_ID: ID unik untuk kumpulan CA subordinate. Panjang ID dapat berisi hingga 64 karakter dan hanya boleh berisi karakter alfanumerik huruf kecil dan huruf besar, garis bawah, atau tanda hubung. ID kumpulan harus unik dalam wilayah.
    • REGION: region untuk membuat kumpulan CA subordinat.

    Untuk mengetahui informasi selengkapnya, lihat Membuat kumpulan CA.

  2. Buat CA subordinate dalam kumpulan CA subordinate menggunakan perintah gcloud privateca subordinates create. Jangan ubah mode penerbitan berbasis konfigurasi default.

    Misalnya, Anda dapat menggunakan perintah yang mirip dengan berikut ini untuk membuat CA subordinat.

    gcloud privateca subordinates create SUBORDINATE_CA_ID \
       --pool=SUBORDINATE_CA_POOL_ID \
       --location=REGION \
       --issuer-pool=ROOT_CA_POOL_ID \
       --issuer-location=REGION \
       --subject="CN=SUBORDINATE_CA_CN, O=SUBORDINATE_CA_ORGANIZATION" \
       --key-algorithm="ec-p256-sha256" \
       --use-preset-profile=subordinate_mtls_pathlen_0
    

    Ganti kode berikut:

    • SUBORDINATE_CA_ID: nama unik untuk CA subordinat. Nama dapat berisi maksimal 64 karakter, dan hanya boleh berisi karakter alfanumerik huruf kecil dan huruf besar, garis bawah, atau tanda hubung. Nama kumpulan harus unik di dalam wilayah tersebut.
    • SUBORDINATE_CA_POOL_ID: nama kumpulan CA subordinat.
    • REGION: wilayah tempat kumpulan CA subordinate.
    • ROOT_CA_POOL_ID: ID kumpulan CA root.
    • REGION: region dari kumpulan root CA.
    • SUBORDINATE_CA_CN: nama umum CA subordinat.
    • SUBORDINATE_CA_ORGANIZATION: nama organisasi yang menerbitkan CA subordinat.

    Untuk mengetahui informasi selengkapnya, lihat Membuat kumpulan CA. Untuk informasi selengkapnya tentang kolom subject untuk CA, lihat Subjek.

Memberi otorisasi identitas workload terkelola untuk meminta sertifikat dari kumpulan CA

Identitas beban kerja terkelola memerlukan izin untuk meminta sertifikat dari Layanan CA dan mendapatkan sertifikat publik.

gcloud

  1. Berikan peran IAM CA Service Workload Certificate Requester (roles/privateca.workloadCertificateRequester) pada setiap kumpulan CA subordinate ke identitas workload terkelola. Perintah gcloud privateca pools add-iam-policy-binding berikut mengizinkan identitas workload terkelola untuk meminta sertifikat dari rantai sertifikat Layanan CA.

    gcloud privateca pools add-iam-policy-binding SUBORDINATE_CA_POOL_ID \
     --location=REGION \
     --role=roles/privateca.workloadCertificateRequester \
     --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/*"
    

    Ganti kode berikut:

    • SUBORDINATE_CA_POOL_ID: ID untuk kumpulan CA subordinate.
    • REGION: region dari kumpulan CA subordinat.
    • PROJECT_NUMBER: nomor project project yang berisi kumpulan workload identity.
    • POOL_ID: ID kumpulan workload identity.
  2. Berikan peran IAM CA Service Pool Reader (roles/privateca.poolReader) di kumpulan CA subordinate ke identitas workload terkelola. Hal ini mengizinkan identitas workload terkelola untuk mendapatkan sertifikat X.509 yang ditandatangani dari rantai sertifikat CA.

    gcloud privateca pools add-iam-policy-binding SUBORDINATE_CA_POOL_ID \
     --location=REGION \
     --role=roles/privateca.poolReader \
     --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/*"
    

    Ganti kode berikut:

    • SUBORDINATE_CA_POOL_ID: ID untuk kumpulan CA subordinate.
    • REGION: region dari kumpulan CA subordinat.
    • PROJECT_NUMBER: nomor project project yang berisi kumpulan workload identity.
    • POOL_ID: ID kumpulan workload identity.

Menentukan konfigurasi penerbitan sertifikat dan kepercayaan

Anda dapat menggunakan informasi ini untuk membuat file JSON yang diupload sebagai data partner saat membuat VM.

Menentukan konfigurasi penerbitan sertifikat

Konfigurasi penerbitan sertifikat berikut diperlukan guna mengaktifkan identitas workload terkelola untuk Compute Engine.

{
  "primary_certificate_authority_config": {
    "certificate_authority_config": {
      "ca_pool": "projects/PROJECT_ID/locations/REGION/caPools/SUBORDINATE_CA_POOL_ID"
    }
  },
  "key_algorithm": "ALGORITHM",
  "workload_certificate_lifetime_seconds": "DURATION",
  "rotation_window_percentage": "ROTATION_WINDOW_PERCENTAGE"
}

Ganti kode berikut:

  • PROJECT_NAME: nama project yang berisi kumpulan CA
  • REGION: wilayah tempat kumpulan CA subordinat berada
  • SUBORDINATE_CA_POOL_ID: nama kumpulan CA subordinate
  • ALGORITHM: algoritma enkripsi yang digunakan untuk menghasilkan kunci pribadi. Nilai yang valid adalah rsa-2048 (default), rsa-3072, rsa-4096, ecdsa-p256, dan ecdsa-p384.
  • DURATION: Opsional: Durasi validitas sertifikat leaf, dalam detik. Nilainya harus antara 3.600 dan 315360000. Jika tidak ditentukan, nilai default 86400 akan digunakan. Validitas sebenarnya dari sertifikat yang diterbitkan juga bergantung pada CA yang menerbitkan, karena dapat membatasi masa pakai sertifikat yang diterbitkan.
  • ROTATION_WINDOW_PERCENTAGE: Opsional: Persentase masa aktif sertifikat saat perpanjangan dipicu. Nilai harus antara 1 dan 100. Nilai defaultnya adalah 66 persen. Anda harus menetapkan persentase periode rotasi dalam kaitannya dengan masa berlaku sertifikat, sehingga perpanjangan sertifikat terjadi setidaknya 7 hari setelah sertifikat diterbitkan dan setidaknya 7 hari sebelum masa berlaku sertifikat berakhir.

Menentukan konfigurasi kepercayaan

Konfigurasi kepercayaan berisi kumpulan trust anchor untuk memvalidasi sertifikat peer. Ini mencakup hal-hal berikut:

  • URI resource kumpulan CA tepercaya: Kumpulan URI resource kumpulan CA yang dipercaya untuk menerbitkan sertifikat dalam domain kepercayaan yang sama dengan pemilik VM.
  • Sertifikat CA berformat PEM: Kumpulan sertifikat CA berformat PEM yang dipercaya untuk menerbitkan sertifikat di domain kepercayaan yang sama dengan VM.
{
  "POOL_ID.global.PROJECT_NUMBER.workload.id.goog": {
    "trust_anchors": [
      {
        "ca_pool": "projects/PROJECT_NAME/locations/REGION/caPools/SUBORDINATE_CA_POOL_ID"
      },
      {
        "pem_certificate": "PEM-encoded certificate"
      }
    ]
  }
}

Ganti kode berikut:

  • POOL_ID: ID workload identity pool
  • PROJECT_NUMBER: nomor project project yang berisi kumpulan workload identity
  • PROJECT_NAME: nama project yang berisi kumpulan CA
  • REGION: wilayah tempat kumpulan CA subordinat berada
  • SUBORDINATE_CA_POOL_ID: ID kumpulan CA subordinate
  • PEM-encoded certificate: Opsional: kumpulan sertifikat CA berformat PEM yang dipercaya untuk menerbitkan sertifikat di domain kepercayaan yang sama dengan VM pemilik

Membuat file konfigurasi untuk mengupload metadata partner untuk VM

Buat file JSON yang berisi hal berikut:

Simpan file ini sebagai CONFIGS.json. File ini digunakan saat membuat VM untuk menjalankan aplikasi yang menggunakan identitas workload terkelola.

File CONFIGS.json Anda harus terlihat seperti berikut:

  {
  "wc.compute.googleapis.com": {
     "entries": {
        "certificate-issuance-config": {
           "primary_certificate_authority_config": {
              "certificate_authority_config": {
                 "ca_pool": "projects/PROJECT_ID/locations/REGION/caPools/SUBORDINATE_CA_POOL_ID"
              }
           },
           "key_algorithm": "ALGORITHM"
        },
        "trust-config": {
           "POOL_ID.global.PROJECT_NUMBER.workload.id.goog": {
               "trust_anchors": [{
                  "ca_pool": "projects/PROJECT_ID/locations/REGION/caPools/SUBORDINATE_CA_POOL_ID"
                }]
           }
     }
  }
  },
  "iam.googleapis.com": {
     "entries": {
        "workload-identity": "spiffe://POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID"
     }
  }
  }
  

Langkah selanjutnya

Cobalah sendiri

Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.

Mulai secara gratis