Menggunakan layanan evaluasi kebijakan

Halaman ini menunjukkan cara menggunakan perintah Google Cloud CLI layanan evaluasi kebijakan untuk mengevaluasi dengan cepat apakah image atau resource Kubernetes sesuai dengan kebijakan platform berbasis pemeriksaan validasi berkelanjutan.

Ringkasan

Layanan evaluasi kebijakan adalah fitur Otorisasi Biner yang dapat Anda gunakan dengan kebijakan platform berbasis pemeriksaan validasi berkelanjutan (CV). Layanan evaluasi kebijakan mengevaluasi sesuai permintaan apakah image container yang Anda tentukan sesuai dengan kebijakan platform CV. Layanan evaluasi kebijakan tersedia sebagai perintah gcloud CLI dan metode projects.platforms.gke.policies.evaluate.

CV memeriksa pelanggaran kebijakan setidaknya sekali setiap 24 jam. Oleh karena itu, perlu waktu hingga 24 jam agar peristiwa CV muncul di Logging setelah CV diaktifkan atau resource Kubernetes di-deploy. Selain itu, CV menghasilkan entri log saat mendeteksi pelanggaran kebijakan. CV tidak menghasilkan entri log saat resource Kubernetes sesuai dengan kebijakan.

Layanan evaluasi kebijakan menghasilkan verdict yang menunjukkan apakah gambar sesuai dengan kebijakan atau apakah gambar melanggar kebijakan.

Dengan menggunakan layanan evaluasi kebijakan, Anda dapat dengan cepat menentukan apakah gambar Anda sesuai dengan kebijakan.

Saat menggunakan layanan ini, Anda menentukan URL gambar, baik secara langsung maupun dalam resource Kubernetes, dan Anda juga menentukan nama kebijakan berbasis pemeriksaan CV GKE.

Dengan cara ini, layanan evaluasi kebijakan dapat membantu Anda mengembangkan kebijakan dan men-debug resource Kubernetes yang tidak mematuhi kebijakan sebelum Anda menggunakan CV.

Fitur ini hanya mendukung kebijakan berbasis pemeriksaan GKE CV.

Gambar juga harus menentukan ringkasan gambar dalam bentuk IMAGE_URL@IMAGE_DIGEST, kecuali dalam kasus berikut:

  • Pemeriksaan direktori tepercaya: Pemeriksaan akan lulus jika gambar berada di direktori yang Anda tentukan.
  • Daftar yang dikecualikan untuk gambar: Semua pemeriksaan lainnya memerlukan ringkasan gambar dalam bentuk IMAGE_URL@IMAGE_DIGEST.

Sebelum memulai

  1. Install the Google Cloud CLI.
  2. To initialize the gcloud CLI, run the following command:

    gcloud init

Peran yang diperlukan

Untuk mendapatkan izin yang diperlukan guna menggunakan layanan evaluasi kebijakan, minta administrator untuk memberi Anda peran IAM Policy Evaluator (roles/binaryauthorization.policyEvaluator) di project kebijakan. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

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

Jika kebijakan Anda menggunakan pemeriksaan tertentu, Anda mungkin perlu meminta administrator untuk memberikan peran yang diperlukan khusus pemeriksaan berikut:

Mengevaluasi kebijakan platform berbasis pemeriksaan

Layanan evaluasi kebijakan dapat mengevaluasi satu URL gambar atau gambar yang ditentukan dalam resource Kubernetes berformat JSON atau YAML.

Mengevaluasi kebijakan platform berbasis pemeriksaan dengan resource Kubernetes

Untuk mengevaluasi kebijakan dengan resource Kubernetes menggunakan gcloud CLI, jalankan perintah berikut:

Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:

  • POLICY_ID: ID kebijakan platform. Jika kebijakan berada di project lain, Anda dapat menggunakan nama resource lengkap: projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID.
  • POD_SPECIFICATION_PATH: Jalur spesifikasi Pod Anda.

