Mengautentikasi beban kerja ke beban kerja lain melalui mTLS

Dokumen ini menjelaskan cara menyiapkan penyediaan otomatis dan pengelolaan siklus proses identitas workload terkelola untuk Compute Engine. Anda mengonfigurasi CA pool untuk menerbitkan sertifikat menggunakan Certificate Authority Service (CA), yang merupakan layanan yang sangat tersedia dan skalabel Google Cloud yang menyederhanakan dan mengotomatiskan deployment, pengelolaan, dan keamanan layanan CA. Setiap VM disediakan dengan kredensial X.509 dari CA pool yang dikonfigurasi. Kredensial ini kemudian dapat digunakan untuk membuat koneksi mTLS.

Sebelum memulai

  • Tinjau dokumentasi Ringkasan identitas workload terkelola.
  • Aktifkan Compute Engine API:

    Peran yang diperlukan untuk mengaktifkan API

    Untuk mengaktifkan API, Anda memerlukan izin serviceusage.services.enable. Jika Anda membuat project, kemungkinan Anda sudah memiliki izin ini melalui peran Pemilik (roles/owner). Jika tidak, Anda bisa mendapatkan izin ini melalui peran Admin Penggunaan Layanan (roles/serviceusage.serviceUsageAdmin). Pelajari cara memberikan peran.

    gcloud services enable compute.googleapis.com

Peran yang diperlukan

Untuk mendapatkan izin yang diperlukan guna membuat VM yang menggunakan sertifikat identitas workload terkelola untuk autentikasi ke workload lain, mintalah administrator untuk memberi Anda peran IAM berikut pada project:

Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.

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

Ringkasan

Dengan identitas workload terkelola untuk Compute Engine, Anda dapat menerapkan komunikasi yang diautentikasi dan dienkripsi secara bersama antara dua VM Compute Engine. Aplikasi workload yang berjalan di VM yang dikonfigurasi dapat menggunakan kredensial X.509 untuk mTLS per VM mTLS. Agen tamu secara otomatis merotasi sertifikat mTLS ini dan memperbarui kredensial di VM.

Dengan menggunakan identitas workload terkelola, Anda dapat mengelola identitas untuk workload Anda secara terpusat. VM Compute Engine dapat diotorisasi untuk menerima identitas workload yang didasarkan pada atribut kunci, seperti ID instance, nama instance, atau akun layanan terlampir. Agar workload dapat dibuktikan, administrator atau developer komputasi harus membuat instance VM untuk workload dengan nama instance, ID instance, nama akun layanan, atau ID akun layanan yang cocok.

Identitas workload terkelola sesuai dengan standar open source Secure Production Identity Framework for Everyone (SPIFFE). ID SPIFFE untuk Google Cloud workload memiliki format berikut: spiffe://<TRUST_DOMAIN/ns/NAMESPACE/sa/WORKLOAD_ID. TRUST_DOMAIN sesuai dengan workload identity pool Identity and Access Management (IAM).

Identitas workload terkelola ditentukan dalam workload identity pool, yang bertindak sebagai penampung tingkat atas untuk menyimpan identitas workload yang memiliki batas kepercayaan umum. Dalam workload identity pool, identitas diatur ke dalam batas administratif yang disebut namespace. Agar workload mendapatkan identitas terkelola, Anda harus menentukan kebijakan pembuktian untuk mengotorisasinya. Kebijakan pembuktian workload memastikan bahwa hanya workload tepercaya yang dapat menegaskan identitas terkelola.

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

  1. Administrator Keamanan:

  2. Administrator Komputasi:

Mengonfigurasi identitas workload terkelola di Identity and Access Management

  • Ikuti petunjuk di Mengonfigurasi autentikasi identitas workload terkelola .

    Petunjuk ini menjelaskan cara menyelesaikan hal berikut:

    • Buat workload identity pool.
    • Buat namespace di workload identity pool. Anda menggunakan namespace untuk membuat batas administratif untuk identitas workload terkelola, misalnya, namespace untuk setiap aplikasi yang dimiliki oleh organisasi Anda.
    • Buat identitas workload terkelola di namespace di workload identity pool. Misalnya, Anda dapat membuat namespace untuk aplikasi dan membuat identitas terkelola dalam namespace tersebut untuk layanan mikro yang mendukung aplikasi tersebut.
    • Opsional: Buat akun layanan untuk membuat aturan pembuktian berdasarkan ID akun layanan.
    • Buat kebijakan pengesahan workload yang memungkinkan workload Anda diberi kredensial untuk identitas workload terkelola. VM Compute Engine dapat diotorisasi untuk menerima identitas workload terkelola berdasarkan atribut kunci seperti ID instance, nama instance, atau akun layanan terlampir.
    • Konfigurasikan Certificate Authority Service untuk menerbitkan sertifikat untuk identitas workload terkelola:
      • Konfigurasikan CA pool root
      • Konfigurasikan CA subordinat
      • Otorisasi workload identity pool terkelola untuk meminta sertifikat dari CA pool

