Mewajibkan kebijakan platform berbasis pemeriksaan validasi berkelanjutan untuk semua cluster GKE

Laman ini menunjukkan kepada Anda cara menggunakan Layanan Kebijakan Organisasi untuk mewajibkan Cluster GKE menggunakan satu atau beberapa platform berbasis pemeriksaan continuous validation (CV) kebijakan izin yang relevan. Anda menetapkan kebijakan platform berbasis pemeriksaan yang diperlukan batasan kustom. Kemudian Anda menerapkan batasan khusus dalam kebijakan organisasi.

Biaya

Panduan ini menggunakan layanan Google Cloud berikut:

  • Otorisasi Biner, tetapi CV tersedia tanpa biaya selama tahap Pratinjau
  • Batasan dan kebijakan organisasi ditawarkan tanpa biaya.

Sebelum memulai

  1. Aktifkan Otorisasi Biner.
  2. Menyiapkan CV dengan kebijakan platform berbasis pemeriksaan dan setidaknya satu kebijakan platform berbasis pemeriksaan CV.

Peran yang diperlukan

Untuk mendapatkan izin yang Anda butuhkan untuk membuat batasan dan memberlakukan kebijakan organisasi, minta administrator untuk memberi Anda Peran IAM Organization Policy Administrator (roles/orgpolicy.policyAdmin) di organisasi Google Cloud Anda. 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.

Membuat batasan khusus CV

Konsol

  1. Di konsol Google Cloud, buka halaman Organization policies.

    Buka Organization policies

  2. Di halaman Kebijakan organisasi, klik Batasan kustom.

  3. Jika Anda diminta untuk melakukannya, klik Beralih ke organisasi induk. Kepada mempelajari organisasi lebih lanjut, lihat Pengantar Layanan Kebijakan Organisasi

  4. Di bagian Constraint details, masukkan informasi berikut di kolom:

    1. Nama tampilan: Nama tampilan untuk batasan Anda, seperti Require a Binary Authorization continuous validation policy for all GKE clusters. Anda menggunakan nama tampilan untuk mencari batasan setelah disimpan. Kolom nama tampilan memiliki panjang maksimum 200 karakter

    2. Constraint ID: ID batasan untuk batasan Anda—misalnya, RequireBinAuthzCVPolicy.

    3. Deskripsi (Opsional): deskripsi yang mudah dipahami tentang ditampilkan sebagai pesan error ketika kebijakan dilanggar. Kolom deskripsi memiliki panjang maksimal 2.000 karakter.

  5. Di bagian Penerapan, lakukan hal berikut:

    1. Di bagian Resource types, masukkan container.googleaips.com/Cluster.

    2. Di Enforcement method, pilih Enforce on create and update.

    3. Masukkan ekspresi ke dalam kolom Condition. Kolom ini memiliki panjang maksimal 1000 karakter. Batasan khususnya adalah diterapkan saat kondisi bernilai true. Kondisinya adalah sebagai ekspresi di sintaksis Common Expression Language (CEL). Anda dapat menggabungkan ekspresi dengan dan (&&) dan (||) untuk membuat kondisi yang kompleks. CEL adalah bahasa ekspresi seperti C. Untuk mempelajari lebih lanjut tentang {i>syntax<i} dan semantik CEL, lihat https://github.com/google/cel-spec. Untuk memasukkan kondisi, lakukan hal berikut:

      1. Klik Edit kondisi.

      2. Masukkan ekspresi untuk memeriksa keberadaan Kebijakan platform CV. Kondisi berikut mengharuskan platform CV terdapat pengikatan kebijakan dan bahwa kebijakan platform memiliki tautan nama:

        resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID/platforms/gke/policies/POLICY_ID")
        

        Ganti kode berikut:

        • PROJECT_ID: project ID kebijakan platform ini. Project harus berada di organisasi yang sama.
        • POLICY_ID: ID kebijakan kebijakan platform ini.

        Kondisi berikut mengharuskan adanya dua platform CV ada pengikatan kebijakan dan masing-masing memiliki nama kebijakan platform tertentu.

        resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID1/platforms/gke/policies/POLICY_ID1") && resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID2/platforms/gke/policies/POLICY_ID2")
        
        • PROJECT_ID1: project ID kebijakan platform pertama. Project harus berada di organisasi yang sama.
        • POLICY_ID1: ID kebijakan kebijakan platform pertama.
        • PROJECT_ID2: project ID kebijakan platform kedua.
        • POLICY_ID2: ID kebijakan kebijakan platform kedua.

        • Klik Simpan.

    4. Di bagian Action, pilih Allow.

  6. Untuk membuat batasan kustom, klik Create Constraint.

