Mengonfigurasi kebijakan menggunakan REST API

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

Ringkasan

Kebijakan adalah sekumpulan aturan yang mengatur deployment satu atau beberapa image container.

Saat mengonfigurasi kebijakan menggunakan REST API, Anda mengisi nilai dalam format JSON yang strukturnya identik dengan struktur YAML yang digunakan dalam interaksi gcloud dengan layanan. Untuk informasi selengkapnya, lihat Referensi YAML Kebijakan.

Untuk mengonfigurasi kebijakan, Anda harus:

  • Mengekspor file JSON kebijakan
  • Tambahkan gambar tambahan yang dikecualikan (opsional)
  • Menetapkan aturan default
  • Menambahkan aturan khusus cluster (opsional)
  • Mengimpor file JSON kebijakan

Sebagian besar kebijakan di dunia nyata memeriksa untuk melihat apakah semua penanda tangan yang diperlukan telah memverifikasi bahwa image container sudah siap di-deploy. Dalam hal ini, Anda juga harus membuat pengautentikasi saat mengonfigurasi kebijakan.

Menetapkan project default

Tetapkan project Google Cloud default jika Anda belum melakukannya:

PROJECT_ID=PROJECT_ID
gcloud config set project ${PROJECT_ID}

dengan PROJECT_ID sebagai project ID Anda.

Mengekspor kebijakan

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

Ekspor kebijakan ke file JSON di sistem lokal Anda:

curl \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "x-goog-user-project: ${PROJECT_ID}" \
    "https://binaryauthorization.googleapis.com/v1/projects/${PROJECT_ID}/policy" \
    -o "/tmp/policy.json"

Secara default, file memiliki konten berikut:

{
  "name": "projects/PROJECT_ID/policy",
  "globalPolicyEvaluationMode": "ENABLE",
  "defaultAdmissionRule": {
    "evaluationMode": "ALWAYS_ALLOW",
    "enforcementMode": "ENFORCED_BLOCK_AND_AUDIT_LOG"
  }
}

Mengelola gambar yang dikecualikan

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

Image yang dikecualikan adalah image container yang dikecualikan dari aturan kebijakan. Otorisasi Biner selalu mengizinkan image yang dikecualikan untuk di-deploy.

Anda menentukan gambar yang dikecualikan dengan mencantumkan jalur registry-nya di admissionWhitelistPatterns. Jalur dapat merujuk ke Container Registry atau registry image lainnya. Penegakan memproses gambar yang dikecualikan di admissionWhitelistPatterns setelah gambar dikecualikan oleh mode evaluasi kebijakan sistem.

Untuk menambahkan gambar yang dikecualikan, tambahkan node namePattern di bawah daftar admissionWhitelistPatterns dalam file JSON kebijakan:

{
  "name": "projects/PROJECT_ID/policy",
  "admissionWhitelistPatterns": [
    {
      "namePattern": "MATCHING_PATTERN"
    }
  ],
  ...
}

dengan MATCHING_PATTERN adalah jalur ke satu gambar di registry Anda dengan 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 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 sebagai berikut:

  • * untuk semua versi gambar tunggal; misalnya, us-docker.pkg.dev/myproject/container/hello@*
  • ** untuk semua image 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 GKE dan Distributed Cloud.

Mode evaluasi kebijakan sistem adalah setelan kebijakan yang menyebabkan Binary Authorization mengevaluasi kebijakan sistem sebelum mengevaluasi kebijakan yang Anda konfigurasi. Google mengelola kebijakan sistem, yang mengecualikan daftar image sistem yang dikelola Google yang digunakan GKE. Gambar yang tercantum dalam kebijakan sistem tidak diblokir oleh penerapan kebijakan. Jika tidak mengaktifkan setelan ini, Anda harus mengelola daftar gambar yang dikecualikan sendiri. Pelajari cara Mengelola gambar 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 node tingkat teratas berikut ke file JSON kebijakan:

"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 region 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 akan menghasilkan kebijakan sistem dari region dalam grup region terakhir untuk menerima update. Karena sebagian besar perubahan pada kebijakan sistem adalah penambahan, output akan menampilkan kumpulan image sistem yang saat ini diizinkan di semua region.

Menetapkan aturan default

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

Aturan adalah bagian dari kebijakan yang menentukan batasan yang harus dilalui image container sebelum dapat di-deploy. Setiap permintaan izin memiliki cluster GKE terkait. Jika permintaan tidak cocok dengan aturan khusus cluster, aturan default akan digunakan.

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

Untuk menetapkan aturan default, edit node defaultAdmissionRule dalam file JSON kebijakan sesuai kebutuhan:

  "defaultAdmissionRule": {
    "evaluationMode": "EVAL_MODE",
    "enforcementMode": "ENFORCEMENT_MODE"
    requireAttestationsBy: [
      ATTESTOR,
      ...
    ]
  }

dengan:

  • EVAL_MODE menentukan jenis batasan yang dievaluasi oleh Otorisasi Biner sebelum mengizinkan image container di-deploy.
  • ENFORCEMENT_MODE menentukan tindakan yang diambil jika image penampung tidak sesuai dengan batasan yang ditentukan dalam aturan.
  • ATTESTOR menentukan pengesah (jika diperlukan) yang harus menandatangani image container sebelum dapat di-deploy. Gunakan jalur yang sepenuhnya memenuhi syarat ke pengautentikasi dalam format projects/PROJECT_ID/attestors/ATTESTOR_NAME.

Jika aturan Anda memeriksa apakah semua pengautentikasi yang diperlukan telah menandatangani image penampung, Anda harus membuat pengautentikasi sebelum menyelesaikan langkah ini.

Menetapkan aturan khusus cluster (opsional)

Bagian ini berlaku untuk GKE dan Distributed Cloud.

Cluster juga dapat memiliki satu atau beberapa aturan khusus cluster. Jenis aturan ini hanya berlaku untuk cluster GKE yang ditentukan. Jika cluster tidak memiliki aturannya sendiri, aturan default akan digunakan. Aturan khusus cluster adalah bagian opsional dari kebijakan.

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

Untuk menambahkan aturan khusus cluster:

Di file JSON kebijakan, tambahkan node clusterAdmissionRules:

"clusterAdmissionRules": {
    "us-central1-a.test-cluster": {
      "evaluationMode": "REQUIRE_ATTESTATION",
      "requireAttestationsBy": [
        "ATTESTOR",
        ...
      ],
      "enforcementMode": "ENFORCED_BLOCK_AND_AUDIT_LOG"
    }
  },

dengan CLUSTER_SPECIFIER adalah ID resource cluster tempat aturan diterapkan.

  • Untuk GKE, cluster terpasang GKE, dan GKE di AWS, formatnya adalah CLUSTER_LOCATION.CLUSTER_NAME—misalnya, us-central1-a.test-cluster.
  • Untuk Google Distributed Cloud dan Google Distributed Cloud, formatnya adalah FLEET_MEMBERSHIP_LOCATION.FLEET_MEMBERSHIP_ID—misalnya, global.test-membership.

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

Jika aturan Anda memeriksa apakah semua pengautentikasi yang diperlukan telah menandatangani image penampung, Anda harus membuat pengautentikasi sebelum menyelesaikan langkah ini.

Mengimpor file JSON kebijakan

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

Impor file JSON kebijakan kembali ke Otorisasi Biner dengan memasukkan hal berikut:

curl -X PUT \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "x-goog-user-project: ${PROJECT_ID}" \
    --data-binary @/tmp/policy.json  \
    "https://binaryauthorization.googleapis.com/v1/projects/${PROJECT_ID}/policy"

Langkah selanjutnya