Jalankan perintah berikut:

Linux, macOS, atau Cloud Shell

gcloud beta container binauthz policy evaluate POLICY_ID \
    --resource=POD_SPECIFICATION_PATH

Windows (PowerShell)

gcloud beta container binauthz policy evaluate POLICY_ID `
    --resource=POD_SPECIFICATION_PATH

Windows (cmd.exe)

gcloud beta container binauthz policy evaluate POLICY_ID ^
    --resource=POD_SPECIFICATION_PATH

Untuk mengevaluasi kebijakan yang menentukan platform, yang harus ditetapkan ke gke, jalankan perintah berikut:

Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:

  • POLICY_ID: ID kebijakan platform. Jika kebijakan berada di project lain, Anda dapat menggunakan nama resource lengkap: projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID.
  • POD_SPECIFICATION_PATH: Jalur spesifikasi Pod Anda.

Jalankan perintah berikut:

Linux, macOS, atau Cloud Shell

gcloud beta container binauthz policy evaluate POLICY_ID \
    --platform=gke \
    --resource=POD_SPECIFICATION_PATH

Windows (PowerShell)

gcloud beta container binauthz policy evaluate POLICY_ID `
    --platform=gke `
    --resource=POD_SPECIFICATION_PATH

Windows (cmd.exe)

gcloud beta container binauthz policy evaluate POLICY_ID ^
    --platform=gke ^
    --resource=POD_SPECIFICATION_PATH

Mengevaluasi kebijakan platform berbasis pemeriksaan dengan URL gambar

Untuk mengevaluasi kebijakan menggunakan URL gambar, jalankan perintah berikut:

Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:

  • POLICY_ID: ID kebijakan platform. Jika kebijakan berada di project lain, Anda dapat menggunakan nama resource lengkap: projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID.
  • IMAGE_URL: Jalur spesifikasi Pod Anda.

Jalankan perintah berikut:

Linux, macOS, atau Cloud Shell

gcloud beta container binauthz policy evaluate POLICY_ID \
    --image=IMAGE_URL

Windows (PowerShell)

gcloud beta container binauthz policy evaluate POLICY_ID `
    --image=IMAGE_URL

Windows (cmd.exe)

gcloud beta container binauthz policy evaluate POLICY_ID ^
    --image=IMAGE_URL

Saat Anda menggunakan flag --image, namespace dan akun layanan secara implisit dianggap kosong. Jika kebijakan yang Anda evaluasi menggunakan checkset yang dicakupkan ke kubernetesNamespace atau kubernetesServiceAccount, hasil yang ditampilkan mungkin tidak akurat.

Meninjau output perintah

Output perintah berisi verdict tingkat atas yang menunjukkan status kepatuhan Pod. Status kepatuhan berikut dapat ditampilkan:

  • CONFORMANT: Resource Kubernetes sesuai dengan kebijakan platform.
  • NON_CONFORMANT: Resource Kubernetes tidak sesuai dengan kebijakan platform.
  • ERROR: Evaluasi berakhir dengan error.

Respons juga berisi hasil bertingkat yang berisi informasi mendetail tentang status kepatuhan semua pemeriksaan yang dievaluasi untuk setiap gambar yang terdapat dalam resource Kubernetes.

Setiap blok ImageResults berisi kolom explanation yang dapat dibaca manusia yang menjelaskan alasan gambar diizinkan atau tidak diizinkan.

Untuk memfasilitasi pembuatan skrip, perintah akan menampilkan kode keluar non-nol saat spesifikasi Pod tidak sesuai dengan kebijakan atau evaluasi gagal.

Contoh output berikut menunjukkan dua kasus. Dalam kasus pertama, resource Kubernetes sesuai dengan kebijakan. Dalam kasus kedua, resource tidak sesuai dengan kebijakan.

Melihat hasil yang sesuai

