Membuat dan mengelola batasan kustom

Google Cloud Kebijakan Organisasi memberi Anda kontrol terpusat dan terprogram atas resource organisasi. Sebagai administrator kebijakan organisasi, Anda dapat menentukan kebijakan organisasi, yang merupakan serangkaian batasan yang disebut batasan yang berlaku untukGoogle Cloud resource dan turunan dari resource tersebut dalam hierarki resourceGoogle Cloud . Anda dapat menerapkan kebijakan organisasi di level organisasi, folder, atau project.

Kebijakan Organisasi menyediakan batasan yang telah ditetapkan untuk berbagaiGoogle Cloud layanan. Namun, jika menginginkan kontrol yang lebih besar dari kebijakan organisasi, Anda dapat membuat kebijakan organisasi kustom.

Dokumen ini menjelaskan cara melihat, membuat, dan mengelola kebijakan organisasi kustom sebagai administrator. Dengan kebijakan organisasi kustom, Anda dapat menyesuaikan kontrol atas kolom tertentu yang dibatasi oleh kebijakan organisasi Anda.

Sebelum memulai

Peran yang diperlukan

Guna mendapatkan izin yang Anda perlukan untuk mengelola kebijakan organisasi, minta administrator Anda untuk memberi Anda peran IAM berikut di organisasi:

Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.

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

Anda dapat mendelegasikan administrasi kebijakan organisasi dengan menambahkan Kondisi IAM ke binding peran administrator kebijakan Organisasi. Untuk mengontrol resource tempat prinsipal dapat mengelola kebijakan organisasi, Anda dapat membuat binding peran bersyarat pada tag tertentu. Untuk mengetahui informasi selengkapnya, lihat Menggunakan batasan.

Batasan kustom

Batasan kustom ditentukan dalam file YAML, yang menentukan resource, metode, kondisi, dan tindakan yang tunduk pada batasan. Perilaku batasan kustom dan parameter yang didukung khusus untuk setiap layanan. Kondisi untuk batasan kustom ditentukan menggunakan Common Expression Language (CEL).

Menyiapkan batasan kustom

Anda dapat membuat batasan khusus dan menyiapkannya untuk digunakan dalam kebijakan organisasi menggunakan Google Cloud konsol atau Google Cloud CLI.

Konsol