Mengaktifkan identitas workload terkelola untuk setiap instance komputasi

Anda dapat mengaktifkan identitas workload terkelola untuk instance komputasi saat membuat instance atau dengan memperbarui konfigurasi untuk instance yang ada.

Membuat instance dengan identitas workload terkelola diaktifkan

Saat membuat instance komputasi, untuk mengaktifkan fitur identitas workload terkelola untuk instance, Anda harus melakukan hal berikut:

  • Jika pengesahan instance untuk Workload Identity didasarkan pada akun layanan, tentukan akun layanan tersebut
  • Sertakan flag --identity dan --identity-certificate

gcloud

Gunakan perintah gcloud alpha compute instances create untuk membuat instance baru.

  1. Jika Anda menggunakan akun layanan untuk pengesahan, sertakan informasi akun layanan saat membuat instance.

    Anda dapat menambahkan baris tambahan ke perintah untuk mengonfigurasi instance, seperti jenis dan image mesin, bukan menggunakan nilai default. Untuk mengetahui informasi selengkapnya, baca bagian Membuat dan memulai instance VM.

    gcloud alpha compute instances create INSTANCE_NAME \
       --zone=INSTANCE_ZONE \
       --service-account SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
       --identity=TRUST_DOMAIN/ns/NAMESPACE/sa/WORKLOAD_IDENTIFIER \
    
       --identity-certificate \
    ...
    

    Ganti kode berikut:

    • INSTANCE_NAME: nama unik untuk instance. Untuk mengetahui detail nama instance yang valid, lihat Resource penamaan.
    • INSTANCE_ZONE: zona untuk membuat instance.
    • SERVICE_ACCOUNT_NAME: nama akun layanan yang diizinkan untuk menerima identitas workload terkelola.
    • PROJECT_ID: ID project tempat akun layanan dibuat.
    • TRUST_DOMAIN: ID untuk domain kepercayaan, dalam format berikut:
        $POOL_ID.global.$PROJECT_NUMBER.workload.id.goog
        

      Nilai domain kepercayaan menggunakan placeholder berikut:

      • POOL_ID: nama workload identity pool
      • PROJECT_NUMBER: nomor project untuk project tempat workload identity pool dibuat
    • NAMESPACE: nama namespace yang berisi kebijakan pengesahan workload yang mengotorisasi workload untuk menegaskan identitas workload terkelola
    • WORKLOAD_IDENTIFIER: nama identitas workload terkelola yang dibuat di namespace workload identity pool
  2. Aktifkan penyediaan identitas workload terkelola otomatis menggunakan agen tamu dengan memperbarui setelan di file konfigurasi agen tamu.

Mengaktifkan identitas workload terkelola di instance yang ada

Untuk mengaktifkan identitas workload terkelola untuk instance komputasi yang ada, perbarui instance untuk mengonfigurasi hal berikut:

  • Jika pengesahan instance untuk identitas Workload Identity didasarkan pada akun layanan dan instance belum memiliki akun layanan terlampir, buat dan lampirkan akun layanan ke instance.
  • Aktifkan fitur menggunakan flag --identity-certificate dan tentukan identitas workload terkelola yang akan digunakan dengan flag --identity.
  • Mulai ulang VM.

gcloud

Gunakan perintah gcloud alpha compute instances update untuk memperbarui konfigurasi instance.

  1. Jika instance belum memiliki akun layanan terlampir, lampirkan akun layanan ke instance.

  2. Perbarui konfigurasi untuk instance yang ada guna mengaktifkan identitas workload terkelola.

    gcloud alpha compute instances update INSTANCE_NAME \
       --zone=ZONE \
       --identity-certificate \
       --identity=TRUST_DOMAIN/ns/NAMESPACE/sa/WORKLOAD_IDENTIFIER
    

    Ganti kode berikut:

    • INSTANCE_NAME: nama instance
    • ZONE: zona tempat instance berada
    • TRUST_DOMAIN: ID untuk domain kepercayaan, dalam format berikut: none $POOL_ID.global.$PROJECT_NUMBER.workload.id.goog

    Nilai domain kepercayaan menggunakan placeholder berikut: * POOL_ID: nama workload identity pool * PROJECT_NUMBER: nomor project untuk project tempat workload identity pool dibuat + NAMESPACE: nama namespace yang berisi kebijakan pembuktian workload yang mengotorisasi workload untuk menegaskan identitas workload terkelola + WORKLOAD_IDENTIFIER: nama identitas workload terkelola yang dibuat di namespace workload identity pool

  3. Aktifkan penyediaan identitas workload terkelola otomatis menggunakan agen tamu dengan memperbarui setelan di file konfigurasi agen tamu.

  4. Hentikan VM.

    gcloud alpha compute instances stop INSTANCE_NAME \
       --zone=ZONE
    

    Ganti kode berikut:

    • INSTANCE_NAME: nama instance
    • ZONE: zona tempat instance berada
  5. Mulai VM.

    gcloud alpha compute instances start INSTANCE_NAME \
       --zone=ZONE
    

    Ganti kode berikut:

    • INSTANCE_NAME: nama instance
    • ZONE: zona tempat instance berada

