Batasan terkelola

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 contoh dari lingkungan pengembangan lokal, Anda dapat mengautentikasi ke Compute Engine dengan memilih salah satu opsi berikut:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Instal Google Cloud CLI. Setelah penginstalan, inisialisasi Google Cloud CLI dengan menjalankan perintah berikut:

      gcloud init

      Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

    2. Set a default region and zone.

    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. Setelah penginstalan, inisialisasi Google Cloud CLI dengan menjalankan perintah berikut:

      gcloud init

      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 :

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.create pada project
    • Untuk menggunakan image kustom guna membuat VM: compute.images.useReadOnly pada image
    • Untuk menggunakan snapshot guna membuat VM: compute.snapshots.useReadOnly pada snapshot
    • Untuk menggunakan template instance guna membuat VM: compute.instanceTemplates.useReadOnly di template instance
    • Untuk menetapkan jaringan lama ke VM: compute.networks.use pada project
    • Untuk menentukan alamat IP statis untuk VM: compute.addresses.use di project
    • Untuk menetapkan alamat IP eksternal ke VM saat menggunakan jaringan lama: compute.networks.useExternalIp di project
    • Untuk menentukan subnet bagi VM: compute.subnetworks.use pada project atau pada subnet yang dipilih
    • Untuk menetapkan alamat IP eksternal ke VM saat menggunakan jaringan VPC: compute.subnetworks.useExternalIp di project atau di subnet yang dipilih
    • Untuk menetapkan metadata instance VM untuk VM: compute.instances.setMetadata di project
    • Untuk menyetel tag untuk VM: compute.instances.setTags di VM
    • Untuk menyetel label VM: compute.instances.setLabels di VM
    • Untuk menyetel akun layanan yang akan digunakan VM: compute.instances.setServiceAccount di VM
    • Untuk membuat disk baru untuk VM: compute.disks.create di project
    • Untuk memasang disk yang ada dalam mode hanya baca atau baca-tulis: compute.disks.use pada disk
    • Untuk memasang disk yang ada dalam mode hanya baca: compute.disks.useReadOnly pada 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.
Secara default, Lampiran VLAN diizinkan untuk menggunakan setelan enkripsi apa pun.
Tetapkan IPSEC sebagai nilai yang diizinkan untuk mewajibkan pembuatan lampiran VLAN terenkripsi saja.

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
Menonaktifkan Virtualisasi Bertingkat VM

[Pratinjau Publik] 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 True.
Secara default, virtualisasi bertingkat dengan akselerasi hardware diizinkan untuk semua VM Compute Engine yang berjalan di platform CPU Intel Haswell atau yang lebih baru.

constraints/compute.managed.disableNestedVirtualization
Membatasi pengaktifan metadata akses port serial VM

Pratinjau: Batasan ini mencegah kunci metadata serial-port-enable disetel ke benar (true) untuk VM Compute Engine dalam organisasi, project, atau folder tempat batasan ini diberlakukan. Secara default, akses port serial dapat diaktifkan per VM, per zona, atau per project menggunakan kunci metadata ini. Untuk mengizinkan akses port serial bagi VM tertentu, Anda dapat mengecualikannya dari kebijakan ini menggunakan tag dan aturan bersyarat.
Penting: Menerapkan batasan ini tidak memengaruhi VM yang ada yang serial-port-enable-nya sudah disetel ke benar (true); VM tersebut akan mempertahankan akses kecuali jika metadatanya diperbarui.

constraints/compute.managed.disableSerialPortAccess
Nonaktifkan logging port serial VM ke Stackdriver

[Pratinjau Publik] Jika diberlakukan, batasan ini akan menonaktifkan logging port serial ke Stackdriver dari VM Compute Engine.
Secara default, logging port serial untuk VM Compute Engine dinonaktifkan, dan dapat diaktifkan secara selektif per VM atau per project menggunakan atribut metadata. Menonaktifkan logging port serial dapat menyebabkan layanan tertentu yang mengandalkannya, seperti cluster Google Kubernetes Engine, tidak berfungsi dengan benar. Sebelum Anda menerapkan batasan ini, pastikan produk di project Anda tidak bergantung pada logging port serial. Anda dapat mengizinkan instance VM tertentu menggunakan logging port serial. Pertama, terapkan tag untuk menandai instance, lalu gunakan aturan bersyarat berdasarkan nilai tag untuk mengecualikan instance tersebut dari penegakan.

constraints/compute.managed.disableSerialPortLogging
Membatasi penggunaan DNS Internal Global (gDNS) untuk project yang memiliki setelan DNS ZonalOnly.

[Pratinjau Publik] 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