Untuk membuat batasan kustom, lakukan hal berikut:

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

    Buka Organization policies

  2. Dari pemilih project, pilih project yang ingin Anda tetapkan kebijakan organisasinya.
  3. Klik Custom constraint.
  4. Di kotak Nama tampilan, masukkan nama yang mudah dipahami manusia untuk batasan. Nama ini digunakan dalam pesan error dan dapat digunakan untuk identifikasi dan proses debug. Jangan menggunakan PII atau data sensitif dalam nama tampilan karena nama ini dapat terekspos dalam pesan error. Kolom ini dapat berisi hingga 200 karakter.
  5. Di kotak Constraint ID, masukkan nama yang diinginkan untuk batasan kustom baru. Batasan kustom hanya boleh berisi huruf (termasuk huruf besar dan huruf kecil) atau angka, misalnya custom.disableGkeAutoUpgrade. Kolom ini dapat berisi hingga 70 karakter, tidak termasuk awalan (custom.), misalnya, organizations/123456789/customConstraints/custom. Jangan sertakan PII atau data sensitif dalam ID batasan Anda, karena dapat terekspos dalam pesan error.
  6. Di kotak Description, masukkan deskripsi batasan yang mudah dipahami. Deskripsi ini digunakan sebagai pesan error saat kebijakan dilanggar. Sertakan detail tentang mengapa pelanggaran kebijakan terjadi dan cara menyelesaikan pelanggaran kebijakan tersebut. Jangan sertakan PII atau data sensitif dalam deskripsi Anda, karena dapat terekspos dalam pesan error. Kolom ini dapat berisi hingga 2.000 karakter.
  7. Di kotak Resource type, pilih nama resource REST Google Cloud yang berisi objek dan kolom yang ingin Anda batasi—misalnya, container.googleapis.com/NodePool. Sebagian besar jenis resource mendukung hingga 20 batasan kustom. Jika Anda mencoba membuat lebih banyak batasan kustom, operasi akan gagal.
  8. Di bagian Enforcement method, pilih apakah akan menerapkan batasan pada metode CREATE REST atau pada metode CREATE dan UPDATE. Jika Anda menerapkan batasan dengan metode UPDATE pada resource yang melanggar batasan, perubahan pada resource tersebut akan diblokir oleh kebijakan organisasi kecuali jika perubahan tersebut menyelesaikan pelanggaran.
  9. Tidak semua layanan Google Cloud mendukung kedua metode tersebut. Untuk melihat metode yang didukung untuk setiap layanan, temukan layanan di Layanan yang didukung.

  10. Untuk menentukan kondisi, klik Edit kondisi.
    1. Di panel Add condition, buat kondisi CEL yang mengacu pada resource layanan yang didukung, misalnya, resource.management.autoUpgrade == false. Kolom ini dapat berisi hingga 1.000 karakter. Untuk mengetahui detail tentang penggunaan CEL, lihat Common Expression Language. Untuk mengetahui informasi selengkapnya tentang resource layanan yang dapat Anda gunakan dalam batasan kustom, lihat Layanan yang didukung batasan kustom.
    2. Klik Simpan.
  11. Di bagian Action, pilih apakah akan mengizinkan atau menolak metode yang dievaluasi jika kondisi terpenuhi.
  12. Tindakan penolakan berarti operasi untuk membuat atau mengupdate resource diblokir jika kondisi dievaluasi menjadi benar.

    Tindakan izinkan berarti operasi untuk membuat atau memperbarui resource hanya diizinkan jika kondisi bernilai benar. Setiap kasus lainnya, kecuali yang tercantum secara eksplisit dalam kondisi, akan diblokir.

  13. Klik Create constraint.
  14. Setelah Anda memasukkan nilai ke setiap kolom, konfigurasi YAML yang setara untuk batasan khusus ini akan muncul di sebelah kanan.

gcloud

  1. Untuk membuat batasan kustom, buat file YAML menggunakan format berikut:
  2.       name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
          resourceTypes:
          - RESOURCE_NAME
          methodTypes:
          - CREATE
          condition: "CONDITION"
          actionType: ACTION
          displayName: DISPLAY_NAME
          description: DESCRIPTION
          

    Ganti kode berikut:

    • ORGANIZATION_ID: ID organisasi Anda, seperti 123456789.
    • CONSTRAINT_NAME: nama yang Anda inginkan untuk batasan kustom baru. Batasan kustom hanya boleh berisi huruf (termasuk huruf besar dan huruf kecil) atau angka, misalnya, custom.disableGkeAutoUpgrade. Kolom ini dapat berisi hingga 70 karakter.
    • RESOURCE_NAME: nama lengkap resource Google Cloud yang berisi objek dan kolom yang ingin Anda batasi. Misalnya, container.googleapis.com/NodePool.
    • CONDITION: Kondisi CEL yang ditulis berdasarkan representasi resource layanan yang didukung. Kolom ini dapat berisi hingga 1000 karakter. Misalnya, "resource.management.autoUpgrade == false".
    • ACTION: tindakan yang akan diambil jika condition terpenuhi. Nilai yang mungkin adalah ALLOW dan DENY.
    • Tindakan izinkan berarti jika kondisi bernilai benar, operasi untuk membuat atau memperbarui resource diizinkan. Artinya juga bahwa setiap kasus lain kecuali yang tercantum secara eksplisit dalam kondisi diblokir.

      Tindakan penolakan berarti bahwa jika kondisi bernilai benar, operasi untuk membuat atau memperbarui resource akan diblokir.

    • DISPLAY_NAME: nama yang mudah dibaca manusia untuk batasan. Kolom ini dapat berisi hingga 200 karakter.
    • DESCRIPTION: deskripsi batasan yang mudah dipahami untuk ditampilkan sebagai pesan error saat kebijakan dilanggar. Kolom ini dapat berisi hingga 2.000 karakter.
  3. Setelah membuat file YAML untuk batasan kustom baru, Anda harus menyiapkannya agar tersedia untuk kebijakan organisasi di organisasi Anda. Untuk menyiapkan batasan kustom, gunakan perintah gcloud org-policies set-custom-constraint:
  4.         gcloud org-policies set-custom-constraint CONSTRAINT_PATH
          

    Ganti CONSTRAINT_PATH dengan jalur lengkap ke file batasan kustom Anda. Contoh, /home/user/customconstraint.yaml.

    Setelah operasi ini selesai, batasan kustom Anda tersedia sebagai kebijakan organisasi dalam daftar kebijakan organisasi Google Cloud .

  5. Untuk memverifikasi bahwa ada batasan kustom, gunakan perintah gcloud org-policies list-custom-constraints:
  6.       gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID
          

    Ganti ORGANIZATION_ID dengan ID fasilitas organisasi Anda.

    Untuk mengetahui informasi selengkapnya, lihat Melihat kebijakan organisasi.