Bagian ini menjelaskan output pemeriksaan layanan evaluasi kebijakan yang memastikan Pod mematuhi kebijakan platform.

results:
- imageResults:
  - checkSetResult:
      checkResults:
        results:
        - displayName: My trusted directory check
          evaluationResult:
            verdict: CONFORMANT
          explanation: Image is in a trusted directory
          type: TrustedDirectoryCheck
      displayName: Default check set
      scope: {}
    imageUri: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
    verdict: CONFORMANT
  kubernetesNamespace: default
  kubernetesServiceAccount: default
  podName: my-pod
  verdict: CONFORMANT
verdict: CONFORMANT

Dalam output, verdict CONFORMANT ditampilkan untuk jenis penilaian berikut:

  • Pemeriksaan: Gambar sesuai untuk pemeriksaan individual—dalam hal ini, pemeriksaan direktori tepercaya.
  • CheckSet: Gambar sesuai untuk setiap pemeriksaan di CheckSet.
  • Kebijakan: Gambar sesuai dengan kebijakan.

Karena image mematuhi kebijakan, perintah akan menampilkan kode keluar nol.

Melihat hasil yang tidak sesuai

Bagian ini menjelaskan output pemeriksaan layanan evaluasi kebijakan yang menunjukkan bahwa Pod tidak sesuai dengan kebijakan platform.

results:
- imageResults:
  - checkSetResult:
      checkResults:
        results:
        - displayName: My trusted directory check
          evaluationResult:
            verdict: NON_CONFORMANT
          explanation: Image isn't in a trusted directory
          type: TrustedDirectoryCheck
      displayName: Default check set
      scope: {}
    imageUri: us-docker.pkg.dev/untrusted-directory/containers/gke/hello-app:1.0
    verdict: NON_CONFORMANT
  kubernetesNamespace: default
  kubernetesServiceAccount: default
  podName: my-pod
  verdict: NON_CONFORMANT
verdict: NON_CONFORMANT

Dalam output, karena image tidak sesuai dengan pemeriksaan individual, dalam hal ini pemeriksaan direktori tepercaya, dan oleh karena itu kumpulan semua pemeriksaan, verdict tingkat teratas adalah NON_CONFORMANT, dan perintah menampilkan kode keluar yang bukan nol.

Menguji layanan evaluasi kebijakan

Bagian ini menjelaskan cara menguji layanan evaluasi kebijakan. Anda membuat kebijakan platform berbasis pemeriksaan yang berisi pemeriksaan direktori tepercaya. Pada pengujian pertama, Anda dapat mengevaluasi spesifikasi Pod yang sesuai dengan kebijakan. Pada pengujian kedua, Anda mengevaluasi spesifikasi Pod yang tidak sesuai dengan kebijakan.

