Menggunakan batasan kustom

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 di 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 menginginkan kontrol yang lebih terperinci dan dapat disesuaikan atas kolom tertentu yang dibatasi dalam kebijakan organisasi, Anda juga dapat membuat batasan kustom dan menggunakan batasan kustom tersebut dalam kebijakan organisasi.

Manfaat

Anda dapat menggunakan kebijakan organisasi kustom untuk mengizinkan atau menolak operasi tertentu pada batch Dataproc Serverless. Misalnya, jika permintaan untuk membuat beban kerja batch gagal memenuhi validasi batasan kustom sebagaimana ditetapkan oleh kebijakan organisasi Anda, permintaan akan gagal, dan error akan ditampilkan ke pemanggil.

Pewarisan kebijakan

Secara default, kebijakan organisasi diwarisi oleh turunan resource tempat Anda menerapkan kebijakan tersebut. Misalnya, jika Anda menerapkan kebijakan pada folder, Google Cloud akan menerapkan kebijakan tersebut pada semua project di folder tersebut. Untuk mempelajari perilaku ini dan cara mengubahnya lebih lanjut, lihat Aturan evaluasi hierarki.

Harga

Layanan Kebijakan Organisasi, termasuk batasan yang telah ditetapkan dan khusus, ditawarkan tanpa biaya.

Sebelum memulai

  1. Siapkan project
    1. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
    2. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

      Buka pemilih project

    3. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

    4. Aktifkan API Dataproc Serverless.

      Mengaktifkan API

    5. Menginstal Google Cloud CLI.
    6. Untuk initialize gcloud CLI, jalankan perintah berikut:

      gcloud init
    7. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

      Buka pemilih project

    8. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

    9. Aktifkan API Dataproc Serverless.

      Mengaktifkan API

    10. Menginstal Google Cloud CLI.
    11. Untuk initialize gcloud CLI, jalankan perintah berikut:

      gcloud init
    12. Pastikan Anda mengetahui ID organisasi Anda.

Peran yang diperlukan

Untuk mendapatkan izin yang Anda perlukan untuk mengelola kebijakan organisasi, minta administrator Anda untuk memberi Anda peran IAM Administrator kebijakan organisasi (roles/orgpolicy.policyAdmin) di resource organisasi. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses.

Peran yang telah ditetapkan ini berisi izin yang diperlukan untuk mengelola kebijakan organisasi. Untuk melihat izin yang benar-benar diperlukan, perluas bagian Izin yang diperlukan:

Izin yang diperlukan

Izin berikut diperlukan untuk mengelola kebijakan organisasi:

  • orgpolicy.constraints.list
  • orgpolicy.policies.create
  • orgpolicy.policies.delete
  • orgpolicy.policies.list
  • orgpolicy.policies.update
  • orgpolicy.policy.get
  • orgpolicy.policy.set

Anda mung juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaanlainnya.

Membuat batasan khusus

Batasan khusus ditentukan dalam file YAML berdasarkan resource, metode, kondisi, dan tindakan yang diterapkan padanya. Dataproc Serverless mendukung batasan kustom yang diterapkan pada metode CREATE resource BATCH (lihat Batasan Dataproc Serverless pada resource dan operasi).

Cara membuat file YAML untuk batasan kustom Dataproc Serverless:

name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
resourceTypes:
- dataproc.googleapis.com/Batch
methodTypes:
- CREATE
condition: CONDITION
actionType: ACTION
displayName: DISPLAY_NAME
description: DESCRIPTION

Ganti kode berikut:

  • ORGANIZATION_ID: ID organisasi Anda, seperti 123456789.

  • CONSTRAINT_NAME: nama yang Anda inginkan untuk batasan kustom baru. Batasan kustom harus diawali dengan custom., dan hanya dapat menyertakan huruf besar, huruf kecil, atau angka, misalnya, custom.batchMustHaveSpecifiedCategoryLabel. Panjang maksimum kolom ini adalah 70 karakter, tidak termasuk awalan, misalnya, organizations/123456789/customConstraints/custom.

  • CONDITION: kondisi CEL yang ditulis berdasarkan representasi resource layanan yang didukung. Kolom ini memiliki panjang maksimal 1000 karakter. Lihat Resource yang didukung untuk informasi selengkapnya tentang resource yang tersedia untuk menulis kondisi. Contoh kondisi: ("category" in resource.labels) && (resource.labels['category'] in ['retail', 'ads', 'service']).

  • ACTION: tindakan yang akan diambil jika kondisi terpenuhi. Ini dapat berupa ALLOW atau DENY.

  • DISPLAY_NAME: nama yang mudah dibaca manusia untuk batasan. Contoh nama tampilan: "Terapkan persyaratan label 'kategori' batch". 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. Contoh deskripsi: "Hanya izinkan pembuatan batch Dataproc jika memiliki label 'kategori' dengan nilai 'retail', 'ads', atau 'service'".

Untuk mengetahui informasi selengkapnya tentang cara membuat batasan kustom, lihat Menentukan batasan kustom.

Menyiapkan batasan kustom