Memperbarui batasan kustom

Anda dapat memperbarui batasan khusus dengan mengedit batasan di konsolGoogle Cloud , atau dengan membuat file YAML baru dan menggunakan perintah gcloud CLI set-custom-constraint lagi. Tidak ada pembuatan versi batasan kustom, sehingga batasan kustom yang ada akan diganti. Jika batasan kustom sudah diterapkan, batasan kustom yang diperbarui akan langsung diterapkan.

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 resource yang ingin Anda perbarui kebijakan organisasinya.

  4. Pilih batasan yang ingin Anda edit dari daftar di halaman Kebijakan organisasi untuk membuka halaman Detail kebijakan untuk batasan tersebut.

  5. Klik Edit constraint.

  6. Buat perubahan pada nama tampilan, deskripsi, metode penerapan, kondisi, dan tindakan. Anda tidak dapat mengubah ID batasan atau jenis resource setelah batasan dibuat.

  7. Klik Simpan perubahan.

gcloud

  1. Dapatkan batasan kustom saat ini menggunakan perintah gcloud org-policies describe-custom-constraint.

    gcloud org-policies describe-custom-constraint CONSTRAINT_NAME \
      --organization=ORGANIZATION_ID \
      --format=FORMAT > PATH
    

    Ganti kode berikut:

    • ORGANIZATION_ID: ID organisasi Anda, seperti 123456789.

    • CONSTRAINT_NAME: nama batasan kustom Anda, misalnya custom.disableGkeAutoUpgrade.

    • FORMAT: format untuk kebijakan izinkan. Gunakan json atau yaml.

    • PATH: jalur ke file output baru untuk batasan kustom.

  2. Ubah salinan lokal batasan kustom untuk mencerminkan perubahan yang ingin Anda lakukan pada nama tampilan, deskripsi, metode penerapan, kondisi, dan tindakan. Anda tidak dapat mengubah ID batasan atau jenis resource setelah batasan dibuat.

  3. Setelah memperbarui file YAML untuk batasan kustom, siapkan batasan tersebut agar tersedia untuk kebijakan organisasi di organisasi Anda. Untuk menyiapkan batasan kustom, gunakan perintah gcloud org-policies set-custom-constraint:

    gcloud org-policies set-custom-constraint CONSTRAINT_PATH
    

    Ganti CONSTRAINT_PATH dengan jalur lengkap ke file batasan kustom Anda.

Setelah update selesai, batasan kustom yang diupdate akan tersedia untuk kebijakan organisasi Anda. Jika batasan asli sudah diterapkan, batasan yang diperbarui akan segera berlaku.

Menghapus batasan kustom

Anda dapat menghapus batasan kustom menggunakan konsol Google Cloud atau 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 resource yang ingin Anda hapus kebijakan organisasinya.

  4. Pilih batasan yang ingin Anda hapus dari daftar di halaman Kebijakan organisasi untuk membuka halaman Detail kebijakan untuk batasan tersebut.

  5. Klik Delete.

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

