Mengonfigurasi kebijakan menggunakan gcloud CLI

Halaman ini berisi petunjuk untuk mengonfigurasi kebijakan Otorisasi Biner menggunakan Google Cloud CLI. Sebagai alternatif, Anda juga dapat melakukan tugas ini dengan menggunakan Google Cloud Console atau REST API. Langkah ini adalah bagian dari menyiapkan Otorisasi Biner.

Untuk mengonfigurasi kebijakan menggunakan alat command line, ekspor kebijakan yang ada sebagai file YAML. Setelah mengubah file, Anda dapat mengimpornya untuk memperbarui kebijakan, seperti yang akan dijelaskan dalam panduan ini. Untuk mengetahui informasi lebih lanjut mengenai format YAML kebijakan, lihat Referensi YAML Kebijakan.

Sebelum memulai

  1. Aktifkan Otorisasi Biner.
  2. Membuat cluster.
  3. Jika Anda ingin menggunakan attestations, sebaiknya buat attestor sebelum mengonfigurasi kebijakan. Anda dapat membuat attestor menggunakan alat command line atau melalui Konsol Google Cloud.
  4. Tetapkan project ID ke project tempat Anda mengaktifkan Otorisasi Biner:

    PROJECT_ID=PROJECT_ID
    gcloud config set project ${PROJECT_ID}
    

Mengekspor file YAML kebijakan

Bagian ini berlaku untuk Cluster GKE, GKE, Cloud Run, dan Anthos Service Mesh.

Untuk memperbarui kebijakan, ekspor ke file YAML lokal terlebih dahulu, seperti berikut:

gcloud container binauthz policy export > /tmp/policy.yaml

Secara default, isi file terlihat seperti berikut:

