Menetapkan kebijakan organisasi dengan tag

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

Sebelum memulai

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

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

Menetapkan kebijakan organisasi dengan tag

Untuk menggunakan tag guna menentukan di mana kebijakan organisasi seharusnya diterapkan, Anda harus menentukan kondisi dalam file YAML kebijakan organisasi. Anda dapat menetapkan kondisi agar cocok dengan pasangan nilai kunci tag tertentu, yang mengharuskan nilai tag tertentu ditetapkan agar kebijakan organisasi dapat diterapkan.

Sebagian besar kebijakan organisasi dievaluasi dan diterapkan saat resource dibuat atau diupdate. Tag tidak dapat ditambahkan ke resource sebelum dibuat, sehingga kebijakan organisasi bersyarat tidak dapat mengevaluasi tag pada resource saat dibuat, hanya pada tag yang diwarisi dari resource induk.

Tag dievaluasi untuk organisasi, folder, dan resource project. Sebagian besar resource di bawah project dalam hierarki resource tidak dievaluasi berdasarkan kebijakan organisasi, dengan pengecualian tertentu, misalnya layanan Cloud Run. Untuk informasi tentang batasan kebijakan organisasi tertentu, lihat Batasan kebijakan organisasi.

Contoh kebijakan daftar

Contoh berikut menunjukkan cara menetapkan file kebijakan organisasi yang menerapkan batasan gcp.resourceLocations. Kebijakan organisasi ini menggunakan nilai kondisional dan tidak bersyarat, 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 kebijakan organisasinya ingin Anda tetapkan.

  3. Di halaman Kebijakan organisasi, pilih batasan dari daftar. Halaman Detail kebijakan untuk batasan tersebut akan muncul.

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

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

  6. Di bagian Penegakan kebijakan, pilih opsi penerapan:

    • Untuk menggabungkan dan mengevaluasi kebijakan organisasi Anda bersama-sama, pilih Merge with parent. 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 kumpulan nilai kustom.

    • Nilai tertentu yang diterima oleh kebijakan bergantung pada layanan tempat kebijakan diterapkan. Untuk daftar batasan dan nilai yang diterima, lihat Batasan kebijakan organisasi.
  9. Secara opsional, untuk membuat kebijakan organisasi bersyarat pada tag, klik Tambahkan kondisi.

    1. Di kolom Title, masukkan nama untuk kondisi tersebut.

    2. Di kolom Deskripsi, berikan deskripsi 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 dapat diterapkan.

      1. Di kotak Jenis kondisi, pilih Tag.

      2. Pilih Operator untuk kondisi Anda. Untuk mencocokkan seluruh tag, gunakan operator matches. Untuk mencocokkan kunci tag dan nilai tag, gunakan operator ID kecocokan.

      3. Jika Anda memilih operator matches, masukkan nama tag dengan namespace. Jika Anda memilih operator ID kecocokan, masukkan ID kunci dan nilai.

      4. Anda dapat membuat beberapa kondisi dengan mengklik Tambahkan. Jika menambahkan kondisi lain, Anda dapat menetapkan logika bersyarat untuk mewajibkan semuanya dengan mengalihkan And. Anda dapat menetapkan logika kondisional untuk hanya meminta salah satu kondisi menjadi benar dengan mengalihkan tombol Or.

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

      6. Setelah selesai mengedit kondisi, klik Simpan.

      Gambar berikut menunjukkan contoh konfigurasi kebijakan organisasi yang menyertakan kondisi.

      Contoh UI kondisi kebijakan organisasi.

    4. Editor kondisi dapat digunakan untuk membuat ekspresi kondisional secara terprogram. Sistem juga akan menampilkan rendering terprogram dari kondisi Anda saat ini.

      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 Tetapkan kebijakan.

gcloud

Untuk menetapkan kebijakan organisasi, jalankan perintah berikut:

gcloud org-policies set-policy POLICY_PATH

Dengan POLICY_PATH adalah jalur lengkap ke file JSON kebijakan organisasi Anda, yang akan terlihat seperti berikut:

{
  "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"]
        }
      }
    ]
  }
}

Dengan keterangan:

  • RESOURCE_TYPE adalah organizations, folders, atau projects.

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

  • ORGANIZATION_ID adalah organisasi induk untuk kunci tag Anda.

Untuk kebijakan organisasi di atas, resource dan semua resource turunannya akan menerapkan batasan gcp.resourceLocations, hanya dengan allowedValues dari us-east1-locations. Batasan setiap resource yang memiliki tag location: us-west1 ini akan menerapkan batasan gcp.resourceLocations, dengan allowedValues dari us-east1-locations dan us-west1-locations.

Dengan cara ini, kumpulan nilai bersyarat dan tidak bersyarat dapat diterapkan untuk batasan dalam satu kebijakan organisasi.

Contoh kebijakan Boolean