gcloud

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

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

Ganti kode berikut:

  • ORGANIZATION_ID: ID organisasi Anda, seperti 123456789.

  • CONSTRAINT_NAME: nama batasan kustom Anda. Contoh, custom.disableGkeAutoUpgrade.

Outputnya mirip dengan hal berikut ini:

Deleted custom constraint [organizations/123456789/customConstraints/custom.disableGkeAutoUpgrade]

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

Menguji dan menganalisis perubahan kebijakan organisasi

Sebaiknya Anda menguji dan melakukan uji coba semua perubahan pada kebijakan organisasi untuk memahami pengaruh perubahan terhadap lingkungan Anda.

Simulator Kebijakan untuk Kebijakan Organisasi membantu Anda memahami efek batasan dan kebijakan organisasi pada lingkungan saat ini. Dengan menggunakan alat ini, Anda dapat meninjau semua konfigurasi resource untuk melihat tempat terjadinya pelanggaran, sebelum kebijakan diterapkan di lingkungan produksi Anda. Untuk mengetahui petunjuk mendetail, lihat Menguji perubahan kebijakan organisasi dengan Policy Simulator.

Setelah memahami efek saat ini, Anda dapat membuat kebijakan organisasi dalam mode uji coba untuk memahami dampak dan potensi pelanggaran kebijakan selama 30 hari ke depan. Kebijakan organisasi dalam mode uji coba adalah jenis kebijakan organisasi yang pelanggarannya dicatat dalam audit, tetapi tindakan yang melanggar tidak ditolak. Anda dapat membuat kebijakan organisasi dalam mode uji coba dari batasan kustom menggunakan konsol Google Cloud atau Google Cloud CLI. Untuk mengetahui petunjuk mendetail, lihat Membuat kebijakan organisasi dalam mode uji coba.

Menerapkan kebijakan organisasi kustom

Setelah batasan kustom disiapkan, batasan tersebut beroperasi sama seperti batasan boolean yang telah ditentukan sebelumnya. Google Cloud memeriksa batasan kustom terlebih dahulu saat mengevaluasi apakah permintaan pengguna diizinkan. Jika ada kebijakan organisasi kustom yang menolak permintaan, permintaan akan ditolak. Kemudian, Google Cloud memeriksa kebijakan organisasi yang telah ditentukan sebelumnya yang diterapkan pada resource tersebut.

Anda dapat menerapkan batasan dengan membuat kebijakan organisasi yang mereferensikannya, lalu menerapkan kebijakan organisasi tersebut ke resource Google Cloud .

Konsol

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

    Buka Organization policies

  2. Dari pemilih project, pilih project yang ingin Anda tetapkan kebijakan organisasinya.
  3. Dari daftar di halaman Organization policies, pilih batasan Anda untuk melihat halaman Policy details untuk batasan tersebut.
  4. Guna mengonfigurasi kebijakan organisasi untuk resource ini, klik Manage policy.
  5. Di halaman Edit policy, pilih Override parent's policy.
  6. Klik Add a rule.
  7. Di bagian Penerapan, pilih apakah kebijakan organisasi ini diterapkan atau tidak.
  8. Opsional: Agar kebijakan organisasi menjadi bersyarat pada tag, klik Add condition. Perhatikan bahwa jika menambahkan aturan kondisional ke kebijakan organisasi, Anda harus menambahkan setidaknya satu aturan tanpa syarat atau kebijakan tidak dapat disimpan. Untuk mengetahui informasi selengkapnya, lihat Menetapkan kebijakan organisasi dengan tag.
  9. Klik Test changes untuk menyimulasikan efek kebijakan organisasi. Untuk mengetahui informasi selengkapnya, lihat Menguji perubahan kebijakan organisasi dengan Policy Simulator.
  10. Untuk menerapkan kebijakan organisasi dalam mode uji coba, klik Set dry run policy. Untuk informasi selengkapnya, lihat Membuat kebijakan organisasi dalam mode uji coba.
  11. Setelah Anda memverifikasi bahwa kebijakan organisasi dalam mode uji coba berfungsi sebagaimana mestinya, tetapkan kebijakan aktif dengan mengklik Tetapkan kebijakan.

