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 workload batch gagal memenuhi validasi batasan kustom seperti yang 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. Menyiapkan project
    1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
    2. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

      Buka pemilih project

    3. Make sure that billing is enabled for your Google Cloud project.

    4. Aktifkan API Dataproc Serverless.

      Mengaktifkan API

    5. Install the Google Cloud CLI.
    6. To initialize the gcloud CLI, run the following command:

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

      Buka pemilih project

    8. Make sure that billing is enabled for your Google Cloud project.

    9. Aktifkan API Dataproc Serverless.

      Mengaktifkan API

    10. Install the Google Cloud CLI.
    11. To initialize the gcloud CLI, run the following command:

      gcloud init
    12. Pastikan Anda mengetahui ID organisasi Anda.

Peran yang diperlukan

Untuk mendapatkan izin yang diperlukan untuk mengelola kebijakan organisasi, minta administrator 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 ke project, folder, dan organisasi.

Peran bawaan ini berisi izin yang diperlukan untuk mengelola kebijakan organisasi. Untuk melihat izin yang benar-benar diperlukan, luaskan 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 mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.

Membuat batasan khusus

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

Untuk 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 menghitung 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 mengetahui 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: "Menerapkan 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 'category' dengan nilai 'retail', 'ads', atau 'service'".

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

Menyiapkan batasan kustom

Setelah membuat file YAML untuk batasan khusus baru, 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. Contohnya, /home/user/customconstraint.yaml Setelah selesai, batasan khusus Anda akan tersedia sebagai kebijakan organisasi dalam daftar kebijakan organisasi Google Cloud Anda. 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 mengetahui informasi selengkapnya, lihat Melihat kebijakan organisasi.

Menerapkan batasan khusus

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

Konsol

  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. Dari daftar di halaman Organization policies, pilih batasan untuk melihat halaman Policy details untuk batasan tersebut.
  4. Untuk mengonfigurasi kebijakan organisasi untuk resource ini, klik Manage policy.
  5. Di halaman Edit policy, pilih Override parent's policy.
  6. Klik Add a rule.
  7. Di bagian Enforcement, pilih apakah penerapan kebijakan organisasi ini diaktifkan atau dinonaktifkan.
  8. 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 mengetahui informasi selengkapnya, lihat Menetapkan kebijakan organisasi dengan tag.
  9. Jika ini adalah batasan kustom, Anda dapat mengklik Uji perubahan untuk menyimulasikan efek kebijakan organisasi ini. Untuk mengetahui informasi selengkapnya, lihat Menguji perubahan kebijakan organisasi dengan Policy Simulator.
  10. Untuk menyelesaikan dan menerapkan kebijakan organisasi, klik Set policy. Kebijakan ini 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 bahwa batasan kustom telah dibuat dan diterapkan pada pembuatan batch untuk mewajibkan batch memiliki label "category" 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 Dataproc Serverless pada resource dan operasi

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

Umum

  • resource.labels

PySparkBatch

  • resource.pysparkBatch.mainPythonFileUri
  • resource.pysparkBatch.args
  • resource.pysparkBatch.pythonFileUris
  • resource.pysparkBatch.jarFileUris
  • resource.pysparkBatch.fileUris
  • resource.pysparkBatch.archiveUris

SparkBatch

  • resource.sparkBatch.mainJarFileUri
  • resource.sparkBatch.mainClass
  • resource.sparkBatch.args
  • resource.sparkBatch.jarFileUris
  • resource.sparkBatch.fileUris
  • resource.sparkBatch.archiveUris

SparRBatch

  • resource.sparkRBatch.mainRFileUri
  • resource.sparkRBatch.args
  • resource.sparkRBatch.fileUris
  • resource.sparkRBatch.archiveUris

SparkSqlBatch

  • resource.sparkSqlBatch.queryFileUri
  • resource.sparkSqlBatch.queryVariables
  • resource.sparkSqlBatch.jarFileUris

RuntimeConfig

  • resource.runtimeConfig.version
  • resource.runtimeConfig.containerImage
  • resource.runtimeConfig.properties
  • resource.runtimeConfig.repositoryConfig.pypiRepositoryConfig.pypiRepository
  • resource.runtimeConfig.autotuningConfig.scenarios
  • resource.runtimeConfig.cohort

ExecutionConfig

  • resource.environmentConfig.executionConfig.serviceAccount
  • resource.environmentConfig.executionConfig.networkUri
  • resource.environmentConfig.executionConfig.subnetworkUri
  • resource.environmentConfig.executionConfig.networkTags
  • resource.environmentConfig.executionConfig.kmsKey
  • resource.environmentConfig.executionConfig.idleTtl
  • resource.environmentConfig.executionConfig.ttl
  • 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 kustom batch Dataproc Serverless:

Deskripsi Sintaksis batasan
Batch harus melampirkan label "category" 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.
Harus menggunakan SparkSQL.
    name: organizations/ORGANIZATION_ID/customConstraints/custom.batchMustUseSparkSQL
    resourceTypes:
    - dataproc.googleapis.com/Batch
    methodTypes:
    - CREATE
    condition: (has(resource.sparkSqlBatch))
    actionType: ALLOW
    displayName: Enforce batch only use SparkSQL Batch.
    description: Only allow creation of SparkSQL Batch.
Batch harus menetapkan TTL kurang dari 2 jam.
    name: organizations/ORGANIZATION_ID/customConstraints/custom.batchMustSetLessThan2hTtl
    resourceTypes:
    - dataproc.googleapis.com/Batch
    methodTypes:
    - CREATE
    condition:  (has(resource.environmentConfig.executionConfig.ttl)) && (resource.environmentConfig.executionConfig.ttl <= duration('2h'))
    actionType: ALLOW
    displayName: Enforce batch TTL.
    description: Only allow batch creation if it sets an allowable TTL.
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.
Setelan memori eksekutor batch harus diakhiri dengan akhiran 'm' dan kurang dari 20.000 m.
    name: organizations/ORGANIZATION_ID/customConstraints/custom.batchExecutorMemoryMax
    resourceTypes:
    - dataproc.googleapis.com/Batch
    methodTypes:
    - CREATE
    condition:  ('spark.executor.memory' in resource.runtimeConfig.properties) && (resource.runtimeConfig.properties["spark.executor.memory"].endsWith('m')) && (int(resource.runtimeConfig.properties["spark.executor.memory"].split('m')[0])<20000)
    actionType: ALLOW
    displayName: Enforce batch executor maximum memory.
    description: Only allow batch creation if the executor memory setting ends with an 'm' suffix and is less than 20000 m.

Langkah selanjutnya