gcloud

  1. Buat file YAML untuk batasan khusus:

    name: organizations/ORGANIZATION_ID/customConstraints/custom.CONSTRAINT_ID
    resource_types: container.googleapis.com/Cluster
    method_types:
      - CREATE
      - UPDATE
    condition: >-
      CONDITION
    action_type: ACTION
    display_name: DISPLAY_NAME
    description: DESCRIPTION
    

    Ganti kode berikut:

    • ORGANIZATION_ID: ID organisasi Anda—untuk contoh, 123456789.
    • CONSTRAINT_ID: ID batasan—misalnya, RequireBinAuthzCVPolicy.
    • CONDITION: masukkan ekspresi yang akan diperiksa keberadaan kebijakan platform CV. Kolom ini memiliki panjang maksimal 1000 karakter. Batasan khususnya adalah diterapkan saat kondisi bernilai true. Kondisinya adalah sebagai ekspresi di sintaksis Common Expression Language (CEL). Anda dapat menggabungkan ekspresi dengan dan (&&) dan (||) untuk membuat kondisi yang kompleks. CEL adalah bahasa ekspresi seperti C. Untuk mempelajari lebih lanjut tentang {i>syntax<i} dan semantik CEL, lihat https://github.com/google/cel-spec. Kondisi berikut mengharuskan platform CV terdapat pengikatan kebijakan dan bahwa kebijakan platform memiliki tautan nama:

      resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID/platforms/gke/policies/POLICY_ID")
      

      Ganti kode berikut:

      • PROJECT_ID: project ID kebijakan platform ini. Project harus berada di organisasi yang sama.
      • POLICY_ID: ID kebijakan kebijakan platform ini.

      Kondisi berikut mengharuskan adanya dua platform CV ada pengikatan kebijakan dan masing-masing memiliki nama kebijakan platform tertentu.

      resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID1/platforms/gke/policies/POLICY_ID1") && resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID2/platforms/gke/policies/POLICY_ID2")
      
      • PROJECT_ID1: project ID kebijakan platform pertama. Project harus berada di organisasi yang sama.
      • POLICY_ID1: ID kebijakan kebijakan platform pertama.
      • PROJECT_ID2: project ID kebijakan platform kedua.
      • POLICY_ID2: ID kebijakan kebijakan platform kedua.

      • ACTION: tindakan yang akan diambil jika condition terpenuhi. Ini dapat berupa ALLOW atau DENY.

      • DISPLAY_NAME: nama yang mudah dipahami manusia —misalnya, Require a Binary Authorization continuous validation policy for all GKE clusters. Kolom nama tampilan memiliki panjang maksimum 200 karakter

      • DESCRIPTION: deskripsi yang mudah dibaca manusia batasan tersebut akan ditampilkan sebagai pesan error dilanggar. Kolom deskripsi memiliki panjang maksimal 2.000 karakter.

    • Terapkan batasan khusus:

      gcloud org-policies set-custom-constraint CUSTOM_CONSTRAINT_PATH
      

      Ganti CUSTOM_CONSTRAINT_PATH dengan jalur definisi batasan kustom Anda.

    • Pastikan batasan khusus ada:

      gcloud org-policies list-custom-constraints \
          --organization=ORGANIZATION_ID
      

      Outputnya mirip dengan hal berikut ini:

      CUSTOM_CONSTRAINT: custom.RequireBinAuthzCVPolicy
      ACTION_TYPE: ALLOW
      METHOD_TYPES: CREATE,UPDATE
      RESOURCE_TYPES: container.googleapis.com/Cluster
      DISPLAY_NAME: This cluster requires the continuous validation policy: projects/my-project/platforms/gke/policies/my-policy
      