Mengakses kredensial workload di VM Linux

Setelah Anda membuat dan memulai instance komputasi yang menggunakan identitas workload terkelola, infrastruktur Google Cloud (termasuk Agen Tamu) akan otomatis menyediakan dan mengelola rotasi kredensial untuk instance.

Sertifikat workload, termasuk kunci pribadi dan paket kepercayaan, ditempatkan ke dalam direktori tertentu di sistem file VM: /var/run/secrets/workload-spiffe-credentials. Aplikasi dapat membaca sertifikat, kunci pribadi, dan paket kepercayaan dari sistem file secara langsung untuk membuat koneksi mTLS.

Agen tamu Compute Engine di OS tamu menjalankan tugas pembaruan workload dan, jika diperlukan, membuat direktori /var/run/secrets/workload-spiffe-credentials. Izin direktori ditetapkan ke 0755 (rwxr-xr-x).

Direktori berisi file berikut yang dibuat dengan izin 0644 (rw-r--r--):

  • private_key.pem: kunci pribadi berformat PEM
  • certificates.pem: paket sertifikat X.509 berformat PEM yang dapat ditampilkan ke VM lain sebagai rantai sertifikat klien, atau digunakan sebagai rantai sertifikat server.
  • ca_certificates.pem: paket sertifikat X.509 berformat PEM untuk digunakan sebagai anchor kepercayaan saat memvalidasi sertifikat peer.

    spiffe://POOL_ID.global.PROJECT_NUMBER.workload.id.goog
    
  • config_status: file log yang berisi pesan error.

Memperbarui kredensial dan paket kepercayaan

Bidang kontrol Compute Engine secara otomatis merotasi kredensial identitas workload terkelola dan anchor kepercayaan secara berkala.

Jika aplikasi Anda menggunakan sistem file untuk mengakses kredensial workload dan paket kepercayaan, agen tamu Compute Engine akan otomatis memperbarui kredensial dan paket kepercayaan, misalnya, saat sertifikat mTLS dirotasi.

Memperbarui konfigurasi penerbitan sertifikat dan kepercayaan

Anda dapat mengubah konfigurasi penerbitan sertifikat dan konfigurasi kepercayaan untuk VM yang menggunakan identitas workload terkelola.

Memperbarui setiap VM Compute Engine

Untuk memperbarui konfigurasi penerbitan sertifikat dan konfigurasi kepercayaan, Anda harus memperbarui workload identity pool. Gunakan perintah gcloud alpha iam workload-identity-pools update, seperti yang ditunjukkan dalam contoh berikut:

gcloud alpha iam workload-identity-pools update WORKLOAD_IDENTITY_POOL_ID \
    --location="global" \
    --inline-certificate-issuance-config-file=CIC_JSON_FILE_PATH \
    --inline-trust-config-file=TC_JSON_FILE_PATH \
    --project=PROJECT_ID

Ganti kode berikut:

  • WORKLOAD_IDENTITY_POOL_ID: ID workload identity pool.
  • CIC_JSON_FILE_PATH: Jalur ke file konfigurasi penerbitan sertifikat berformat JSON baru (cic.json).
  • TC_JSON_FILE_PATH: Opsional: Jalur ke file konfigurasi kepercayaan berformat JSON baru (tc.json). Jika workload Anda melakukan autentikasi di berbagai domain kepercayaan, Anda harus menentukan file ini. Jika tidak, Anda dapat menghapus setelan --inline-trust-config.
  • PROJECT_ID: Nama Google Cloud project Anda.

Memecahkan masalah

Untuk menemukan metode mendiagnosis dan menyelesaikan error umum terkait pengambilan kredensial workload, lihat dokumentasi Memecahkan masalah autentikasi workload ke workload.

Untuk memecahkan masalah terkait pool atau kebijakan pembuktian yang salah dikonfigurasi, lihat log audit untuk workload identity pool.

Langkah berikutnya