Contoh berikut menunjukkan cara menetapkan file kebijakan organisasi yang menerapkan batasan compute.disableSerialPortAccess. Kebijakan organisasi ini menentukan bahwa semua port serial dapat diakses oleh resource, tetapi menggunakan kondisi untuk hanya membatasi akses port serial 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 kebijakan organisasinya ingin Anda tetapkan.

  3. Pilih batasan dari daftar di halaman Kebijakan organisasi. Halaman Policy details untuk batasan tersebut akan muncul.

  4. Guna 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 Enforcement, pilih apakah penerapan kebijakan organisasi ini harus diaktifkan atau dinonaktifkan.

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

    1. Di kolom Title, masukkan nama untuk kondisi tersebut.

    2. Di kolom Deskripsi, berikan deskripsi 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 dapat diterapkan.

      1. Di kotak Jenis kondisi, pilih Tag.

      2. Pilih Operator untuk kondisi Anda. Untuk mencocokkan seluruh tag, gunakan operator matches. Untuk mencocokkan kunci tag dan nilai tag, gunakan operator ID kecocokan.

      3. Jika Anda memilih operator matches, masukkan nama tag dengan namespace. Jika Anda memilih operator ID kecocokan, masukkan ID kunci dan nilai.

      4. Anda dapat membuat beberapa kondisi dengan mengklik Tambahkan. Jika menambahkan kondisi lain, Anda dapat menetapkan logika bersyarat untuk mewajibkan semuanya dengan mengalihkan And. Anda dapat menetapkan logika kondisional untuk hanya meminta salah satu kondisi menjadi benar dengan mengalihkan tombol Or.

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

      6. Setelah selesai mengedit kondisi, klik Simpan.

      7. Kebijakan organisasi dengan kondisi yang diterapkan hanya boleh memiliki satu aturan tanpa syarat. Klik Add rule, lalu setel apakah penerapan kebijakan organisasi ini harus disetel secara default ke aktif atau nonaktif.

      Gambar berikut menunjukkan contoh konfigurasi kebijakan organisasi yang menyertakan kondisi.

      Contoh UI kondisi kebijakan organisasi.

    4. Editor kondisi dapat digunakan untuk membuat ekspresi kondisional secara terprogram. Sistem juga akan menampilkan rendering terprogram dari kondisi Anda saat ini.

      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.
  9. Untuk menyelesaikan dan menerapkan kebijakan organisasi, klik Save.

gcloud

Untuk menetapkan kebijakan organisasi, jalankan perintah berikut:

gcloud org-policies set-policy POLICY_PATH

Dengan POLICY_PATH adalah jalur lengkap ke file JSON kebijakan organisasi Anda, yang akan terlihat seperti berikut:

{
  "name": "RESOURCE_TYPE/RESOURCE_ID/policies/gcp.disableSerialPortAccess",
  "spec": {
    "rules": [
      {
        "condition": {
          "expression": "resource.matchTag(\"ORGANIZATION_ID/disableSerialAccess\", \"yes\")"
        },
        "enforce": true
      },
      {
        "enforce": false
      }
    ]
  }
}

Dengan keterangan:

  • RESOURCE_TYPE adalah organizations, folders, atau projects.

  • RESOURCE_ID adalah ID organisasi, ID folder, project ID, atau nomor project Anda.

  • ORGANIZATION_ID adalah organisasi induk untuk kunci tag Anda.

Untuk kebijakan organisasi di atas, batasan gcp.disableSerialPortAccess akan diterapkan pada resource dan semua resource turunannya. Setiap resource yang memiliki tag disableSerialAccess: yes akan ditolak oleh kebijakan organisasi. Batasan akan diterapkan pada resource apa pun yang tidak memiliki tag disableSerialAccess: yes.

Menambahkan batasan secara bersyarat ke kebijakan organisasi

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

{i>Common Expression Language<i}, atau CEL, adalah bahasa ekspresi yang digunakan untuk menentukan ekspresi bersyarat. Ekspresi kondisional 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 pembuatan resource berdasarkan tag yang diterapkan ke resource tersebut. Untuk melakukannya, buat kebijakan organisasi yang menerapkan batasan gcp.resourceLocations, dan gunakan kondisi untuk mempersempit penerapan ke resource tertentu saja.

Mulailah dengan membuat file sementara, /tmp/policy.yaml, untuk memuat 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

Dengan ORGANIZATION_ID adalah organisasi induk dari kunci tag Anda.

Pada contoh di atas, setiap resource yang memiliki tag location: us-east terlampir akan dibatasi ke lokasi dalam grup nilai us-east1-locations. Setiap resource yang menyertakan tag location: us-west akan dibatasi ke lokasi dalam grup nilai us-west1-locations. Semua resource di organisasi akan diblokir dari lokasi dalam grup nilai asia-south1-locations.

Kemudian, setel 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 menjadikannya kondisional 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 organisasi, folder, atau resource project yang tidak diberi tag, Anda dapat menggunakan operator logis ! dalam kueri kondisional saat membuat kebijakan organisasi.

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

  1. Buat tag yang mengidentifikasi apakah resource telah menerapkan tata kelola yang tepat. 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 dengan namespace kunci tag, yang tercantum di bagian Jalur kunci tag, pada langkah berikutnya untuk membuat kondisi.

  3. Buat kebijakan organisasi Batasi Penggunaan Layanan Resource di level resource organisasi 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 dibangun di editor kondisi. Contoh:

    Membuat kebijakan organisasi bersyarat

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

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

Pewarisan kebijakan organisasi

Batasan List kebijakan organisasi yang diaktifkan menggunakan tag akan digabungkan dengan kebijakan organisasi yang sudah ada, sesuai aturan normal pewarisan. Aturan kondisional ini hanya akan berlaku jika kondisinya benar.

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

Misalnya, pertimbangkan kebijakan organisasi yang menerapkan batasan 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 selanjutnya

Untuk mendapatkan 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.