Setelah membuat batasan khusus baru menggunakan Google Cloud CLI, Anda harus menyiapkannya agar tersedia untuk kebijakan organisasi di organisasi Anda. Untuk menyiapkan batasan kustom, gunakan perintah gcloud org-policies set-custom-constraint:
gcloud org-policies set-custom-constraint CONSTRAINT_PATH
Ganti CONSTRAINT_PATH dengan jalur lengkap ke file batasan kustom Anda. Contoh, /home/user/customconstraint.yaml. Setelah selesai, Anda akan menemukan batasan khusus sebagai kebijakan organisasi yang tersedia dalam daftar kebijakan organisasi Google Cloud. Untuk memverifikasi bahwa ada batasan kustom, gunakan perintah gcloud org-policies list-custom-constraints:
gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID
Ganti ORGANIZATION_ID dengan ID fasilitas organisasi Anda. Untuk informasi selengkapnya, lihat Melihat kebijakan organisasi.

Menerapkan batasan khusus

Anda dapat menerapkan batasan boolean dengan membuat kebijakan organisasi yang mereferensikannya, dan menerapkan kebijakan organisasi tersebut ke resource Google Cloud.

Konsol

Untuk menerapkan batasan boolean:

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

    Buka Organization policies

  2. Pilih pemilih project di bagian atas halaman.
  3. Dari pemilih project, pilih project yang kebijakan organisasinya ingin Anda tetapkan.
  4. Pilih batasan dari daftar di halaman Organization policies. Halaman Policy details untuk batasan tersebut akan muncul.
  5. Guna mengonfigurasi kebijakan organisasi untuk resource ini, klik Kelola kebijakan.
  6. Di halaman Edit policy, pilih Override parent's policy.
  7. Klik Tambahkan aturan.
  8. Di bagian Enforcement, pilih apakah penerapan kebijakan organisasi ini harus diaktifkan atau dinonaktifkan.
  9. Secara opsional, untuk membuat kebijakan organisasi bersyarat pada tag, klik Add condition. Perhatikan bahwa jika menambahkan aturan kondisional ke kebijakan organisasi, Anda harus menambahkan setidaknya satu aturan tanpa syarat atau kebijakan tidak dapat disimpan. Untuk detail selengkapnya, lihat Menetapkan kebijakan organisasi dengan tag.
  10. Jika ini adalah batasan kustom, Anda dapat mengklik Test changes untuk menyimulasikan efek kebijakan organisasi ini. Untuk informasi selengkapnya, lihat Menguji perubahan kebijakan organisasi dengan Policy Simulator.
  11. Untuk menyelesaikan dan menerapkan kebijakan organisasi, klik Tetapkan kebijakan. Kebijakan ini akan memerlukan waktu hingga 15 menit untuk diterapkan.

gcloud

Untuk membuat kebijakan organisasi yang menerapkan batasan boolean, buat file YAML kebijakan yang merujuk batasan tersebut:

      name: projects/PROJECT_ID/policies/CONSTRAINT_NAME
      spec:
        rules:
        - enforce: true
    

Ganti kode berikut:

  • PROJECT_ID: project tempat Anda ingin menerapkan batasan.
  • CONSTRAINT_NAME: nama yang Anda tentukan untuk batasan kustom. Contoh, custom.batchMustHaveSpecifiedCategoryLabel

Untuk menerapkan kebijakan organisasi yang berisi batasan, jalankan perintah berikut:

    gcloud org-policies set-policy POLICY_PATH
    

Ganti POLICY_PATH dengan jalur lengkap ke file YAML kebijakan organisasi Anda. Kebijakan ini memerlukan waktu hingga 15 menit untuk diterapkan.

Menguji batasan kustom

Contoh pembuatan batch berikut mengasumsikan batasan kustom telah dibuat dan diterapkan pada pembuatan batch untuk mewajibkan batch tersebut memiliki label "kategori" yang dilampirkan dengan nilai "retail", "ads", atau "service: ("category" in resource.labels) && (resource.labels['category'] in ['retail', 'ads', 'service']). Perhatikan bahwa label "kategori" dalam contoh tidak memiliki salah satu nilai yang diperlukan.

gcloud dataproc batches submit spark \
  --region us-west1
  --jars file:///usr/lib/spark/examples/jars/spark-examples.jar \
  --class org.apache.spark.examples.SparkPi  \
  --network default \
  --labels category=foo \
  -- 100

Contoh output:

Operation denied by custom org policies: ["customConstraints/custom.batchMustHaveSpecifiedCategoryLabel": ""Only allow Dataproc batch creation if it has a 'category' label with
  a 'retail', 'ads', or 'service' value""]

Batasan Serverless Dataproc pada resource dan operasi

Batasan kustom Dataproc Serverless berikut tersedia untuk digunakan saat Anda membuat (mengirimkan) beban kerja batch.

Umum

  • resource.labels

RuntimeConfig

  • resource.runtimeConfig.version
  • resource.runtimeConfig.containerImage
  • resource.runtimeConfig.properties