gcloud

  1. Untuk membuat kebijakan organisasi dengan aturan boolean, buat file YAML kebijakan yang mereferensikan batasan:
  2.         name: projects/PROJECT_ID/policies/CONSTRAINT_NAME
            spec:
              rules:
              - enforce: true
            
            dryRunSpec:
              rules:
              - enforce: true
            
          

    Ganti kode berikut:

    • PROJECT_ID: project tempat Anda ingin menerapkan batasan.
    • CONSTRAINT_NAME: nama yang Anda tentukan untuk batasan kustom. Contoh, custom.disableGkeAutoUpgrade.
  3. Untuk menerapkan kebijakan organisasi dalam mode uji coba, jalankan perintah berikut dengan tanda dryRunSpec:
  4.         gcloud org-policies set-policy POLICY_PATH \
              --update-mask=dryRunSpec
          

    Ganti POLICY_PATH dengan jalur lengkap ke file YAML kebijakan organisasi Anda. Kebijakan ini memerlukan waktu hingga 15 menit untuk diterapkan.

  5. Setelah Anda memverifikasi bahwa kebijakan organisasi dalam mode uji coba berfungsi sebagaimana mestinya, tetapkan kebijakan aktif dengan perintah org-policies set-policy dan tanda spec:
  6.         gcloud org-policies set-policy POLICY_PATH \
              --update-mask=spec
          

    Ganti POLICY_PATH dengan jalur lengkap ke file YAML kebijakan organisasi Anda. Kebijakan ini memerlukan waktu hingga 15 menit untuk diterapkan.

Contoh batasan

Anda dapat menentukan batasan kustom yang serupa dengan batasan standar yang disediakan oleh Google. File YAML batasan kustom standar terlihat mirip dengan berikut ini:

name: organizations/1234567890123/customConstraints/custom.disableGkeAutoUpgrade
resourceTypes:
- container.googleapis.com/NodePool
methodTypes:
- CREATE
- UPDATE
condition: "resource.management.autoUpgrade == false"
actionType: ALLOW
displayName: Disable GKE auto upgrade
description: Only allow GKE NodePool resource to be created or updated if
AutoUpgrade is not enabled where this custom constraint is enforced.

Common Expression Language

Layanan Kebijakan Organisasi menggunakan Common Expression Language (CEL) untuk mengevaluasi kondisi pada batasan kustom. CEL adalah bahasa non-Turing lengkap open source yang menerapkan semantik umum untuk evaluasi ekspresi.

Setiap layanan yang mendukung batasan kustom menyediakan serangkaian resource dan kolom resource ini tertentu. Kolom yang tersedia diketik dengan kuat, dan dapat dirujuk langsung oleh batasan kustom.

Anda dapat membuat kondisi CEL yang mengacu pada kolom resource layanan berdasarkan jenis kolom. Organization Policy Service mendukung subset jenis data, ekspresi, dan makro CEL. Bagian berikut mencantumkan jenis data yang tersedia dan ekspresi serta makro umum yang kompatibel dengannya.

Untuk mengetahui detail tentang ekspresi dan makro yang tersedia untuk setiap layanan, lihat Layanan yang mendukung batasan kustom.

Contoh JSON berikut menunjukkan setiap jenis kolom potensial yang dapat Anda referensikan menggunakan batasan kustom:

{
  "integerValue": 1,
  "stringValue": "A text string",
  "booleanValue": true,
  "nestedValue": {
    "nestedStringValue": "Another text string"
  },
  "listValue": ["foo", "bar"],
  "mapValue": {
    "costCenter": "123"
  }
}

