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
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.
-
Memahami identitas beban kerja terkelola.
Pelajari penerbitan sertifikat menggunakan Certificate Authority Service.
Pelajari cara mengautentikasi workload Compute Engine menggunakan identitas workload terkelola.
Aktifkan API IAM and Certificate Authority Service:
gcloud services enable iam.googleapis.com
privateca.googleapis.com 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 membuat dan mengonfigurasi identitas workload terkelola:
-
Admin Kumpulan Workload Identity IAM (
roles/iam.workloadIdentityPoolAdmin
) -
Admin Akun Layanan (
roles/iam.serviceAccountAdmin
)
-
Admin Kumpulan Workload Identity IAM (
-
Untuk membuat dan mengonfigurasi kumpulan CA:
Admin Layanan CA (
roles/privateca.admin
)
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:
Administrator Keamanan:
- Membuat identitas workload terkelola di kumpulan workload identity.
- Tentukan kebijakan pengesahan workload dan buat akun layanan.
- Mengonfigurasi Certificate Authority Service untuk menerbitkan sertifikat bagi identitas beban kerja yang dikelola.
- Mengizinkan identitas beban kerja terkelola untuk meminta sertifikat dari kumpulan CA.
- Menentukan konfigurasi penerbitan sertifikat dan kepercayaan.
- Buat file konfigurasi untuk mengupload metadata partner untuk VM.
Administrator Compute:
Aktifkan identitas workload terkelola untuk workload yang berjalan di Compute Engine:
- Untuk VM individual.
- Untuk grup instance terkelola (MIG).
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.
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.
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.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.
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.
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
Berikan peran IAM CA Service Workload Certificate Requester (
roles/privateca.workloadCertificateRequester
) pada setiap kumpulan CA subordinate ke identitas workload terkelola. Perintahgcloud 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.
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
, danecdsa-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:
- Konfigurasi untuk workload identity
- Informasi dari Menentukan konfigurasi penerbitan sertifikat
- Informasi dari Menentukan konfigurasi kepercayaan
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
- Mengonfigurasi workload ke autentikasi workload menggunakan mTLS.
- Pelajari lebih lanjut cara membuat kumpulan CA.
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