Untuk membuat kebijakan yang berisi pemeriksaan direktori tepercaya, jalankan perintah berikut:

  1. Buat file kebijakan platform:

    cat << EOF > my-policy.yaml
    gkePolicy:
      checkSets:
      - checks:
        - displayName: "My trusted directory check"
          trustedDirectoryCheck:
            trustedDirPatterns:
            - "us-docker.pkg.dev/google-samples/containers/gke/"
        displayName: "My default check set"
    EOF
    
  2. Buat kebijakan:

    Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:

    • POLICY_ID: ID kebijakan platform pilihan Anda. Jika kebijakan berada di project lain, Anda dapat menggunakan nama resource lengkap: projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID.
    • POLICY_PATH: Jalur ke file kebijakan.
    • POLICY_PROJECT_ID: Project ID kebijakan.

    Jalankan perintah berikut:

    Linux, macOS, atau Cloud Shell

    gcloud beta container binauthz policy create POLICY_ID \
        --platform=gke \
        --policy-file=POLICY_PATH \
        --project=POLICY_PROJECT_ID

    Windows (PowerShell)

    gcloud beta container binauthz policy create POLICY_ID `
        --platform=gke `
        --policy-file=POLICY_PATH `
        --project=POLICY_PROJECT_ID

    Windows (cmd.exe)

    gcloud beta container binauthz policy create POLICY_ID ^
        --platform=gke ^
        --policy-file=POLICY_PATH ^
        --project=POLICY_PROJECT_ID

    gcloud beta container binauthz policy create POLICY_ID \
    --platform=gke \
    --policy-file=my-policy.yaml
    

Mengevaluasi gambar yang sesuai

Di bagian ini, Anda akan mengevaluasi spesifikasi Pod yang sesuai dengan kebijakan yang Anda buat sebelumnya dalam panduan ini. Evaluasi menghasilkan verdict yang menunjukkan bahwa spesifikasi Pod adalah CONFORMANT, karena spesifikasi Pod mereferensikan image yang berada di direktori yang ditentukan di trustedDirPatterns dalam pemeriksaan direktori tepercaya.

  1. Buat spesifikasi Pod:

    cat << EOF > my-conforming-pod.json
    {
      "apiVersion": "v1",
      "kind": "Pod",
      "metadata": {
        "name": ""
      },
      "spec": {
        "containers": [
          {
            "image": "us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0"
          }
          ]
      }
    }
    EOF
    
  2. Gunakan layanan evaluasi kebijakan dengan menjalankan perintah berikut:

    Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:

    • POLICY_ID: ID kebijakan platform. Jika kebijakan berada di project lain, Anda dapat menggunakan nama resource lengkap: projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID.
    • my-conforming-pod.json: Jalur spesifikasi Pod Anda.

    Jalankan perintah berikut:

    Linux, macOS, atau Cloud Shell

    gcloud beta container binauthz policy evaluate POLICY_ID \
        --image=my-conforming-pod.json

    Windows (PowerShell)

    gcloud beta container binauthz policy evaluate POLICY_ID `
        --image=my-conforming-pod.json

    Windows (cmd.exe)

    gcloud beta container binauthz policy evaluate POLICY_ID ^
        --image=my-conforming-pod.json

Mengevaluasi gambar yang tidak sesuai

Di bagian ini, Anda akan mengevaluasi spesifikasi Pod yang tidak sesuai dengan kebijakan yang Anda buat sebelumnya dalam panduan ini. Evaluasi menghasilkan verdict yang menunjukkan bahwa spesifikasi Pod adalah NON_CONFORMANT, karena spesifikasi Pod mereferensikan image yang berada di luar direktori yang ditentukan dalam trustedDirPatterns dalam pemeriksaan direktori tepercaya.

Untuk mengevaluasi image yang tidak sesuai, jalankan perintah berikut:

  1. Buat spesifikasi Pod:

    cat << EOF > my-non-conforming-pod.json
    {
      "apiVersion": "v1",
      "kind": "Pod",
      "metadata": {
        "name": ""
      },
      "spec": {
        "containers": [
          {
            "image": "us-docker.pkg.dev/untrusted-directory/containers/gke/hello-app:1.0"
          }
        ]
      }
    }
    EOF
    
  2. Gunakan layanan evaluasi kebijakan dengan menjalankan perintah berikut:

    Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:

    • POLICY_ID: ID kebijakan platform. Jika kebijakan berada di project lain, Anda dapat menggunakan nama resource lengkap: projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID.
    • my-non-conforming-pod.json: Jalur spesifikasi Pod Anda.

    Jalankan perintah berikut:

    Linux, macOS, atau Cloud Shell

    gcloud beta container binauthz policy evaluate POLICY_ID \
        --image=my-non-conforming-pod.json

    Windows (PowerShell)

    gcloud beta container binauthz policy evaluate POLICY_ID `
        --image=my-non-conforming-pod.json

    Windows (cmd.exe)

    gcloud beta container binauthz policy evaluate POLICY_ID ^
        --image=my-non-conforming-pod.json

Langkah berikutnya