ExecutionConfig

  • resource.environmentConfig.executionConfig.serviceAccount
  • resource.environmentConfig.executionConfig.networkTags
  • resource.environmentConfig.executionConfig.kmsKey
  • resource.environmentConfig.executionConfig.stagingBucket

PeripheralsConfig

  • resource.environmentConfig.peripheralsConfig.metastoreService
  • resource.environmentConfig.peripheralsConfig.sparkHistoryServerConfig.dataprocCluster

Contoh batasan kustom untuk kasus penggunaan umum

Tabel berikut memberikan contoh batasan khusus batch Dataproc Serverless:

Deskripsi Sintaksis batasan
Batch harus melampirkan label "kategori" dengan nilai yang diizinkan.

    name: organizations/ORGANIZATION_ID/customConstraints/custom.batchMustHaveSpecifiedCategoryLabel
    resourceTypes:
    - dataproc.googleapis.com/Batch
    methodTypes:
    - CREATE
    condition: ("category" in resource.labels) && (resource.labels['category'] in ['retail', 'ads', 'service'])
    actionType: ALLOW
    displayName: Enforce batch "category" label requirement.
    description: Only allow batch creation if it attaches a "category" label with an allowable value.
Batch harus menetapkan versi runtime yang diizinkan.

    name: organizations/ORGANIZATION_ID/customConstraints/custom.batchMustUseAllowedVersion
    resourceTypes:
    - dataproc.googleapis.com/Batch
    methodTypes:
    - CREATE
    condition:  (has(resource.runtimeConfig.version)) && (resource.runtimeConfig.version in ["2.0.45", "2.0.48"])
    actionType: ALLOW
    displayName: Enforce batch runtime version.
    description: Only allow batch creation if it sets an allowable runtime version.
Batch tidak dapat menetapkan lebih dari 20 eksekutor awal Spark.

    name: organizations/ORGANIZATION_ID/customConstraints/custom.batchInitialExecutorMax20
    resourceTypes:
    - dataproc.googleapis.com/Batch
    methodTypes:
    - CREATE
    condition: (has(resource.runtimeConfig.properties)) && ('spark.executor.instances' in resource.runtimeConfig.properties)
     && (int(resource.runtimeConfig.properties['spark.executor.instances'])>20)
    actionType: DENY
    displayName: Enforce maximum number of batch Spark executor instances.
    description: Deny batch creation if it specifies more than 20 Spark executor instances.
Batch tidak dapat menetapkan lebih dari 20 eksekutor awal alokasi dinamis Spark.

    name: organizations/ORGANIZATION_ID/customConstraints/custom.batchDynamicAllocationInitialExecutorMax20
    resourceTypes:
    - dataproc.googleapis.com/Batch
    methodTypes:
    - CREATE
    condition: (has(resource.runtimeConfig.properties)) && ('spark.dynamicAllocation.initialExecutors' in resource.runtimeConfig.properties)
     && (int(resource.runtimeConfig.properties['spark.dynamicAllocation.initialExecutors'])>20)
    actionType: DENY
    displayName: Enforce maximum number of batch dynamic allocation initial executors.
    description: Deny batch creation if it specifies more than 20 Spark dynamic allocation initial executors.
Batch tidak boleh mengizinkan lebih dari 20 eksekutor alokasi dinamis.

    name: organizations/ORGANIZATION_ID/customConstraints/custom.batchDynamicAllocationMaxExecutorMax20
    resourceTypes:
    - dataproc.googleapis.com/Batch
    methodTypes:
    - CREATE
    condition: (resource.runtimeConfig.properties['spark.dynamicAllocation.enabled']=='false') || (('spark.dynamicAllocation.maxExecutors' in resource.runtimeConfig.properties) && (int(resource.runtimeConfig.properties['spark.dynamicAllocation.maxExecutors'])<=20))
    actionType: ALLOW
    displayName: Enforce batch maximum number of dynamic allocation executors.
    description:  Only allow batch creation if dynamic allocation is disabled or
    the maximum number of dynamic allocation executors is set to less than or equal to 20.
Batch harus menetapkan kunci KMS ke pola yang diizinkan.

    name: organizations/ORGANIZATION_ID/custom.batchKmsPattern
    resourceTypes:
    - dataproc.googleapis.com/Batch
    methodTypes:
    - CREATE
    condition:  matches(resource.environmentConfig.executionConfig.kmsKey, '^keypattern[a-z]$')
    actionType: ALLOW
    displayName: Enforce batch KMS Key pattern.
    description: Only allow batch creation if it sets the KMS key to an allowable pattern.
Batch harus menetapkan awalan bucket staging ke nilai yang diizinkan.

    name: organizations/ORGANIZATION_ID/customConstraints/custom.batchStagingBucketPrefix
    resourceTypes:
    - dataproc.googleapis.com/Batch
    methodTypes:
    - CREATE
    condition:  resource.environmentConfig.executionConfig.stagingBucket.startsWith(ALLOWED_PREFIX)
    actionType: ALLOW
    displayName: Enforce batch staging bucket prefix.
    description: Only allow batch creation if it sets the staging bucket prefix to ALLOWED_PREFIX.

Langkah selanjutnya