Halaman ini menunjukkan cara membatasi operasi tertentu pada resource Google Kubernetes Engine (GKE) di organisasi Anda menggunakan batasan khusus di Layanan Kebijakan Organisasi Google Cloud. Untuk mempelajari lebih lanjut Kebijakan Organisasi, lihat Kebijakan organisasi kustom.
Tentang batasan dan kebijakan organisasi
Kebijakan Organisasi Google Cloud 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 untuk resource Google Cloud dan turunan dari resource tersebut dalam hierarki resource Google Cloud. Anda dapat menerapkan kebijakan organisasi di level organisasi, folder, atau project.
Kebijakan Organisasi memberikan batasan yang telah ditetapkan untuk berbagai layanan Google Cloud. Namun, jika ingin kontrol yang lebih terperinci dan dapat disesuaikan atas kolom tertentu yang dibatasi dalam kebijakan organisasi, Anda juga dapat membuat batasan khusus dan menggunakan batasan khusus tersebut dalam kebijakan organisasi kustom.
Resource yang didukung di GKE
Untuk GKE, Anda dapat membuat batasan khusus untuk metode CREATE
atau UPDATE
pada kolom mana pun di resource Cluster
atau NodePool
Google Kubernetes Engine API v1, kecuali untuk kolom khusus output dan kolom berikut:
projects.locations.clusters.masterAuth.clientKey
projects.locations.clusters.masterAuth.password
Pewarisan kebijakan
Secara default, kebijakan diwariskan oleh turunan resource tempat Anda menerapkan kebijakan. Misalnya, jika Anda menerapkan kebijakan pada folder, Google Cloud akan menerapkan kebijakan ini pada semua project dalam folder tersebut. Untuk mempelajari lebih lanjut perilaku ini dan cara mengubahnya, lihat Aturan evaluasi hierarki.
Harga
Batasan dan kebijakan organisasi ditawarkan tanpa biaya.
Sebelum memulai
Sebelum memulai, pastikan Anda telah menjalankan tugas berikut:
- Aktifkan Google Kubernetes Engine API. Aktifkan Google Kubernetes Engine API
- Jika ingin menggunakan Google Cloud CLI untuk tugas ini,
instal lalu
lakukan inisialisasi
gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan
gcloud components update
.
-
Untuk mendapatkan izin yang Anda perlukan untuk membuat batasan dan menerapkan kebijakan organisasi, minta administrator untuk memberi Anda peran IAM Administrator Kebijakan Organisasi (
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.
- Pastikan Anda mengetahui ID organisasi Anda.
Membuat batasan khusus
Untuk membuat batasan khusus baru, tentukan batasan dalam file YAML dan terapkan batasan khusus di organisasi Anda menggunakan Google Cloud CLI.
Buat file YAML untuk batasan khusus:
name: organizations/ORGANIZATION_ID/customConstraints/custom.CONSTRAINT_NAME resourceTypes: - container.googleapis.com/RESOURCE_NAME methodTypes: - METHOD1 - METHOD2 condition: "resource.OBJECT_NAME.FIELD_NAME == VALUE" actionType: ACTION displayName: DISPLAY_NAME description: DESCRIPTION
Ganti kode berikut:
ORGANIZATION_ID
: ID organisasi Anda, seperti123456789
.CONSTRAINT_NAME
: nama yang Anda inginkan untuk batasan kustom baru. Batasan kustom harus diawali dengancustom.
, dan hanya dapat menyertakan huruf besar, huruf kecil, atau angka, misalnya,custom.enableGkeAutopilot
. Panjang maksimum kolom ini adalah 70 karakter, tidak menghitung awalan, misalnya,organizations/123456789/customConstraints/custom.
.RESOURCE_NAME
: nama (bukan URI) resource REST GKE API yang berisi objek dan kolom yang ingin Anda batasi. MisalnyaCluster
atauNodePool
.METHOD1,METHOD2,...
: daftar metode RESTful yang akan menerapkan batasan. Dapat berupaCREATE
atauCREATE
danUPDATE
.condition
: kondisi untuk memvalidasi permintaan, yang ditulis dalam Common Expression Language (CEL). Kolom ini memiliki panjang maksimal 1000 karakter. Ekspresi harus berisi kolom berikut, dan mendukung operator logika seperti&&
dan||
:OBJECT_NAME
: nama objek GKE API yang ingin Anda batasi, dalam format pascalCase. Misalnya,privateClusterConfig
.FIELD_NAME
: nama kolom GKE API yang ingin Anda batasi, dalam format pascalCase. Misalnya,enablePrivateNodes
.VALUE
: nilai kolom. Untuk kolom boolean, gunakantrue
ataufalse
. Untuk kolom string, gunakan"STRING"
.
ACTION
: tindakan yang akan diambil jikacondition
terpenuhi. Ini dapat berupaALLOW
atauDENY
.DISPLAY_NAME
: nama yang mudah dibaca manusia untuk batasan. Kolom ini memiliki panjang maksimal 200 karakter.DESCRIPTION
: deskripsi batasan yang mudah dipahami untuk ditampilkan sebagai pesan error saat kebijakan dilanggar. Kolom ini memiliki panjang maksimal 2000 karakter.
Terapkan batasan khusus:
gcloud org-policies set-custom-constraint PATH_TO_FILE
Ganti
PATH_TO_FILE
dengan jalur file definisi batasan khusus Anda.Pastikan batasan khusus ada:
gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID
Outputnya mirip dengan yang berikut ini:
CONSTRAINT LIST_POLICY BOOLEAN_POLICY ETAG custom.enableGkeAutopilot - SET COCsm5QGENiXi2E= ...
Menerapkan batasan khusus
Untuk menerapkan batasan khusus baru, buat kebijakan organisasi yang merujuk ke batasan tersebut, lalu terapkan kebijakan organisasi.
Buat file YAML untuk kebijakan organisasi:
name: RESOURCE_HIERARCHY/policies/POLICY_NAME spec: rules: - enforce: true
Ganti kode berikut:
RESOURCE_HIERARCHY
: lokasi kebijakan baru, yang memengaruhi cakupan penegakan. Gunakan hierarki resource Google Cloud sebagai panduan. Misalnya, jika Anda ingin menerapkan kebijakan pada project tertentu, gunakanprojects/PROJECT_ID
. Untuk menerapkan kebijakan di organisasi tertentu, gunakanorganizations/ORGANIZATION_ID
.POLICY_NAME
: nama kebijakan baru.
Terapkan kebijakan:
gcloud org-policies set-policy PATH_TO_POLICY
Ganti
PATH_TO_POLICY
dengan jalur ke file definisi kebijakan Anda.Pastikan kebijakan ada:
gcloud org-policies list \ --RESOURCE_FLAG=RESOURCE_ID
Ganti kode berikut:
RESOURCE_FLAG
: resource Google Cloud tempat Anda menerapkan kebijakan. Misalnyaproject
ataufolder
.RESOURCE_ID
: ID resource tempat Anda menerapkan kebijakan. Misalnya, ID folder Google Cloud Anda.
Untuk daftar argumen, lihat
gcloud org-policies list
.Outputnya mirip dengan yang berikut ini:
CONSTRAINT LIST_POLICY BOOLEAN_POLICY ETAG iam.disableWorkloadIdentityClusterCreation - SET CO3UkJAGEOj1qsQB custom.enableGkeAutopilot - SET COCsm5QGENiXi2E= custom.enableBinAuth - SET CJfKiZUGEJju7LUD
Contoh: Membuat batasan khusus dan menerapkan kebijakan
Contoh berikut membuat batasan khusus dan kebijakan yang mengharuskan semua cluster baru dalam project tertentu untuk menjadi cluster Autopilot.
Sebelum memulai, Anda harus mengetahui hal-hal berikut:
- ID organisasi Anda
- Project ID
Membuat batasan
Simpan file berikut sebagai
constraint-enable-autopilot.yaml
:name: organizations/ORGANIZATION_ID/customConstraints/custom.enableGkeAutopilot resourceTypes: - container.googleapis.com/Cluster methodTypes: - CREATE condition: "resource.autopilot.enabled == false" actionType: DENY displayName: Enable GKE Autopilot description: All new clusters must be Autopilot clusters.
Hal ini menentukan batasan untuk setiap cluster baru, jika mode cluster bukan Autopilot, operasi akan ditolak.
Terapkan batasan:
gcloud org-policies set-custom-constraint ~/constraint-enable-autopilot.yaml
Pastikan batasan ada:
gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID
Outputnya mirip dengan yang berikut ini:
CUSTOM_CONSTRAINT ACTION_TYPE METHOD_TYPES RESOURCE_TYPES DISPLAY_NAME custom.enableGkeAutopilot DENY CREATE container.googleapis.com/Cluster Enable GKE Autopilot ...
Membuat kebijakan
Simpan file berikut sebagai
policy-enable-autopilot.yaml
:name: projects/PROJECT_ID/policies/custom.enableGkeAutopilot spec: rules: - enforce: true
Ganti
PROJECT_ID
dengan project ID Anda.Terapkan kebijakan:
gcloud org-policies set-policy ~/policy-enable-autopilot.yaml
Pastikan kebijakan ada:
gcloud org-policies list --project=PROJECT_ID
Outputnya mirip dengan yang berikut ini:
CONSTRAINT LIST_POLICY BOOLEAN_POLICY ETAG custom.enableGkeAutopilot - SET COCsm5QGENiXi2E=
Setelah Anda menerapkan kebijakan, tunggu sekitar dua menit hingga Google Cloud mulai menerapkan kebijakan tersebut.
Menguji kebijakan
Coba buat cluster GKE Standard dalam project:
gcloud container clusters create org-policy-test \
--project=PROJECT_ID \
--zone=COMPUTE_ZONE \
--num-nodes=1
Outputnya adalah sebagai berikut:
Operation denied by custom org policies: ["customConstraints/custom.enableGkeAutopilot": "All new clusters must be Autopilot clusters."]
Contoh batasan khusus untuk kasus penggunaan umum
Bagian berikut memberikan sintaksis beberapa batasan khusus yang mungkin berguna bagi Anda:
Deskripsi | Sintaksis batasan |
---|---|
Hanya izinkan pembuatan cluster jika Otorisasi Biner diaktifkan |
name: organizations/ORGANIZATION_ID/customConstraints/custom.gkeBinaryAuthorization resourceTypes: - container.googleapis.com/Cluster methodTypes: - CREATE condition: "condition:resource.binaryAuthorization.enabled == true || resource.binaryAuthorization.evaluationMode=='PROJECT_SINGLETON_POLICY_ENFORCE'" action: ALLOW displayName: Enable GKE Binary Authorization description: All new clusters must enable Binary Authorization. |
Jangan nonaktifkan upgrade otomatis node untuk node pool baru |
name: organizations/ORGANIZATION_ID/customConstraints/custom.enableAutoUpgrade resourceTypes: - container.googleapis.com/NodePool methodTypes: - CREATE condition: "resource.management.autoUpgrade == true" actionType: ALLOW displayName: Enable node auto-upgrade description: All node pools must have node auto-upgrade enabled. |
Mengaktifkan Workload Identity Federation for GKE untuk cluster baru |
name: organizations/ORGANIZATION_ID/customConstraints/custom.enableWorkloadIdentity resourceTypes: - container.googleapis.com/Cluster methodTypes: - CREATE condition: "has(resource.workloadIdentityConfig.workloadPool) || resource.workloadIdentityConfig.workloadPool.size() > 0" actionType: ALLOW displayName: Enable Workload Identity on new clusters description: All new clusters must use Workload Identity. |
Jangan nonaktifkan Cloud Logging pada cluster yang ada |
name: organizations/ORGANIZATION_ID/customConstraints/custom.enableLogging resourceTypes: - container.googleapis.com/Cluster methodTypes: - UPDATE condition: "resource.loggingService == 'none'" actionType: DENY displayName: Do not disable Cloud Logging description: You cannot disable Cloud Logging on existing GKE cluster. |
Hanya izinkan pembuatan atau pembaruan node pool Standard saat endpoint metadata lama dinonaktifkan |
name: organizations/ORGANIZATION_ID/customConstraints/custom.nodeConfigMetadata resourceTypes: - container.googleapis.com/NodePool methodTypes: - CREATE - UPDATE condition: "'disable-legacy-endpoints' in resource.config.metadata && resource.config.metadata['disable-legacy-endpoints'] == 'true'" actionType: ALLOW displayName: Disable legacy metadata endpoints description: You can only create or update node pools if you disable legacy metadata endpoints. Contoh batasan ini menunjukkan cara menetapkan batasan khusus pada nilai peta. Kolom |
Langkah berikutnya
- Pelajari batasan secara mendalam.
- Baca opsi tambahan yang dapat Anda gunakan untuk menyesuaikan kebijakan.
- Pelajari cara menetapkan kebijakan organisasi berdasarkan Tag.
- Pelajari cara mewajibkan VM Manager diaktifkan di semua node GKE.