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 continuous validation (CV). Layanan evaluasi kebijakan mengevaluasi secara on demand 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 minimal sekali setiap 24 jam. Akibatnya, 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 adanya pelanggaran kebijakan. CV tidak menghasilkan entri log jika 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 GKE CV.

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

Fitur ini hanya mendukung kebijakan berbasis pemeriksaan GKE CV.

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

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

Sebelum memulai

  1. Menginstal Google Cloud CLI.
  2. Untuk initialize gcloud CLI, jalankan perintah berikut:

    gcloud init

Peran yang diperlukan

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

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 khusus pemeriksaan berikut yang diperlukan:

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 dalam 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 disetel ke gke, jalankan perintah berikut:

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

  • POLICY_ID: ID kebijakan platform. Jika kebijakan berada dalam 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 dalam 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 tanda --image, namespace dan akun layanan secara implisit dianggap kosong. Jika kebijakan yang Anda evaluasi menggunakan kumpulan centang yang mencakup kubernetesNamespace atau kubernetesServiceAccount, hasil yang ditampilkan mungkin tidak akurat.

Meninjau output perintah

Output perintah berisi verdict level teratas yang menunjukkan status kesesuaian Pod. Status kesesuaian berikut dapat ditampilkan:

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

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

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

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

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

Melihat hasil yang sesuai

Bagian ini menjelaskan output dari pemeriksaan layanan evaluasi kebijakan di mana Pod sesuai dengan 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 evaluasi berikut:

  • Pemeriksaan: Image sesuai untuk pemeriksaan individual—dalam hal ini, pemeriksaan direktori tepercaya.
  • {i>CheckSet<i}: Gambar sesuai untuk setiap pemeriksaan di {i>CheckSet<i}.
  • Kebijakan: Gambar sesuai dengan kebijakan.

Karena gambar sesuai dengan kebijakan, perintah akan menampilkan kode keluar dengan angka nol.

Melihat hasil yang tidak sesuai

Bagian ini menjelaskan output dari pemeriksaan layanan evaluasi kebijakan saat 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 gambar tidak sesuai dengan pemeriksaan individual, dalam hal ini pemeriksaan direktori tepercaya, dan karenanya kumpulan semua pemeriksaan, verdict tingkat teratas adalah NON_CONFORMANT, dan perintah menampilkan kode keluar 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 dalam 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 ini menghasilkan verdict yang menunjukkan bahwa spesifikasi Pod adalah CONFORMANT karena spesifikasi Pod merujuk pada gambar yang berada dalam direktori yang ditentukan dalam 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 dalam 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 ini menghasilkan verdict yang menunjukkan bahwa spesifikasi Pod adalah NON_CONFORMANT, karena spesifikasi Pod mereferensikan gambar yang berada di luar direktori yang ditentukan dalam trustedDirPatterns dalam pemeriksaan direktori tepercaya.

Untuk mengevaluasi gambar 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 dalam 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 selanjutnya