[Pratinjau Publik] 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 mengecualikan instance tersebut dari penegakan.

constraints/compute.managed.requireOsConfig
Perlu Login OS

[Pratinjau Publik] 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 untuk menonaktifkan Login OS. Pertama, terapkan tag untuk menandai instance, lalu gunakan aturan bersyarat berdasarkan nilai tag untuk mengecualikan instance tersebut dari penegakan.

constraints/compute.managed.requireOsLogin
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:

  • INTERNAL
  • EKSTERNAL
. Misalnya, jika daftar yang diizinkan ditetapkan ke INTERNAL, pengguna Anda hanya dapat menyiapkan penerusan protokol internal. Artinya, semua aturan penerusan yang terkait dengan instance target dibatasi untuk skema load balancing INTERNAL dan hanya boleh menggunakan alamat IP internal.

constraints/compute.managed.restrictProtocolForwardingCreationForTypes
Membatasi penerusan IP VM

[Pratinjau Publik] 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 mengecualikan instance tersebut dari penegakan.

constraints/compute.managed.vmCanIpForward
Membatasi IP Eksternal Untuk Instance VM

[Pratinjau Publik] Batasan ini menentukan apakah instance VM Compute Engine diizinkan 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 mengecualikan instance tersebut dari 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:

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

    Buka Kebijakan Organisasi

  2. Di kolom filter, cari batasan Anda, lalu klik nama batasan untuk membuka halaman Policy details.

  3. Klik Uji Perubahan untuk membuat laporan simulasi.

  4. Perubahan metadata hierarkis mungkin memerlukan waktu beberapa jam untuk ditampilkan di laporan simulasi terkait batasan pada setelan metadata VM.

  5. Tinjau laporan untuk mengonfigurasi ulang resource yang tidak mematuhi kebijakan atau meminta pengecualian.

Validasi 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:

  1. Buat file YAML kebijakan (misalnya, dry-run-policy.yaml) dengan dryRunSpec:

    name: projects/PROJECT_ID/policies/compute.managed.requireOsLogin
    dryRunSpec:
      rules:
      - enforce: true
    

    Ganti PROJECT_ID dengan project ID Anda.

  2. 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 sistem.Google Cloud

Menguji penerapan batasan

Setelah menetapkan kebijakan, Anda dapat memverifikasi penegakan menggunakan gcloud CLI. Misalnya, untuk menguji batasan compute.managed.requireOsLogin, ikuti langkah-langkah berikut:

  1. Mencantumkan kebijakan yang ada untuk mengonfirmasi konfigurasi Anda:

    gcloud org-policies list --project=PROJECT_ID
    
  2. Terapkan kebijakan terkait Proses Penegakan Kebijakan menggunakan file YAML:

    gcloud org-policies set-policy enforce_managed_constraint.yaml
    
  3. Verifikasi 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=false
    

    Ganti 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.
  4. 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:

  1. Buat tag: Gunakan gcloud CLI untuk membuat kunci tag dan nilai tag.

    1. Buat kunci tag:

      gcloud resource-manager tags keys create osLoginOptional \
          --parent=organizations/ORGANIZATION_ID
      
    2. Buat nilai tag:

      gcloud resource-manager tags values create true \
          --parent=organizations/ORGANIZATION_ID/tagKeys/osLoginOptional
      

    Ganti ORGANIZATION_ID dengan ID organisasi Anda.

  2. Ikat tag ke resource. Untuk mengecualikan project dari batasan compute.managed.requireOsLogin, ikat tag osLoginOptional=true ke project menggunakan perintah gcloud 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=global
    

    Ganti ORGANIZATION_ID dengan ID organisasi Anda, dan PROJECT_ID dengan ID project yang ingin Anda kecualikan.

    Untuk mempelajari cara mengikat tag ke resource lain, lihat Mengikat tag ke resource.

  3. 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: true
    

    Ganti kode berikut:

    • PROJECT_ID: project ID Anda.
    • ORGANIZATION_ID: ID organisasi Anda.
  4. 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 berpindah dari batasan compute.* lama ke batasan compute.managed.* modern yang setara, ikuti langkah-langkah berikut untuk mencegah pengetatan batasan yang tidak diinginkan:

  1. Temukan: Mengidentifikasi alternatif batasan terkelola baru.
  2. Analisis dan validasi: Gunakan Simulator Kebijakan dan uji coba seperti yang dijelaskan sebelumnya.
  3. Terapkan batasan terkelola: Terapkan batasan terkelola baru bersama dengan batasan lama.
  4. Hapus kebijakan lama:
    • Buka Inventaris Aset di konsol Google Cloud dan filter menurut orgpolicy.Policy dan 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.

Langkah berikutnya