Menetapkan kebijakan organisasi dengan tag

Tag memberikan cara untuk mengizinkan atau menolak kebijakan secara bersyarat berdasarkan apakah resource memiliki tag tertentu. Anda dapat menggunakan tag dan penerapan kebijakan organisasi bersyarat untuk memberikan kontrol terpusat atas resource dalam hierarki Anda.

Sebelum memulai

Untuk mengetahui informasi selengkapnya tentang apa itu tag dan cara kerjanya, lihat Ringkasan tag.

Untuk mengetahui petunjuk mendetail tentang cara menggunakan tag, lihat Membuat dan mengelola tag.

Peran yang diperlukan

Guna mendapatkan izin yang diperlukan untuk mengelola kebijakan organisasi, minta administrator untuk memberi Anda peran IAM Organization policy administrator (roles/orgpolicy.policyAdmin) di organisasi. 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.

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.

Menetapkan kebijakan organisasi dengan tag

Untuk menggunakan tag guna menentukan tempat kebijakan organisasi harus berlaku, Anda harus menentukan kondisi dalam file YAML kebijakan organisasi. Anda dapat menetapkan kondisi agar cocok dengan pasangan nilai kunci tag tertentu, yang mewajibkan nilai tag tertentu ditetapkan agar kebijakan organisasi diterapkan.

Anda juga dapat menyetel kondisi agar cocok dengan kunci tag. Hal ini memungkinkan Anda mengaktifkan atau menonaktifkan penegakan terhadap semua resource dengan kunci tag tersebut, terlepas dari nilai tag yang dilampirkan.

Sebagian besar kebijakan organisasi dievaluasi dan diterapkan saat resource dibuat atau diupdate. Tag wajib dapat digunakan untuk mengatur resource saat dibuat.

Contoh aturan daftar

Contoh berikut menunjukkan cara menyetel kebijakan organisasi yang menerapkan batasan terkelola lama gcp.resourceLocations. Kebijakan organisasi ini menggunakan nilai bersyarat dan tanpa syarat, yang ditetapkan dalam file kebijakan yang sama.

Konsol