Untuk mengaktifkan penerapan batasan khusus yang Anda buat, buat kebijakan organisasi.

Menggunakan kebijakan organisasi untuk menerapkan batasan khusus

Untuk menerapkan batasan khusus baru, buat kebijakan organisasi yang merujuk ke batasan tersebut, lalu terapkan kebijakan organisasi.

Konsol

Untuk menerapkan batasan, lakukan hal berikut:

  1. Di konsol Google Cloud, buka halaman Organization policies.

    Buka Organization policies

  2. Pilih pemilih project pilih organisasi.

  3. Telusuri dan pilih batasan dari daftar.

  4. Di halaman Policy details untuk batasan tersebut, klik Kelola kebijakan.

  5. Di halaman Edit policy, pilih Override parent's policy.

  6. Klik Add a rule.

  7. Di bagian Penerapan, pilih Aktif.

  8. Opsional: Klik Uji perubahan untuk menyimulasikan pengaruh kebijakan organisasi ini. Untuk informasi selengkapnya, lihat Uji perubahan kebijakan organisasi dengan Policy Simulator.

  9. Untuk menyelesaikan dan menerapkan kebijakan organisasi, klik Tetapkan kebijakan.

gcloud

  1. Membuat file definisi kebijakan YAML:

    name: organizations/ORGANIZATION_ID/policies/custom.CONSTRAINT_ID
    spec:
      rules:
      - enforce: true
    

    Ganti kode berikut:

    • ORGANIZATION_ID: ID organisasi
    • CONSTRAINT_ID: ID batasan
  2. Terapkan kebijakan:

    gcloud org-policies set-policy ORG_POLICY_PATH
    

    Ganti ORG_POLICY_PATH dengan jalur ke file definisi kebijakan ini.

  3. Pastikan kebijakan ada:

    gcloud org-policies list \
        --organization=ORGANIZATION_ID
    

    Ganti ORGANIZATION_ID dengan ID organisasi.

    Untuk daftar argumen, lihat gcloud org-policies list.

    Outputnya mirip dengan hal berikut ini:

    CONSTRAINT: custom.RequireBinAuthzCVPolicy
    LIST_POLICY: -
    BOOLEAN_POLICY: SET
    ETAG: CN622LIGEIDXnpMB-
    

Kebijakan ini dapat memerlukan waktu hingga 15 menit untuk diterapkan.

Untuk menerapkan banyak batasan pada platform berbasis pemeriksaan CV kebijakan, lakukan tindakan berikut:

  • Buat satu batasan khusus per CV kebijakan berbasis pemeriksaan.
  • Perbarui kebijakan organisasi dengan setiap batasan khusus seperti yang dijelaskan di bagian ini.

Menghapus batasan kustom

Anda dapat menghapus batasan kustom menggunakan Konsol Google Cloud atau di Google Cloud CLI.

Konsol

  1. Di konsol Google Cloud, buka halaman Organization policies.

    Buka Organization policies

  2. Pilih pemilih project di bagian atas halaman.

  3. Dari pemilih project, pilih organisasi Anda.

  4. Telusuri dan pilih batasan dari daftar.

  5. Di Constraint details, klik Hapus.

  6. Untuk mengonfirmasi bahwa Anda ingin menghapus batasan, klik Delete.

gcloud

Untuk menghapus batasan kustom, gunakan org-policies delete-custom-constraint Perintah gcloud CLI:

gcloud org-policies delete-custom-constraint custom.CONSTRAINT_ID \
  --organization=ORGANIZATION_ID

Ganti kode berikut:

  • ORGANIZATION_ID: ID organisasi Anda, seperti 123456789

  • CONSTRAINT_NAME: nama kustom Anda batasan

Outputnya mirip dengan hal berikut ini:

Deleted custom constraint [organizations/123456789/customConstraints/CONSTRAINT_NAME]

Setelah Anda menghapus batasan khusus, semua kebijakan yang telah dibuat menggunakan batasan tersebut tetap ada, tetapi diabaikan. Anda tidak dapat membuat yang lain batasan kustom dengan nama yang sama seperti batasan kustom yang dihapus.

Langkah selanjutnya