Batasan terkelola adalah kebijakan organisasi yang telah ditentukan sebelumnya, yang dibangun di platform modern, yang memberikan kontrol terpusat dan terprogram atas resource Compute Engine Anda. Hal ini mencakup dukungan bawaan untuk alat peluncuran yang aman seperti Policy Simulator dan uji coba.
Batasan terkelola dapat diidentifikasi dengan awalan compute.managed.* dan berfungsi
sebagai pengganti langsung untuk batasan compute.* lama.
Manfaat
- Peluncuran dan pemantauan yang aman: Terapkan kebijakan dengan alat lengkap, kontrol perubahan yang lebih cepat, dan deployment bertahap menggunakan kemampuan simulasi dan uji coba.
- Logging yang konsisten: Menerapkan keseragaman dalam pesan error dan logging, sehingga menyederhanakan pemantauan terpusat dan menyederhanakan audit.
Pewarisan kebijakan
Kebijakan organisasi yang Anda tetapkan pada resource diwarisi oleh turunan resource tersebut dalam hierarki resource. Misalnya, jika Anda menerapkan kebijakan pada folder, Google Cloud akan menerapkan kebijakan tersebut pada semua project di folder tersebut.
Harga
Layanan Kebijakan Organisasi, termasuk kebijakan organisasi yang telah ditetapkan (lama), terkelola, dan kustom, ditawarkan tanpa biaya.
Sebelum memulai
-
Siapkan autentikasi jika Anda belum melakukannya.
Autentikasi memverifikasi identitas Anda untuk mengakses layanan Google Cloud dan API. Untuk menjalankan
kode atau sampel dari lingkungan pengembangan lokal, Anda dapat melakukan autentikasi ke
Compute Engine dengan memilih salah satu opsi berikut:
Pilih tab untuk melihat bagaimana Anda berencana menggunakan contoh di halaman ini:
Konsol
Saat menggunakan konsol Google Cloud untuk mengakses layanan Google Cloud dan API, Anda tidak perlu menyiapkan autentikasi.
gcloud
-
Instal Google Cloud CLI. Setelah penginstalan, inisialisasi Google Cloud CLI dengan menjalankan perintah berikut:
gcloud initJika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
- Tetapkan region dan zona default.
REST
Untuk menggunakan contoh REST API di halaman ini dalam lingkungan pengembangan lokal, gunakan kredensial yang Anda berikan ke gcloud CLI.
Instal Google Cloud CLI.
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
Untuk mengetahui informasi selengkapnya, lihat Melakukan autentikasi untuk menggunakan REST dalam dokumentasi autentikasi Google Cloud .
- Pastikan Anda mengetahui ID organisasi Anda.
- Jika Anda belum melakukannya, instal
gcloud CLI dan lakukan inisialisasi dengan menjalankan
gcloud init. - Tetapkan project default untuk pengujian Anda.
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk mengelola kebijakan organisasi dengan batasan terkelola, minta administrator Anda untuk memberi Anda peran IAM berikut:
-
Administrator kebijakan organisasi (
roles/orgpolicy.policyAdmin) di resource organisasi -
Untuk menguji batasan:
Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1) pada project
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.
Peran bawaan ini berisi izin yang diperlukan untuk mengelola kebijakan organisasi dengan batasan terkelola. Untuk melihat izin yang benar-benar diperlukan, perluas bagian Izin yang diperlukan:
Izin yang diperlukan
Izin berikut diperlukan untuk mengelola kebijakan organisasi dengan batasan terkelola:
-
orgpolicy.constraints.list -
orgpolicy.policies.create -
orgpolicy.policies.delete -
orgpolicy.policies.list -
orgpolicy.policies.update -
orgpolicy.policy.get -
orgpolicy.policy.set -
Untuk menguji batasan:
compute.instances.createpada project- Untuk menggunakan image kustom guna membuat VM:
compute.images.useReadOnlypada image - Untuk menggunakan snapshot guna membuat VM:
compute.snapshots.useReadOnlypada snapshot - Untuk menggunakan template instance guna membuat VM:
compute.instanceTemplates.useReadOnlydi template instance - Untuk menetapkan jaringan lama ke VM:
compute.networks.usepada project - Untuk menentukan alamat IP statis untuk VM:
compute.addresses.usedi project - Untuk menetapkan alamat IP eksternal ke VM saat menggunakan jaringan lama:
compute.networks.useExternalIpdi project - Untuk menentukan subnet bagi VM:
compute.subnetworks.usepada project atau pada subnet yang dipilih - Untuk menetapkan alamat IP eksternal ke VM saat menggunakan jaringan VPC:
compute.subnetworks.useExternalIpdi project atau di subnet yang dipilih - Untuk menetapkan metadata instance VM untuk VM:
compute.instances.setMetadatadi project - Untuk menyetel tag untuk VM:
compute.instances.setTagsdi VM - Untuk menyetel label VM:
compute.instances.setLabelsdi VM - Untuk menyetel akun layanan yang akan digunakan VM:
compute.instances.setServiceAccountdi VM - Untuk membuat disk baru untuk VM:
compute.disks.createdi project - Untuk memasang disk yang ada dalam mode hanya baca atau baca-tulis:
compute.disks.usepada disk - Untuk memasang disk yang ada dalam mode hanya baca:
compute.disks.useReadOnlypada disk
Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.
Batasan terkelola yang tersedia
Batasan kebijakan organisasi terkelola berikut tersedia untuk Compute Engine:
| Batasan | Deskripsi |
|---|---|
| Setelan enkripsi Lampiran VLAN yang diizinkan |
Batasan daftar ini menentukan setelan enkripsi yang diizinkan untuk Lampiran VLAN baru. constraints/compute.managed.allowedVlanAttachmentEncryption
|
| Memblokir Fitur Pratinjau Compute Engine |
Batasan ini memastikan bahwa fitur pratinjau diblokir kecuali jika batasan ini diizinkan secara eksplisit. Setelah disetel ke izinkan, Anda dapat mengontrol fitur pratinjau mana yang dapat diaktifkan atau dinonaktifkan secara terpisah untuk project Anda. Hanya fitur pratinjau yang diaktifkan yang dapat diakses dalam project. Selanjutnya, menonaktifkan kebijakan tidak akan mengubah status fitur pratinjau individual yang telah ditetapkan & fitur tersebut dapat dinonaktifkan secara individual. Batasan ini hanya berlaku untuk fitur Compute Alpha API. constraints/compute.managed.blockPreviewFeatures
|
| Memblokir Kunci SSH di Seluruh Project |
Pratinjau: Batasan ini mencegah kunci metadata block-project-ssh-keys disetel ke false di tingkat project, project-zonal, atau instance untuk VM Compute Engine dalam organisasi, project, atau folder yang memberlakukan batasan ini. Secara default, kunci SSH di seluruh project diizinkan dan dapat dinonaktifkan di tingkat project, project-zonal, atau instance menggunakan kunci metadata ini. Untuk mengizinkan kunci SSH di tingkat project untuk VM tertentu, Anda dapat mengecualikannya dari kebijakan ini menggunakan tag dan aturan bersyarat. constraints/compute.managed.blockProjectSshKeys
|
| Nonaktifkan Atribut Tamu metadata Compute Engine |
Pratinjau: Jika diterapkan, batasan ini akan menonaktifkan akses Compute Engine API ke Atribut Tamu VM Compute Engine. constraints/compute.managed.disableGuestAttributesAccess
|
| Menonaktifkan Virtualisasi Bertingkat VM |
Batasan boolean ini menonaktifkan virtualisasi bertingkat dengan akselerasi hardware untuk semua VM Compute Engine yang menjadi bagian dari organisasi, project, atau folder yang menetapkan batasan ini ke constraints/compute.managed.disableNestedVirtualization
|
| Menonaktifkan Jenis Mesin yang Tidak Sesuai dengan FIPS |
Pratinjau: Jika diberlakukan, batasan ini akan mencegah pembuatan atau pembaruan instance VM menggunakan jenis mesin yang tidak mematuhi FIPS. Secara default, semua jenis mesin diizinkan. Anda dapat mengecualikan VM tertentu menggunakan tag dan aturan bersyarat. constraints/compute.managed.disableNonFIPSMachineTypes
|
| Membatasi pengaktifan metadata akses port serial VM |
Batasan ini mencegah kunci metadata serial-port-enable disetel ke benar (true) untuk VM Compute Engine dalam organisasi, project, atau folder yang memberlakukan batasan ini. Secara default, akses port serial dapat diaktifkan per VM, per zona, atau per project menggunakan kunci metadata ini. Untuk mengizinkan akses port serial untuk VM tertentu, Anda dapat mengecualikannya dari kebijakan ini menggunakan tag dan aturan bersyarat. constraints/compute.managed.disableSerialPortAccess
|
| Nonaktifkan logging port serial VM ke Stackdriver |
Jika diberlakukan, batasan ini akan menonaktifkan logging port serial ke Stackdriver dari VM Compute Engine. constraints/compute.managed.disableSerialPortLogging
|
| Menonaktifkan pembuatan instance Compute Engine yang menggunakan agen startup container (konlet) yang tidak digunakan lagi. |
Pratinjau: Batasan boolean ini mencegah pembuatan instance Compute Engine yang menggunakan konlet, agen startup container yang tidak digunakan lagi. Jika diaktifkan, Anda tidak dapat membuat instance komputasi yang memiliki kunci metadata `gce-container-declaration`.Batasan ini juga mencegah pembuatan instance komputasi dari template instance yang berisi kunci metadata `gce-container-declaration`, yang memengaruhi grup instance terkelola (MIG) yang menggunakan template instance tersebut. constraints/compute.managed.disableVmsWithContainerStartupAgent
|
| Membatasi penggunaan DNS Internal Global (gDNS) untuk project yang memiliki setelan DNS ZonalOnly. |
Batasan ini, jika diterapkan, akan membatasi penggunaan gDNS. Pembatasan ini menonaktifkan pembuatan VM gDNS dan mengupdate VM untuk menggunakan gDNS. Mengembalikan project zDNS ke gDNS tidak akan diblokir, tetapi akan menyebabkan penegakan pelanggaran kebijakan selama pemanggilan Instance API berikutnya. constraints/compute.managed.disallowGlobalDns
|
| Memerlukan Konfigurasi OS |
Jika diterapkan, batasan ini akan mewajibkan pengaktifan VM Manager (OS Config) di semua project baru. Pada project baru dan yang sudah ada, batasan ini mencegah pembaruan metadata yang dapat menonaktifkan VM Manager di tingkat project, project-zonal, atau instance. Anda dapat mengizinkan instance VM tertentu untuk menonaktifkan VM Manager. Pertama, terapkan tag untuk menandai instance, lalu gunakan aturan bersyarat berdasarkan nilai tag untuk mencakup instance tersebut dengan benar agar tidak dikenai penegakan. constraints/compute.managed.requireOsConfig
|
| Perlu Login OS |
Jika diterapkan, batasan ini akan mewajibkan pengaktifan Login OS di semua Project yang baru dibuat. Pada project baru dan yang sudah ada, batasan ini mencegah pembaruan metadata yang dapat menonaktifkan Login OS di tingkat project, project-zonal, atau instance. Anda dapat mengizinkan instance VM tertentu menonaktifkan Login OS. Pertama, terapkan tag untuk menandai instance, lalu gunakan aturan bersyarat berdasarkan nilai tag untuk mencakup instance tersebut dengan benar agar tidak dikenai penegakan. constraints/compute.managed.requireOsLogin
|
| Batasi Non-Confidential Computing |
Pratinjau: Mengharuskan semua VM baru dibuat dengan mengaktifkan Confidential Computing. Secara default, VM baru tidak diperlukan untuk menggunakan Confidential Computing. Anda dapat menerapkan/mengecualikan batasan ini dengan menggunakan tag untuk menandai Instance VM, lalu menerapkan batasan dengan aturan bersyarat berdasarkan tag yang diterapkan. constraints/compute.managed.restrictNonConfidentialComputing
|
| Membatasi penggunaan penerusan protokol |
Batasan ini memungkinkan Anda membatasi jenis deployment penerusan protokol (internal atau eksternal) yang dapat dibuat di organisasi Anda. Untuk mengonfigurasi batasan, Anda menentukan daftar yang diizinkan dari jenis deployment penerusan protokol yang akan diizinkan. Daftar yang diizinkan hanya dapat menyertakan nilai berikut:
constraints/compute.managed.restrictProtocolForwardingCreationForTypes
|
| Membatasi penerusan IP VM |
Batasan ini menentukan apakah instance VM Compute Engine dapat mengaktifkan penerusan IP. Secara default, jika tidak ada kebijakan yang ditentukan, semua VM dapat mengaktifkan penerusan IP di jaringan virtual mana pun. Jika diberlakukan, batasan ini akan menolak pembuatan atau update instance VM dengan penerusan IP yang diaktifkan. Anda dapat mengizinkan instance VM tertentu untuk mengaktifkan penerusan IP. Pertama, terapkan tag untuk menandai instance, lalu gunakan aturan bersyarat berdasarkan nilai tag untuk mencakup instance tersebut dengan benar agar tidak dikenai penegakan. constraints/compute.managed.vmCanIpForward
|
| Membatasi IP Eksternal Untuk Instance VM |
Batasan ini menentukan apakah instance VM Compute Engine diizinkan untuk menggunakan alamat IP eksternal IPv4. Secara default, semua instance VM diizinkan untuk menggunakan alamat IP eksternal. Jika diterapkan, batasan ini akan menolak pembuatan atau update instance VM dengan alamat IP eksternal IPv4. Batasan ini tidak akan membatasi penggunaan alamat IP eksternal IPv6. Anda dapat mengizinkan instance VM tertentu menggunakan alamat IP IPv4 eksternal. Pertama, terapkan tag untuk menandai instance, lalu gunakan aturan bersyarat berdasarkan nilai tag untuk mencakup instance tersebut dengan benar agar tidak dikenai penegakan. constraints/compute.managed.vmExternalIpAccess
|
Evaluasi metadata hierarkis
Batasan terkelola yang mengandalkan kunci metadata yang telah ditentukan sebelumnya, seperti Login OS atau Akses Port Serial, mendukung evaluasi hierarkis. Saat mengevaluasi batasan ini, Compute Engine akan memeriksa nilai metadata yang ditetapkan di tingkat instance VM, project, atau zona.
Menetapkan nilai metadata di tingkat project atau zona memungkinkan Anda mengelola instance VM dalam skala besar. Namun, penerapan batasan hanya terjadi selama panggilan API pembuatan atau update instance VM. Oleh karena itu, perubahan pada metadata project atau zona memengaruhi kepatuhan terhadap batasan instance VM hanya saat instance tersebut dibuat atau diupdate.
Batasan dan tingkat berbasis metadata
| Batasan | Kunci metadata | Tingkat hierarki metadata |
|---|---|---|
compute.managed.disableSerialPortAccess |
serial-port-enable |
Project, Zonal, Instance |
compute.managed.requireOsLogin |
enable-oslogin |
Project, Zonal, Instance |
compute.managed.disableGuestAttributesAccess |
enable-guest-attributes |
Project, Zonal, Instance |
compute.managed.requireOsConfig |
enable-osconfig |
Project, Zonal, Instance |
compute.managed.disallowGlobalDns |
VmDnsSetting |
Project, Instance |
Peluncuran yang aman: Siklus proses kebijakan
Untuk mencegah gangguan layanan saat Anda menerapkan batasan baru secara bertahap, Google merekomendasikan agar Anda menerapkan batasan terkelola dengan mengikuti langkah-langkah berikut:
Menganalisis dengan Policy Simulator
Sebelum menerapkan kebijakan, gunakan Policy Simulator untuk melihat resource yang ada yang melanggar kebijakan. Ikuti langkah-langkah berikut:
Di konsol Google Cloud , buka halaman Organization Policies.
Di kolom filter, cari batasan Anda, lalu klik nama batasan untuk membuka halaman Policy details.
Klik Uji Perubahan untuk membuat laporan simulasi.
Perubahan metadata hierarkis mungkin memerlukan waktu beberapa jam untuk ditampilkan di laporan simulasi terkait batasan pada setelan metadata VM.
Tinjau laporan untuk mengonfigurasi ulang resource yang tidak mematuhi kebijakan atau meminta pengecualian.
Memvalidasi dengan uji coba
Mode uji coba mencatat pelanggaran ke Cloud Logging, tetapi tidak menerapkan batasan.
Untuk menguji batasan, gunakan perintah gcloud org-policies set-policy sebagai berikut:
Buat file YAML kebijakan (misalnya,
dry-run-policy.yaml) dengandryRunSpec:name: projects/PROJECT_ID/policies/compute.managed.requireOsLogin dryRunSpec: rules: - enforce: trueGanti
PROJECT_IDdengan project ID Anda.Terapkan kebijakan:
gcloud org-policies set-policy dry-run-policy.yaml
Penerapan penuh
Setelah menyimulasikan dan menguji kebijakan, Anda dapat menerapkannya pada resource. Perubahan kebijakan dapat memerlukan waktu hingga 15 menit untuk diterapkan di semua Google Cloud sistem.
Menguji penerapan batasan
Setelah menetapkan kebijakan, Anda dapat memverifikasi penegakan menggunakan
gcloud CLI. Misalnya, untuk menguji batasan
compute.managed.requireOsLogin, ikuti langkah-langkah berikut:
Mencantumkan kebijakan yang ada untuk mengonfirmasi konfigurasi Anda:
gcloud org-policies list --project=PROJECT_IDTerapkan kebijakan terkait Proses Penegakan Kebijakan menggunakan file YAML:
gcloud org-policies set-policy enforce_managed_constraint.yamlVerifikasi penerapan dengan memanggil API mutasi. Mencoba membuat instance VM dengan metadata yang tidak sesuai akan gagal:
gcloud compute instances create VM_NAME \ --machine-type=MACHINE_TYPE \ --image-family=IMAGE_FAMILY \ --image-project=IMAGE_PROJECT \ --metadata=enable-oslogin=falseGanti kode berikut:
VM_NAME: nama untuk instance VM baru.MACHINE_TYPE: jenis mesin yang valid, misalnya,e2-micro.IMAGE_FAMILY: kelompok image yang valid, misalnya,debian-11.IMAGE_PROJECT: project kelompok gambar, misalnya,debian-cloud.
Periksa pesan error. Anda akan melihat penolakan yang menunjukkan batasan spesifik yang dilanggar:
ERROR: (gcloud.compute.instances.create) Could not fetch resource: - Operation denied by org policy: [constraints/compute.managed.requireOsLogin]
Pengecualian bersyarat dengan tag
Anda dapat menggunakan tag untuk memberikan pengecualian pada resource tertentu berdasarkan kebutuhan bisnis. Dalam contoh ini, kita menggunakan tag bernama osLoginOptional untuk mengidentifikasi
resource yang dikecualikan dari persyaratan Login OS. Saat Anda mengikat tag ini dengan nilai true ke resource, kebijakan organisasi mengizinkan resource tertentu tersebut ada tanpa mengaktifkan Login OS, meskipun kebijakan tetap diberlakukan secara ketat untuk lingkungan Anda lainnya.
Untuk memberikan pengecualian menggunakan tag, ikuti langkah-langkah berikut:
Buat tag: Gunakan gcloud CLI untuk membuat kunci tag dan nilai tag.
Buat kunci tag:
gcloud resource-manager tags keys create osLoginOptional \ --parent=organizations/ORGANIZATION_IDBuat nilai tag:
gcloud resource-manager tags values create true \ --parent=organizations/ORGANIZATION_ID/tagKeys/osLoginOptional
Ganti
ORGANIZATION_IDdengan ID organisasi Anda.Ikat tag ke resource. Untuk mengecualikan project dari batasan
compute.managed.requireOsLogin, ikat tagosLoginOptional=trueke project menggunakan perintahgcloud resource-manager tags bindings create:gcloud resource-manager tags bindings create \ --tag-value=ORGANIZATION_ID/osLoginOptional/true \ --parent=//cloudresourcemanager.googleapis.com/projects/PROJECT_ID \ --location=globalGanti
ORGANIZATION_IDdengan ID organisasi Anda, danPROJECT_IDdengan ID project yang ingin Anda kecualikan.Untuk mempelajari cara mengikat tag ke resource lain, lihat Mengikat tag ke resource.
Perbarui kebijakan: Buat atau perbarui file YAML kebijakan Anda (misalnya,
policy.yaml) untuk menyertakan aturan bersyarat.name: projects/PROJECT_ID/policies/compute.managed.requireOsLogin spec: rules: - condition: expression: "resource.matchTag('ORGANIZATION_ID/osLoginOptional', 'true')" enforce: false - enforce: trueGanti kode berikut:
PROJECT_ID: project ID Anda.ORGANIZATION_ID: ID organisasi Anda.
Terapkan kebijakan: Gunakan perintah gcloud CLI berikut untuk mengaktifkan konfigurasi:
gcloud org-policies set-policy policy.yaml
Migrasi dari batasan lama
Saat melakukan migrasi, perhatikan bahwa batasan terkelola meningkatkan, tetapi tidak mereplikasi secara persis, perilaku kebijakan lama. Batasan terkelola menawarkan prediktabilitas yang lebih besar dengan memeriksa pelanggaran hanya selama permintaan API yang membuat atau mengubah resource. Jika permintaan melanggar batasan, panggilan API akan gagal dengan error yang jelas. Hal ini berbeda dengan kebijakan lama, yang dapat diterapkan pada berbagai tahap operasi atau digunakan sebagai atribut resource, sehingga perilaku penerapan kurang dapat diprediksi.
Saat beralih dari batasan compute.* lama ke batasan compute.managed.*
modern yang setara, ikuti langkah-langkah berikut untuk mencegah pengetatan batasan yang tidak diinginkan:
- Temukan: Mengidentifikasi alternatif batasan terkelola baru.
- Analisis dan validasi: Gunakan Simulator Kebijakan dan uji coba seperti yang dijelaskan sebelumnya.
- Terapkan batasan terkelola: Terapkan batasan terkelola baru bersama dengan batasan lama.
- Hapus kebijakan lama:
- Buka Inventaris Aset di konsol Google Cloud dan filter menurut
orgpolicy.Policydan nama batasan lama untuk mengidentifikasi semua kebijakan yang menggunakan batasan lama. - Hapus semua kebijakan yang menggunakan batasan lama. Menghapus kebijakan akan mereset kebijakan tersebut ke perilaku default yang dikelola Google untuk batasan tersebut.
- Buka Inventaris Aset di konsol Google Cloud dan filter menurut
Langkah berikutnya
- Pelajari lebih lanjut konsep dan manfaat dasar layanan ini di Pengantar Layanan Kebijakan Organisasi.
- Untuk mengetahui petunjuk mendetail tentang cara membuat dan mengelola kebijakan, lihat dokumentasi Resource Manager.
- Lihat daftar lengkap batasan yang tersedia di semua layanan Google Cloud .
- Pelajari cara menggunakan Simulator Kebijakan untuk analisis dampak lanjutan kebijakan organisasi Anda.