Untuk menetapkan kebijakan organisasi, 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. Di halaman Kebijakan organisasi, pilih batasan dari daftar. Halaman Policy details untuk batasan tersebut akan muncul.

  4. Untuk memperbarui kebijakan organisasi untuk resource ini, klik Manage policy.

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

  6. Di bagian Penerapan kebijakan, pilih opsi penerapan:

    • Untuk menggabungkan dan mengevaluasi kebijakan organisasi Anda, pilih Gabungkan dengan induk. Untuk mengetahui informasi selengkapnya tentang pewarisan dan hierarki resource, lihat Memahami Evaluasi Hierarki.

    • Untuk mengganti kebijakan yang diwarisi dari resource induk, pilih Ganti.

  7. Klik Tambahkan Aturan.

  8. Di bagian Policy values, pilih apakah kebijakan organisasi ini harus mengizinkan semua nilai, menolak semua nilai, atau menentukan serangkaian nilai kustom.

    • Nilai spesifik yang diterima oleh kebijakan bergantung pada layanan yang menerapkan kebijakan tersebut. Untuk mengetahui daftar batasan dan nilai yang diterimanya, lihat Batasan kebijakan organisasi.
  9. Secara opsional, untuk membuat kebijakan organisasi bersyarat pada tag, klik Add condition.

    1. Di kolom Title, masukkan nama untuk kondisi.

    2. Di kolom Deskripsi, berikan deskripsi untuk kondisi Anda. Deskripsi memberikan konteks tentang tag yang diperlukan dan pengaruhnya terhadap resource.

    3. Anda dapat menggunakan Pembuat kondisi untuk membuat kondisi yang memerlukan tag tertentu agar batasan berlaku.

      1. Di kotak Condition type, pilih Tag.

      2. Pilih Operator untuk kondisi Anda.

        • Untuk mencocokkan seluruh tag, gunakan operator memiliki nilai dengan nama tag yang memiliki namespace, atau gunakan operator memiliki ID nilai dengan ID kunci dan nilai tag.

        • Untuk mencocokkan kunci tag saja, gunakan operator has key dengan nama yang diberi namespace dari kunci tag, atau gunakan operator has key ID dengan ID kunci tag.

      3. Anda dapat membuat beberapa kondisi dengan mengklik Tambahkan. Jika menambahkan kondisi lain, Anda dapat menetapkan logika bersyarat untuk mewajibkan semuanya dengan mengalihkan Dan. Anda dapat menetapkan logika bersyarat agar hanya satu kondisi yang harus benar dengan mengaktifkan Atau.

      4. Anda dapat menghapus ekspresi dengan mengklik X besar di sebelah kanan kolom kondisi.

      5. Setelah selesai mengedit kondisi, klik Simpan.

    4. Editor kondisi dapat digunakan untuk membuat ekspresi bersyarat secara terprogram. Tindakan ini juga akan menampilkan rendering terprogram dari kumpulan kondisi Anda saat ini.

      Ekspresi kondisional harus menyertakan 1 hingga 10 subekspresi, yang digabungkan oleh operator || atau &&. Setiap subekspresi harus berupa salah satu fungsi berikut:

      • "resource.matchTag('KEY_NAME', 'VALUE_SHORT_NAME')"

        Ganti kode berikut:

        • KEY_NAME dengan nama kunci tag dengan namespace. Contoh, 123456789012/env.

        • VALUE_SHORT_NAME dengan nama pendek nilai tag. Contoh, prod.

        Contoh: resource.matchTag('123456789012/environment, 'prod')

      • "resource.matchTagId('KEY_ID', 'VALUE_ID')"

        Ganti kode berikut:

        • KEY_ID dengan ID permanen kunci tag. Contoh, tagKeys/123456789012.

        • VALUE_ID dengan ID permanen nilai tag. Contoh, tagValues/567890123456.

        Contoh: resource.matchTagId('tagKeys/123456789012', 'tagValues/567890123456')

      • "resource.hasTagKey('KEY_NAME')"

        Ganti KEY_NAME dengan nama yang diberi namespace dari kunci tag. Contoh, 123456789012/env.

        Contoh: resource.matchTag('123456789012/environment, 'prod')

      • "resource.hasTagKeyId('KEY_ID')"

        Ganti KEY_ID dengan ID permanen kunci tag. Contoh, tagKeys/123456789012.

        Contoh: resource.matchTagId('tagKeys/123456789012')

      1. Anda dapat menggunakan Editor kondisi untuk menerapkan operator logika !. Misalnya, kueri !resource.matchTag('ORGANIZATION_ID/location', 'us-west1') akan menerapkan batasan kebijakan organisasi ke resource apa pun yang tidak memiliki tag us-west1.
  10. Untuk menerapkan kebijakan, klik Set policy.

gcloud

Untuk menetapkan kebijakan organisasi, buat file YAML untuk menyimpan kebijakan organisasi:

name: RESOURCE_TYPE/RESOURCE_ID/policies/gcp.resourceLocations
spec:
  rules:
  # As there is no condition specified, this allowedValue is enforced unconditionally.
  - values:
      allowedValues:
      - us-east1-locations
  # This condition applies to the values block.
  - condition:
      expression: "resource.matchTag('ORGANIZATION_ID/location', 'us-west1')"
    values:
      allowedValues:
      - us-west1-locations

Anda dapat mencocokkan seluruh tag dengan kondisi menggunakan operator resource.matchTag dengan nama tag yang memiliki namespace.

Untuk mencocokkan kunci tag saja, gunakan operator resource.hasTagKey dengan nama dengan namespace dari kunci tag. Untuk mencocokkan nilai tag apa pun untuk kunci tag tertentu, gunakan operator resource.hasTagKeyID dengan ID kunci tag.

Jalankan perintah set-policy:

gcloud org-policies set-policy POLICY_PATH

Ganti kode berikut:

  • POLICY_PATH: jalur lengkap ke file YAML kebijakan organisasi Anda

  • RESOURCE_TYPE: organizations, folders, atau projects

  • RESOURCE_ID: ID organisasi, ID folder, ID project, atau nomor project Anda, bergantung pada jenis resource yang ditentukan dalam RESOURCE_TYPE

  • ORGANIZATION_ID: organisasi induk dari kunci tag Anda

Untuk kebijakan organisasi ini, resource dan semua resource turunannya menerapkan batasan terkelola lama gcp.resourceLocations, dengan allowedValues dari us-east1-locations saja. Setiap resource ini yang memiliki tag location: us-west1 akan menerapkan batasan yang dikelola secara warisan gcp.resourceLocations terhadapnya, dengan allowedValues us-east1-locations dan us-west1-locations.

Dengan cara ini, set nilai bersyarat dan tanpa syarat dapat diterapkan untuk batasan dalam satu kebijakan organisasi.

Contoh aturan Boolean

Contoh berikut menunjukkan cara menyetel kebijakan organisasi yang menerapkan batasan terkelola lama compute.disableSerialPortAccess. Kebijakan organisasi ini menentukan bahwa semua port serial dapat diakses oleh resource, tetapi menggunakan kondisi untuk membatasi akses port serial hanya ke resource yang memiliki tag yang cocok.

Konsol

Untuk menetapkan kebijakan organisasi, 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. Pilih batasan dari daftar di halaman Kebijakan organisasi. Halaman Policy details untuk batasan tersebut akan muncul.

  4. Untuk memperbarui kebijakan organisasi untuk resource ini, klik Manage policy.

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

  6. Klik Tambahkan Aturan.

  7. Di bagian Penerapan, pilih apakah penerapan kebijakan organisasi ini harus diaktifkan atau dinonaktifkan.

  8. Secara opsional, untuk membuat kebijakan organisasi bersyarat pada tag, klik Add condition. Perhatikan bahwa jika menambahkan aturan kondisional ke kebijakan organisasi, Anda hanya boleh menambahkan satu aturan tanpa syarat atau kebijakan tidak dapat disimpan.

    1. Di kolom Title, masukkan nama untuk kondisi.

    2. Di kolom Deskripsi, berikan deskripsi untuk kondisi Anda. Deskripsi memberikan konteks tentang tag yang diperlukan dan pengaruhnya terhadap resource.

    3. Anda dapat menggunakan Pembuat kondisi untuk membuat kondisi yang memerlukan tag tertentu agar batasan berlaku.

      1. Di kotak Condition type, pilih Tag.

      2. Pilih Operator untuk kondisi Anda.

        • Untuk mencocokkan seluruh tag, gunakan operator memiliki nilai dengan nama tag yang memiliki namespace, atau gunakan operator memiliki ID nilai dengan ID kunci dan nilai tag.

        • Untuk mencocokkan kunci tag saja, gunakan operator has key dengan nama yang diberi namespace dari kunci tag, atau gunakan operator has key ID dengan ID kunci tag.

      3. Anda dapat membuat beberapa kondisi dengan mengklik Tambahkan. Jika menambahkan kondisi lain, Anda dapat menetapkan logika bersyarat untuk mewajibkan semuanya dengan mengalihkan Dan. Anda dapat menetapkan logika bersyarat agar hanya satu kondisi yang harus benar dengan mengaktifkan Atau.

      4. Anda dapat menghapus ekspresi dengan mengklik X besar di sebelah kanan kolom kondisi.

      5. Setelah selesai mengedit kondisi, klik Simpan.

      6. Kebijakan organisasi dengan kondisi yang diterapkan hanya boleh memiliki satu aturan tanpa syarat. Klik Add rule, lalu tetapkan apakah penerapan kebijakan organisasi ini harus diaktifkan atau dinonaktifkan secara default.

    4. Editor kondisi dapat digunakan untuk membuat ekspresi bersyarat secara terprogram. Tindakan ini juga akan menampilkan rendering terprogram dari kumpulan kondisi Anda saat ini.

      Ekspresi kondisional harus menyertakan 1 hingga 10 subekspresi, yang digabungkan oleh operator || atau &&. Setiap subekspresi harus berupa salah satu bentuk berikut:

      • "resource.matchTag('KEY_NAME', 'VALUE_SHORT_NAME')"

        Ganti kode berikut:

        • KEY_NAME dengan nama kunci tag dengan namespace. Contoh, 123456789012/env.

        • VALUE_SHORT_NAME dengan nama pendek nilai tag. Contoh, prod.

      • "resource.matchTagId('KEY_ID', 'VALUE_ID')"

        Ganti kode berikut:

        • KEY_ID dengan ID permanen kunci tag. Contoh, tagKeys/123456789012.

        • VALUE_ID dengan ID permanen nilai tag. Contoh, tagValues/567890123456.

      1. Anda dapat menggunakan Editor kondisi untuk menerapkan operator logis !. Misalnya, kueri !resource.matchTag('ORGANIZATION_ID/location', 'us-west1') akan menerapkan batasan kebijakan organisasi ke resource apa pun yang tidak memiliki tag us-west1.
  9. Untuk menyelesaikan dan menerapkan kebijakan organisasi, klik Save.

gcloud

Untuk menetapkan kebijakan organisasi, buat file YAML untuk menyimpan kebijakan organisasi:

name: RESOURCE_TYPE/RESOURCE_ID/policies/gcp.disableSerialPortAccess
spec:
  rules:
  - condition:
      expression: "resource.matchTag('ORGANIZATION_ID/disableSerialAccess', 'yes')"
    enforce: true
  - enforce: false

Anda dapat mencocokkan seluruh tag dengan kondisi menggunakan operator resource.matchTag dengan nama tag yang memiliki namespace.

Untuk mencocokkan kunci tag saja, gunakan operator resource.hasTagKey dengan nama dengan namespace dari kunci tag. Untuk mencocokkan nilai tag apa pun untuk kunci tag tertentu, gunakan operator resource.hasTagKeyID dengan ID kunci tag.

Jalankan perintah set-policy:

gcloud org-policies set-policy POLICY_PATH

Ganti kode berikut:

  • POLICY_PATH: jalur lengkap ke file YAML kebijakan organisasi Anda

  • RESOURCE_TYPE: organizations, folders, atau projects

  • RESOURCE_ID: ID organisasi, ID folder, ID project, atau nomor project Anda

  • ORGANIZATION_ID: organisasi induk dari kunci tag Anda

Untuk kebijakan organisasi ini, resource dan semua resource turunannya menerapkan batasan yang dikelola secara gcp.disableSerialPortAccesswarisan terhadapnya. Resource apa pun yang memiliki tag disableSerialAccess: yes ditolak oleh kebijakan organisasi. Resource apa pun yang tidak memiliki tag disableSerialAccess: yes tidak memiliki batasan terkelola lama yang diterapkan terhadapnya.

Menambahkan aturan secara bersyarat ke kebijakan organisasi

Anda dapat menggunakan tag untuk menambahkan aturan batasan secara bersyarat ke resource berdasarkan tag yang dilampirkan. Anda dapat menambahkan beberapa kondisi dalam kebijakan organisasi yang sama, yang memberi Anda kontrol terperinci atas resource yang ingin Anda terapkan kebijakan organisasi.

Common Expression Language, atau CEL, adalah bahasa ekspresi yang digunakan untuk menentukan ekspresi bersyarat. Ekspresi bersyarat terdiri dari satu atau beberapa pernyataan yang digabungkan menggunakan operator logis (&&, ||, atau !). Untuk informasi selengkapnya, lihat spesifikasi CEL dan definisi bahasanya.

Pertimbangkan kebijakan organisasi untuk membatasi lokasi tempat resource dapat dibuat berdasarkan tag yang diterapkan ke resource tersebut. Untuk melakukannya, buat kebijakan organisasi yang menerapkan batasan terkelola lama gcp.resourceLocations, dan gunakan kondisi untuk mempersempit penerapan hanya ke resource tertentu.

Mulai dengan membuat file sementara, /tmp/policy.yaml, yang berisi kebijakan organisasi Anda:

name: organizations/ORGANIZATION_ID/policies/gcp.resourceLocations
spec:
  rules:
  - condition:
      expression: "resource.matchTag('ORGANIZATION_ID/location', 'us-east')"
    values:
      allowedValues:
      - in:us-east1-locations
  - condition:
      expression: "resource.matchTag('ORGANIZATION_ID/location', 'us-west')"
    values:
      allowedValues:
      - in:us-west1-locations
  - values:
      deniedValues:
      - in:asia-south1-locations

Ganti ORGANIZATION_ID dengan organisasi induk dari kunci tag Anda.

Dalam contoh ini, semua resource yang memiliki tag location: us-east terlampir akan dibatasi ke lokasi dalam grup nilai us-east1-locations. Setiap resource yang memiliki tag location: us-west akan dibatasi ke lokasi dalam grup nilai us-west1-locations. Semua resource dalam organisasi akan diblokir dari lokasi dalam grup nilai asia-south1-locations.

Kemudian, tetapkan kebijakan menggunakan perintah set-policy:

gcloud org-policies set-policy /tmp/policy.yaml

Membatasi resource yang tidak diberi tag

Anda dapat menggunakan tag dan kebijakan organisasi bersyarat untuk membatasi resource apa pun yang tidak menggunakan tag tertentu. Jika Anda menetapkan kebijakan organisasi pada resource yang membatasi layanan dan membuatnya bersyarat pada keberadaan tag, tidak ada resource turunan yang berasal dari resource tersebut yang dapat digunakan kecuali jika resource tersebut telah diberi tag. Dengan cara ini, resource harus disiapkan sesuai dengan rencana tata kelola Anda sebelum dapat digunakan.

Untuk membatasi resource organisasi, folder, atau project yang tidak diberi tag, Anda dapat menggunakan operator logika ! dalam kueri bersyarat saat membuat kebijakan organisasi.

Misalnya, untuk mengizinkan penggunaan sqladmin.googleapis.com hanya di project yang memiliki tag sqladmin=enabled, Anda dapat membuat kebijakan organisasi yang menolak sqladmin.googleapis.com di project yang tidak memiliki tag sqladmin=enabled.

  1. Buat tag yang mengidentifikasi apakah tata kelola yang tepat telah diterapkan pada resource. Misalnya, Anda dapat membuat tag dengan kunci sqlAdmin dan nilai enabled, untuk menetapkan bahwa resource ini harus mengizinkan penggunaan Cloud SQL Admin API. Contoh:

    Membuat kunci dan nilai tag

  2. Klik nama tag yang baru dibuat. Anda memerlukan nama yang diberi namespace dari kunci tag, yang tercantum di bagian Jalur kunci tag, pada langkah berikutnya untuk membuat kondisi.

  3. Buat kebijakan organisasi Restrict Resource Service Usage di tingkat resource organisasi Anda untuk menolak akses ke Cloud SQL Admin API. Contoh:

    Membuat kebijakan organisasi untuk membatasi resource

  4. Tambahkan kondisi ke kebijakan organisasi di atas, yang menentukan bahwa kebijakan diterapkan jika tag tata kelola tidak ada. Operator NOT logis tidak didukung oleh pembuat kondisi, sehingga kondisi ini harus dibuat di editor kondisi. Contoh:

    Membangun kebijakan organisasi bersyarat

    !resource.matchTag("012345678901/sqlAdmin", "enabled")

Sekarang, tag sqlAdmin=enabled harus dipasangkan atau diwarisi oleh project, sebelum developer Anda dapat menggunakan Cloud SQL Admin API dengan project tersebut.

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.

Pewarisan kebijakan organisasi

Batasan dengan aturan daftar yang diaktifkan menggunakan tag digabungkan dengan kebijakan organisasi yang ada, sesuai dengan aturan pewarisan normal. Aturan bersyarat ini hanya berlaku jika kondisinya benar.

Batasan dengan aturan boolean yang diaktifkan menggunakan tag akan menggantikan kebijakan organisasi yang ada. Selain itu, karena aturan boolean hanya memiliki dua status, benar atau salah, maka semua pernyataan bersyarat harus berlawanan dengan pernyataan non-kondisi untuk mencegah beberapa tag berkonflik satu sama lain.

Misalnya, pertimbangkan kebijakan organisasi yang menerapkan batasan terkelola lama disableSerialPortAccess. Nilai tanpa syarat, yaitu nilai yang digunakan jika tidak ada kondisi yang menggantikannya, adalah benar. Oleh karena itu, pernyataan bersyarat lainnya untuk kebijakan ini harus disetel ke salah (false) agar tidak bertentangan.

Langkah berikutnya

Untuk mengetahui informasi selengkapnya tentang cara menggunakan tag, baca halaman Membuat dan mengelola tag.

Untuk mengetahui informasi selengkapnya tentang cara membuat dan mengelola batasan kebijakan organisasi, lihat Menggunakan batasan.