admissionWhitelistPatterns:
- namePattern: gcr.io/google_containers/*
- namePattern: gcr.io/google-containers/*
- namePattern: k8s.gcr.io/**
- namePattern: gke.gcr.io/**
- namePattern: gcr.io/stackdriver-agents/*
globalPolicyEvaluationMode: ENABLE
defaultAdmissionRule:
  evaluationMode: EVALUATION_MODE
  enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
name: projects/PROJECT_ID/policy

Untuk mengubah kebijakan, edit file dan tambahkan atau perbarui bagian, seperti yang akan dijelaskan nanti dalam panduan ini. Setelah menyimpan file, Anda dapat mengimpor kebijakan.

Menetapkan aturan default

Bagian ini berlaku untuk Cluster GKE, GKE, Cloud Run, dan Anthos Service Mesh.

Aturan adalah bagian dari kebijakan yang menentukan batasan yang harus dipenuhi image container sebelum dapat di-deploy. Aturan default menentukan batasan yang berlaku untuk semua image yang tidak dikecualikan yang tidak memiliki aturan khusus cluster sendiri. Setiap kebijakan harus memiliki aturan default.

Aturan default ditentukan dalam node defaultAdmissionRule di file YAML kebijakan. Untuk mengetahui informasi selengkapnya tentang bagian aturan ini, lihat ADMISSION_RULE di Referensi YAML Kebijakan. Untuk contoh aturan default, lihat Kebijakan Contoh.

Untuk menetapkan aturan default, edit node defaultAdmissionRule dalam file policy.yaml sesuai kebutuhan:

defaultAdmissionRule:
  evaluationMode: EVALUATION_MODE
  enforcementMode: ENFORCEMENT_MODE
  requireAttestationsBy:
  - ATTESTOR
  - ...

Ganti kode berikut:

  • EVALUATION_MODE: Mode evaluasi menentukan jenis batasan yang diterapkan oleh pemeriksa Otorisasi Biner pada waktu deployment. Ganti EVALUATION_MODE dengan salah satu opsi berikut:

    • ALWAYS_ALLOW: Mengizinkan semua image di-deploy.
    • ALWAYS_DENY: Melarang semua image di-deploy.
    • REQUIRE_ATTESTATION: Memungkinkan image di-deploy jika image memiliki satu atau beberapa pengesahan yang dapat diverifikasi oleh semua attestor yang Anda tambahkan ke aturan ini. Pada waktu deployment, pemberlakuan akan memverifikasi pengesahan menggunakan attestor yang Anda tambahkan ke daftar ATTESTOR dalam aturan ini. Untuk mempelajari cara membuat attestor, lihat Membuat attestor. Jika menentukan REQUIRE_ATTESTATION, Anda juga harus menambahkan blok requireAttestationsBy yang berisi setidaknya satu attestor. Untuk mempelajari cara membuat attestor, lihat Membuat attestor.
  • ENFORCEMENT_MODE: Mode penegakan menentukan cara penegak merespons saat gambar melanggar aturan. Ganti ENFORCEMENT_MODE dengan salah satu hal berikut:

    • ENFORCED_BLOCK_AND_AUDIT_LOG: Memblokir image yang melanggar aturan dan mencatat informasi tentang pelanggaran ke Cloud Audit Logs (default).
    • DRYRUN_AUDIT_LOG_ONLY: Mengizinkan semua image untuk men-deploy, tetapi mencatat informasi penerapan, termasuk informasi tentang pelanggaran, ke Cloud Audit Logs.
  • ATTESTOR: Jika menetapkan EVALUATION_MODE ke REQUIRE_ATTESTATION, Anda juga harus menambahkan blok requireAttesationsBy. Di blok tersebut, Anda akan mencantumkan satu atau beberapa attestor, berdasarkan ID resource. ID resource memiliki format:

    projects/PROJECT_ID/attestors/ATTESTOR_NAME.

    Untuk mempelajari lebih lanjut cara membuat attestor, lihat Membuat attestor.

Kelola gambar yang dikecualikan

Bagian ini berlaku untuk Cluster GKE, GKE, Cloud Run, dan Anthos Service Mesh.

Gambar yang dikecualikan adalah gambar yang dikecualikan dari aturan kebijakan. Otorisasi Biner selalu mengizinkan image yang dikecualikan di-deploy.

Anda menentukan image yang dikecualikan dengan mencantumkan jalur registry-nya di admissionWhitelistPatterns. Jalur ini mengacu ke Container Registry atau registry image lainnya. Pada waktu deployment, Otorisasi Biner mengecualikan daftar image yang ditentukan oleh admissionWhitelistPatterns setelah image yang ditentukan oleh kebijakan sistem.

Untuk menambahkan gambar pengecualian, tambahkan node namePattern pada daftar admissionWhitelistPatterns di file policy.yaml:

admissionWhitelistPatterns:
- namePattern: MATCHING_PATTERN

Ganti MATCHING_PATTERN dengan jalur ke satu gambar di registry Anda berdasarkan pencocokan persis, atau ke gambar apa pun yang cocok dengan pola menggunakan simbol karakter pengganti (*, **).

Cloud Run

Bagian ini berlaku untuk Cloud Run.

Anda tidak dapat secara langsung menentukan nama gambar yang berisi tag. Misalnya, Anda tidak dapat menentukan IMAGE_PATH:latest.

Jika ingin menentukan nama gambar yang berisi tag, Anda harus menentukan nama gambar menggunakan karakter pengganti seperti berikut:

  • * untuk semua versi gambar tunggal; misalnya, us-docker.pkg.dev/myproject/container/hello@*
  • ** untuk semua gambar dalam project; misalnya, us-docker.pkg.dev/myproject/**

Anda dapat menggunakan nama jalur untuk menentukan ringkasan dalam format IMAGE_PATH@DIGEST.

Mode evaluasi kebijakan sistem

Bagian ini berlaku untuk cluster GKE dan GKE.

Mode evaluasi kebijakan sistem adalah setelan kebijakan yang menyebabkan Otorisasi Biner mengevaluasi kebijakan sistem sebelum mengevaluasi kebijakan yang Anda konfigurasikan. Google mengelola kebijakan sistem, yang mengecualikan daftar image sistem yang dikelola Google yang digunakan GKE. Image yang tercantum dalam kebijakan sistem tidak diblokir oleh penegakan kebijakan. Jika tidak mengaktifkan setelan ini, Anda harus mengelola sendiri daftar gambar yang dikecualikan. Pelajari cara Mengelola image yang dikecualikan.

Anda dapat melihat konten kebijakan sistem menggunakan perintah berikut:

gcloud alpha container binauthz policy export-system-policy

Untuk mengaktifkan mode evaluasi kebijakan sistem, tambahkan baris berikut ke file policy.yaml:

globalPolicyEvaluationMode: ENABLE

Untuk menonaktifkan mode evaluasi kebijakan sistem, tambahkan hal berikut:

globalPolicyEvaluationMode: DISABLE

Anda dapat mengekspor kebijakan sistem yang terkait dengan wilayah tertentu sebagai berikut:

gcloud alpha container binauthz policy export-system-policy \
  --location=REGION > /tmp/policy.yaml

Ganti REGION dengan wilayah yang terkait dengan kebijakan sistem yang ingin Anda ekspor (atau "global"). Contohnya mencakup: asia-east1, europe-west1, us-central1.

Jika Anda menghapus --location atau menentukan --location=global, perintah tersebut akan menghasilkan kebijakan sistem dari region dalam grup region terakhir untuk menerima pembaruan. Karena sebagian besar perubahan pada kebijakan sistem merupakan penambahan, output menampilkan kumpulan image sistem yang saat ini diizinkan di semua wilayah.

Menetapkan aturan khusus cluster (opsional)

Bagian ini berlaku untuk cluster GKE dan GKE.

Sebuah cluster juga dapat memiliki satu atau beberapa aturan khusus cluster. Jenis aturan ini hanya berlaku untuk image yang akan di-deploy ke cluster GKE tertentu. Aturan khusus cluster adalah bagian opsional dari kebijakan.

Aturan khusus cluster ditentukan dalam node clusterAdmissionRules di file YAML kebijakan. Untuk mengetahui informasi selengkapnya tentang bagian aturan ini, lihat ADMISSION_RULE di Referensi YAML Kebijakan. Sebagai contoh, lihat Menggunakan aturan khusus cluster di Kebijakan Contoh.

Untuk menambahkan aturan khusus cluster:

Di file policy.yaml, tambahkan node clusterAdmissionRules:

clusterAdmissionRules:
  CLUSTER_SPECIFIER:
    evaluationMode: EVALUATION_MODE
    enforcementMode: ENFORCEMENT_MODE
    requireAttestationsBy:
    - ATTESTOR
    - ...

Ganti kode berikut:

  • CLUSTER_SPECIFIER: ID resource cluster tempat aturan diterapkan. Anda memformat aturan sebagai berikut:

    • Untuk GKE, cluster terlampir GKE, dan GKE di AWS, formatnya adalah CLUSTER_LOCATION.CLUSTER_NAME—misalnya, us-central1-a.test-cluster.
    • Untuk GKE di Bare Metal dan GKE di VMware, formatnya adalah FLEET_MEMBERSHIP_LOCATION.FLEET_MEMBERSHIP_ID—misalnya, global.test-membership.

      Properti lainnya dijelaskan pada bagian Menetapkan aturan default di awal dalam panduan ini. Lihat Contoh Kebijakan untuk mengetahui contoh aturan khusus cluster.

  • EVALUATION_MODE: Mode evaluasi menentukan jenis batasan yang diterapkan oleh pemeriksa Otorisasi Biner pada waktu deployment. Ganti EVALUATION_MODE dengan salah satu opsi berikut:

    • ALWAYS_ALLOW: Mengizinkan semua image di-deploy.
    • ALWAYS_DENY: Melarang semua image di-deploy.
    • REQUIRE_ATTESTATION: Memungkinkan image di-deploy jika image memiliki satu atau beberapa pengesahan yang dapat diverifikasi oleh semua attestor yang Anda tambahkan ke aturan ini. Pada waktu deployment, pemberlakuan akan memverifikasi pengesahan menggunakan attestor yang Anda tambahkan ke daftar ATTESTOR dalam aturan ini. Untuk mempelajari cara membuat attestor, lihat Membuat attestor. Jika menentukan REQUIRE_ATTESTATION, Anda juga harus menambahkan blok requireAttestationsBy yang berisi setidaknya satu attestor. Untuk mempelajari cara membuat attestor, lihat Membuat attestor.
  • ENFORCEMENT_MODE: Mode penegakan menentukan cara penegak merespons saat gambar melanggar aturan. Ganti ENFORCEMENT_MODE dengan salah satu hal berikut:

    • ENFORCED_BLOCK_AND_AUDIT_LOG: Memblokir image yang melanggar aturan dan mencatat informasi tentang pelanggaran ke Cloud Audit Logs (default).
    • DRYRUN_AUDIT_LOG_ONLY: Mengizinkan semua image untuk men-deploy, tetapi mencatat informasi penerapan, termasuk informasi tentang pelanggaran, ke Cloud Audit Logs.
  • ATTESTOR: Jika menetapkan EVALUATION_MODE ke REQUIRE_ATTESTATION, Anda juga harus menambahkan blok requireAttesationsBy. Di blok tersebut, Anda akan mencantumkan satu atau beberapa attestor, berdasarkan ID resource. ID resource memiliki format:

    projects/PROJECT_ID/attestors/ATTESTOR_NAME.

    Untuk mempelajari lebih lanjut cara membuat attestor, lihat Membuat attestor.

Tetapkan aturan spesifik (opsional)

Anda dapat membuat aturan yang mencakup identitas layanan mesh, akun layanan Kubernetes, atau namespace Kubernetes.

Menetapkan aturan untuk identitas layanan Anthos Service Mesh

Untuk menetapkan aturan bagi identitas layanan Anthos Service Mesh (Pratinjau), edit file policy.yaml Anda dan tambahkan blok istioServiceIdentityAdmissionRules, misalnya:

defaultAdmissionRule:
  enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
  evaluationMode: ALWAYS_DENY
globalPolicyEvaluationMode: ENABLE
istioServiceIdentityAdmissionRules:
  SERVICE_IDENTITY_ID:
    enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
    evaluationMode: ENFORCEMENT_MODE
    requireAttestationsBy:
    - <var>ATTESTOR</var>
    - ...

name: projects/PROJECT_ID/policy

Ganti kode berikut:

  • SERVICE_IDENTITY_ID: identitas layanan Anthos Service Mesh untuk mencakup aturan ini. Identitas layanan memiliki format berikut: PROJECT_ID.svc.id.goog/ns/NAMESPACE/sa/SERVICE_ACCOUNT. Di ID identitas layanan, ganti kode berikut:

    • PROJECT_ID: project ID tempat Anda menentukan resource Kubernetes Anda.
    • NAMESPACE: namespace Kubernetes.
    • SERVICE_ACCOUNT: akun layanan.
  • EVALUATION_MODE: Mode evaluasi menentukan jenis batasan yang diterapkan oleh pemeriksa Otorisasi Biner pada waktu deployment. Ganti EVALUATION_MODE dengan salah satu opsi berikut:

    • ALWAYS_ALLOW: Mengizinkan semua image di-deploy.
    • ALWAYS_DENY: Melarang semua image di-deploy.
    • REQUIRE_ATTESTATION: Memungkinkan image di-deploy jika image memiliki satu atau beberapa pengesahan yang dapat diverifikasi oleh semua attestor yang Anda tambahkan ke aturan ini. Pada waktu deployment, pemberlakuan akan memverifikasi pengesahan menggunakan attestor yang Anda tambahkan ke daftar ATTESTOR dalam aturan ini. Untuk mempelajari cara membuat attestor, lihat Membuat attestor. Jika menentukan REQUIRE_ATTESTATION, Anda juga harus menambahkan blok requireAttestationsBy yang berisi setidaknya satu attestor. Untuk mempelajari cara membuat attestor, lihat Membuat attestor.
  • ENFORCEMENT_MODE: Mode penegakan menentukan cara penegak merespons saat gambar melanggar aturan. Ganti ENFORCEMENT_MODE dengan salah satu hal berikut:

    • ENFORCED_BLOCK_AND_AUDIT_LOG: Memblokir image yang melanggar aturan dan mencatat informasi tentang pelanggaran ke Cloud Audit Logs (default).
    • DRYRUN_AUDIT_LOG_ONLY: Mengizinkan semua image untuk men-deploy, tetapi mencatat informasi penerapan, termasuk informasi tentang pelanggaran, ke Cloud Audit Logs.
  • ATTESTOR: Jika menetapkan EVALUATION_MODE ke REQUIRE_ATTESTATION, Anda juga harus menambahkan blok requireAttesationsBy. Di blok tersebut, Anda akan mencantumkan satu atau beberapa attestor, berdasarkan ID resource. ID resource memiliki format:

    projects/PROJECT_ID/attestors/ATTESTOR_NAME.

    Untuk mempelajari lebih lanjut cara membuat attestor, lihat Membuat attestor.

Menetapkan aturan untuk akun layanan Kubernetes

Untuk menetapkan aturan untuk akun layanan Kubernetes, edit file policy.yaml dan tambahkan blok kubernetesServiceAccountAdmissionRules, misalnya:

defaultAdmissionRule:
  enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
  evaluationMode: ALWAYS_DENY
globalPolicyEvaluationMode: ENABLE
kubernetesServiceAccountAdmissionRules:
  KUBERNETES_SERVICE_ACCOUNT_ID:
    enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
    evaluationMode: ENFORCEMENT_MODE
    requireAttestationsBy:
    - <var>ATTESTOR</var>
    - ...
name: projects/PROJECT_ID/policy

Ganti kode berikut:

  • KUBERNETES_SERVICE_ACCOUNT_ID: Akun layanan Kubernetes yang akan menjadi target aturan. ID akun layanan ini memiliki format: NAMESPACE:SERVICE_ACCOUNT. Di ID akun layanan, ganti string berikut:

    • NAMESPACE: namespace Kubernetes.
    • SERVICE_ACCOUNT: nama akun layanan.
  • EVALUATION_MODE: Mode evaluasi menentukan jenis batasan yang diterapkan oleh pemeriksa Otorisasi Biner pada waktu deployment. Ganti EVALUATION_MODE dengan salah satu opsi berikut:

    • ALWAYS_ALLOW: Mengizinkan semua image di-deploy.
    • ALWAYS_DENY: Melarang semua image di-deploy.
    • REQUIRE_ATTESTATION: Memungkinkan image di-deploy jika image memiliki satu atau beberapa pengesahan yang dapat diverifikasi oleh semua attestor yang Anda tambahkan ke aturan ini. Pada waktu deployment, pemberlakuan akan memverifikasi pengesahan menggunakan attestor yang Anda tambahkan ke daftar ATTESTOR dalam aturan ini. Untuk mempelajari cara membuat attestor, lihat Membuat attestor. Jika menentukan REQUIRE_ATTESTATION, Anda juga harus menambahkan blok requireAttestationsBy yang berisi setidaknya satu attestor. Untuk mempelajari cara membuat attestor, lihat Membuat attestor.
  • ENFORCEMENT_MODE: Mode penegakan menentukan cara penegak merespons saat gambar melanggar aturan. Ganti ENFORCEMENT_MODE dengan salah satu hal berikut:

    • ENFORCED_BLOCK_AND_AUDIT_LOG: Memblokir image yang melanggar aturan dan mencatat informasi tentang pelanggaran ke Cloud Audit Logs (default).
    • DRYRUN_AUDIT_LOG_ONLY: Mengizinkan semua image untuk men-deploy, tetapi mencatat informasi penerapan, termasuk informasi tentang pelanggaran, ke Cloud Audit Logs.
  • ATTESTOR: Jika menetapkan EVALUATION_MODE ke REQUIRE_ATTESTATION, Anda juga harus menambahkan blok requireAttesationsBy. Di blok tersebut, Anda akan mencantumkan satu atau beberapa attestor, berdasarkan ID resource. ID resource memiliki format:

    projects/PROJECT_ID/attestors/ATTESTOR_NAME.

    Untuk mempelajari lebih lanjut cara membuat attestor, lihat Membuat attestor.

Menetapkan aturan untuk namespace Kubernetes

Guna menetapkan aturan untuk namespace Kubernetes, edit file policy.yaml dan tambahkan blok kubernetesNamespaceAdmissionRules, misalnya:

defaultAdmissionRule:
  enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
  evaluationMode: ALWAYS_DENY
globalPolicyEvaluationMode: ENABLE
kubernetesNamespaceAdmissionRules:
  KUBERNETES_NAMESPACE:
    enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
    evaluationMode: EVALUATION_MODE
    requireAttestationsBy:
    - <var>ATTESTOR</var>
    - ...
name: projects/PROJECT_ID/policy

Ganti kode berikut:

  • KUBERNETES_NAMESPACE: Namespace Kubernetes yang akan menjadi cakupan aturan ini.

  • EVALUATION_MODE: Mode evaluasi menentukan jenis batasan yang diterapkan oleh pemeriksa Otorisasi Biner pada waktu deployment. Ganti EVALUATION_MODE dengan salah satu opsi berikut:

    • ALWAYS_ALLOW: Mengizinkan semua image di-deploy.
    • ALWAYS_DENY: Melarang semua image di-deploy.
    • REQUIRE_ATTESTATION: Memungkinkan image di-deploy jika image memiliki satu atau beberapa pengesahan yang dapat diverifikasi oleh semua attestor yang Anda tambahkan ke aturan ini. Pada waktu deployment, pemberlakuan akan memverifikasi pengesahan menggunakan attestor yang Anda tambahkan ke daftar ATTESTOR dalam aturan ini. Untuk mempelajari cara membuat attestor, lihat Membuat attestor. Jika menentukan REQUIRE_ATTESTATION, Anda juga harus menambahkan blok requireAttestationsBy yang berisi setidaknya satu attestor. Untuk mempelajari cara membuat attestor, lihat Membuat attestor.
  • ENFORCEMENT_MODE: Mode penegakan menentukan cara penegak merespons saat gambar melanggar aturan. Ganti ENFORCEMENT_MODE dengan salah satu hal berikut:

    • ENFORCED_BLOCK_AND_AUDIT_LOG: Memblokir image yang melanggar aturan dan mencatat informasi tentang pelanggaran ke Cloud Audit Logs (default).
    • DRYRUN_AUDIT_LOG_ONLY: Mengizinkan semua image untuk men-deploy, tetapi mencatat informasi penerapan, termasuk informasi tentang pelanggaran, ke Cloud Audit Logs.
  • ATTESTOR: Jika menetapkan EVALUATION_MODE ke REQUIRE_ATTESTATION, Anda juga harus menambahkan blok requireAttesationsBy. Di blok tersebut, Anda akan mencantumkan satu atau beberapa attestor, berdasarkan ID resource. ID resource memiliki format:

    projects/PROJECT_ID/attestors/ATTESTOR_NAME.

    Untuk mempelajari lebih lanjut cara membuat attestor, lihat Membuat attestor.

Mengimpor file YAML kebijakan

Bagian ini berlaku untuk Cluster GKE, GKE, Cloud Run, dan Anthos Service Mesh.

Impor kembali file YAML kebijakan ke Otorisasi Biner dengan memasukkan kode berikut:

gcloud container binauthz policy import /tmp/policy.yaml

Langkah selanjutnya