Untuk setiap ekspresi CEL, batasan kustom diterapkan saat kondisi dievaluasi menjadi true. Anda dapat menggabungkan ekspresi dengan and (&&) dan or (||) untuk membuat kueri yang kompleks. Saat membuat file YAML atau JSON untuk batasan kustom, sertakan kueri lengkap dalam tanda petik ganda (").

Bilangan bulat

Kolom bilangan bulat, seperti integerValue dalam contoh sebelumnya, memungkinkan operator perbandingan digunakan dalam kondisi. Contoh:

resource.integerValue == 1
resource.integerValue > 5
resource.integerValue < 10

String

Kolom string, seperti stringValue dalam contoh sebelumnya, dapat dievaluasi menggunakan literal string, ekspresi reguler, atau ekspresi CEL. Contoh:

resource.stringValue == "abc"
// stringValue is exactly "abc".

resource.stringValue.matches("dev$")
// stringValue matches a regular expression, which specifies the string ends
// with the word "dev".

resource.stringValue.startsWith("startValue")
// stringValue starts with "startValue".

resource.stringValue.endsWith("endValue")
// stringValue ends with "endValue".

resource.stringValue.contains("fooBar")
// stringValue contains "fooBar".

Kolom bertingkat, seperti nestedStringValue dalam contoh sebelumnya, harus direferensikan dengan jalur lengkap. Contoh:

resource.nestedValue.nestedStringValue == "foo"
// nestedValue contains the object nestedStringValue, which has a value of "foo".

Boolean

Kolom boolean, seperti booleanValue dalam contoh sebelumnya, berisi nilai boolean, yaitu true atau false.

Daftar

Kolom daftar, seperti listValue dalam contoh sebelumnya, dapat dievaluasi berdasarkan ukuran daftar, konten daftar, dan apakah elemen tertentu ada di mana saja dalam daftar.

Contoh:

resource.listValue.size() >= 1 && resource.listValue[0] == "bar"
// listValue has size greater than or equal to one, and the first element is "bar".

resource.listValue.exists(value, value == "foo")
// listValue has at least one element that is exactly "foo".

resource.listValue.all(value, value.contains("foo"))
// listValue is a list of values that are all exactly "foo".

Peta

Kolom peta, seperti mapValue dalam contoh sebelumnya, adalah key-value pair yang dapat dievaluasi berdasarkan keberadaan dan nilai elemen tertentu.

Contoh:

has(resource.mapValue.foo) && resource.mapValue.foo == "bar"
// mapValue contains the key "foo", and that key has the value "bar".

Memecahkan masalah batasan kustom

Bagian berikut menjelaskan masalah umum terkait pembuatan batasan kustom dan memperkenalkan solusi untuk masalah ini.

Error jenis metode

Batasan kustom dibuat dengan daftar metode yang akan diterapkan, biasanya CREATE atau CREATE dan UPDATE. Jika Anda menentukan jenis metode yang tidak didukung oleh resource, seperti metode UPDATE untuk resource image Compute Engine, Anda tidak dapat menyimpan batasan kustom.

Tag tidak dievaluasi

Tag pada resource organisasi, folder, atau project didukung oleh batasan kustom. Untuk mengetahui informasi selengkapnya tentang layanan yang mendukung tag, lihat dokumentasi khusus layanan.

Pembatasan lintas layanan

Beberapa layanan, seperti Compute Engine, melibatkan sejumlah besar resource terkait. Pesan error untuk pelanggaran kebijakan organisasi kustom ditampilkan saat pelanggaran terjadi, meskipun batasan kustomnya ditujukan untuk layanan yang berbeda.

Misalnya, tindakan Dataproc mungkin diblokir oleh batasan kustom pada resource Compute Engine.

Memecahkan masalah error CEL

Organization Policy Service mengompilasi dan memvalidasi kondisi yang Anda buat, serta menampilkan error jika kondisi tidak benar secara sintaksis. Jika Anda tidak dapat membuat atau menyimpan batasan kustom, kemungkinan terjadi error sintaksis CEL yang tidak valid, yang harus Anda atasi terlebih dahulu.

Di konsol Google Cloud , error sintaks CEL yang tidak valid akan ditandai dengan ikon Error. Menyoroti ikon ini akan menampilkan tooltip yang berisi informasi selengkapnya tentang kesalahan sintaksis.

Kondisi tertentu dapat dikompilasi, tetapi menyebabkan error terjadi saat Google Cloud mencoba menerapkan batasan. Misalnya, jika Anda menyiapkan batasan dengan kondisi yang mencoba mengakses indeks daftar atau kunci peta yang tidak ada, batasan akan gagal dan menampilkan error pada saat penegakan, serta memblokir upaya untuk membuat resource.

Bagian berikut menjelaskan error CEL umum dan kemungkinan solusi untuk error ini.

Ekspresi tidak valid atau ketidakcocokan jenis

Kondisi yang dibuat dengan ekspresi tidak valid atau ketidakcocokan jenis akan menampilkan error saat Anda mencoba menyiapkan batasan kustom. Misalnya, dengan batasan kustom tidak valid berikut, yang membandingkan string dengan bilangan bulat:

name: organizations/1234567890123/customConstraints/custom.badConfig
resourceTypes:
- dataproc.googleapis.com/Cluster
methodTypes:
- CREATE
- UPDATE
condition: "resource.config.masterConfig.numInstances == 'mismatch'"
actionType: ALLOW
displayName: Number of instances is a string
description: Demonstrate that type mismatches cause an error.

Error akan muncul jika Anda mencoba menyiapkan batasan tersebut menggunakan Google Cloud CLI:

ERROR: (gcloud.org-policies.set-custom-constraint) INVALID_ARGUMENT: Custom constraint condition [resource.config.masterConfig.numInstances == "mismatch"] is invalid. Error: ERROR: <input>:1:15: found no matching overload for '_==_' applied to '(int, string)' (candidates: (%A0, %A0))
 | resource.config.masterConfig.numInstances == "mismatch"
 | ..........................................^.

Di konsol Google Cloud , error sintaksis CEL yang tidak valid akan ditandai dengan ikon Error. Menyoroti ikon ini akan menampilkan tooltip yang berisi informasi selengkapnya tentang kesalahan sintaksis.

Layanan Kebijakan Organisasi mengompilasi dan memvalidasi kondisi yang Anda buat, serta menampilkan error jika kondisi tidak benar secara sintaksis. Namun, kondisi tertentu dapat dikompilasi, tetapi menampilkan error saat Google Cloud mencoba menerapkan batasan. Misalnya, jika Anda menyiapkan batasan dengan kondisi yang mencoba mengakses indeks daftar atau kunci peta yang tidak ada, batasan akan gagal dan menampilkan error pada saat penegakan, serta memblokir upaya apa pun untuk membuat resource.

Saat membuat kondisi yang bergantung pada elemen daftar atau peta, sebaiknya mulai kondisi dengan pemeriksaan yang memastikan kondisi valid dalam semua kasus. Misalnya, periksa list.size() sebelum mereferensikan elemen daftar tertentu atau gunakan has() sebelum mereferensikan elemen peta.

Layanan yang didukung

Setiap layanan menentukan kumpulan kolom batasan kustom yang dapat digunakan untuk menerapkan kebijakan organisasi pada resource layanannya. Untuk mengetahui daftar layanan yang mendukung batasan kustom, lihat Layanan yang didukung batasan kustom.

Untuk mengetahui informasi selengkapnya tentang cara menyiapkan pemindai kebijakan organisasi, lihat Temuan kerentanan Kebijakan Organisasi.

Menerapkan tag wajib pada resource

Anda dapat menerapkan tag wajib pada resource menggunakan kebijakan organisasi kustom. Saat menerapkan tag wajib, Anda hanya dapat membuat resource yang mematuhi kebijakan pemberian tag organisasi Anda; yaitu, resource terikat dengan nilai tag untuk kunci tag wajib yang ditentukan dalam kebijakan. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan batasan kustom untuk menerapkan tag.

Langkah berikutnya