Membuat dan mengelola batasan kustom

Halaman ini menunjukkan cara mengaktifkan dan menggunakan batasan kustom dalam lingkungan cluster yang terpasang di GKE.Organization Policy Service Google Cloudmembantu Anda mengelola konfigurasi resource dan membuat pagar pembatas di lingkungan cloud Anda.

Ringkasan

Dengan kebijakan organisasi kustom, Anda dapat membuat kebijakan resource terperinci di seluruh lingkungan GKE Multi-Cloud untuk memenuhi persyaratan keamanan dan kepatuhan spesifik organisasi Anda. Anda juga dapat membuat kebijakan organisasi dalam mode uji coba untuk menguji kebijakan baru tanpa memengaruhi workload produksi.

Untuk mempelajari lebih lanjut kebijakan organisasi, lihat Pengantar Layanan Kebijakan Organisasi.

Sebelum memulai

Sebelum memulai, pastikan Anda memahami topik berikut:

Pewarisan kebijakan

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

Batasan

Sebelum Anda membuat batasan kustom, perhatikan batasan berikut:

  • Batasan kustom hanya dapat diterapkan pada metode CREATE atau UPDATE untuk resource cluster yang terpasang di GKE.
  • Batasan kustom yang baru diterapkan tidak otomatis berlaku untuk resource yang ada. Anda harus mengupdate resource yang ada untuk menerapkan batasan. Untuk menemukan resource yang ada dan perlu diperbarui, Anda dapat menerapkan kebijakan organisasi uji coba.
  • Untuk membuat batasan dan menerapkan kebijakan organisasi, Anda memerlukan peran IAM Organization Policy Administrator (roles/orgpolicy.policyAdmin) di organisasi Google Cloud Anda. Untuk mengetahui informasi selengkapnya tentang izin yang diperlukan untuk mengelola kebijakan organisasi dengan batasan khusus, lihat Peran yang diperlukan.

Harga

Kebijakan organisasi dan batasan kustom ditawarkan tanpa biaya.

Membuat batasan kustom

Batasan kustom harus ditentukan menggunakan kolom dalam spesifikasi API AttachedCluster, tidak termasuk kolom yang dijelaskan sebagai "Output only".

Membuat batasan kustom

Untuk membuat batasan khusus baru, tentukan batasan dalam file YAML dan terapkan batasan khusus di organisasi Anda menggunakan Google Cloud CLI. Batasan ini harus mencakup kebijakan spesifik yang ingin Anda terapkan di seluruh resource cluster yang terpasang di GKE.

  1. Buat file YAML untuk batasan khusus:

    name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
    resourceTypes:
    - gkemulticloud.googleapis.com/AttachedCluster
    methodTypes: 
    - CREATE
    condition: \"CONDITION\"
    actionType: ACTION
    displayName: DISPLAY_NAME
    description: DESCRIPTION
    

    Ganti kode berikut:

    • ORGANIZATION_ID : ID organisasi Anda, seperti 123456789.

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

    • CONDITION : kondisi yang ditulis berdasarkan representasi resource cluster yang terpasang. Kondisi ditulis dalam Common Expression Language (CEL). Kolom ini memiliki panjang maksimum 1.500 karakter. Misalnya, kondisi: "key" in resource.annotations && resource.annotations.key == "created-by".

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

    • DISPLAY_NAME : nama tampilan untuk batasan. Kolom ini memiliki panjang maksimum 200 karakter.

    • DESCRIPTION : deskripsi batasan yang akan ditampilkan sebagai pesan error saat kebijakan dilanggar, misalnya, "Allow new clusters only when certain annotations are set." Kolom ini memiliki panjang maksimum 2.000 karakter.

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

Mengaitkan batasan dengan resource Anda

Setelah membuat file YAML untuk batasan kustom baru, Anda harus menyiapkannya agar batasan tersebut tersedia untuk kebijakan organisasi.

  1. Untuk menyiapkan batasan kustom, gunakan perintah gcloud org-policies set-custom-constraint:

    gcloud org-policies set-custom-constraint PATH_TO_FILE
    

    Ganti PATH_TO_FILE dengan jalur definisi YAML batasan kustom Anda.

  2. Untuk memverifikasi bahwa batasan kustom telah dibuat, gunakan perintah gcloud org-policies list-custom-constraints:

    gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID
    

    Output akan mencantumkan kebijakan yang dibuat:

    CUSTOM_CONSTRAINT: custom.allowClusterCreateIfAnnotationPresent
    ACTION_TYPE: ALLOW
    METHOD_TYPES: CREATE
    RESOURCE_TYPES: gkemulticloud.googleapis.com/AttachedCluster
    DISPLAY_NAME: Allow new clusters only when certain annotations are set.
    

Menerapkan batasan khusus

Untuk menerapkan batasan khusus baru, buat kebijakan organisasi yang merujuk ke batasan tersebut, lalu terapkan kebijakan organisasi.

  1. Buat file YAML untuk kebijakan organisasi:

    name: RESOURCE_HIERARCHY/policies/POLICY_NAME
    spec:
      rules:
      - enforce: true
    

    Ganti kode berikut:

    • RESOURCE_HIERARCHY: lokasi kebijakan baru, yang memengaruhi cakupan penegakan. Gunakan hierarki resource Google Cloud sebagai panduan. Misalnya, jika Anda ingin menerapkan kebijakan pada project tertentu, gunakan projects/PROJECT_ID. Untuk menerapkan kebijakan di organisasi tertentu, gunakan organizations/ORGANIZATION_ID.

    • POLICY_NAME: nama kebijakan baru.

  2. Terapkan kebijakan:

    gcloud org-policies set-policy PATH_TO_POLICY
    

    Ganti PATH_TO_POLICY dengan jalur ke file definisi kebijakan Anda.

  3. Pastikan kebijakan ada:

    gcloud org-policies list --RESOURCE_FLAG=RESOURCE_ID
    

    Ganti kode berikut:

    • RESOURCE_FLAG: resource Google Cloud tempat Anda menerapkan kebijakan. Misalnya, project atau organisasi.

    • RESOURCE_ID: ID resource tempat Anda menerapkan kebijakan. Misalnya, project ID atau ID organisasi Anda.

    Outputnya mirip dengan hal berikut ini:

    CONSTRAINT: custom.allowClusterCreateIfAnnotationPresent
    LIST_POLICY: -
    BOOLEAN_POLICY: SET
    ETAG: CPjb27wGEOijhL4B-
    

Menguji kebijakan

Uji kebijakan organisasi dengan mendaftarkan cluster EKS di project yang dibatasi.

  1. Mendaftarkan cluster EKS dalam project yang dibatasi.

    gcloud container attached clusters register CLUSTER_NAME \
      --location=GOOGLE_CLOUD_REGION \
      --fleet-project=PROJECT_NUMBER \
      --platform-version=PLATFORM_VERSION \
      --distribution=eks \
      --issuer-url=ISSUER_URL \
      --context=KUBECONFIG_CONTEXT \
      --kubeconfig=KUBECONFIG_PATH
    
    
  2. Outputnya mirip dengan hal berikut ini:

    ERROR: (gcloud.container.attached.clusters.register) FAILED_PRECONDITION: Operation denied by org policy on resource 'projects/PROJECT_NUMBER/locations/GOOGLE_CLOUD_REGION': ["customConstraints/custom.allowClusterCreateIfAnnotationPresent": "Allow new clusters only when certain annotations are set."]
    
    '@type': type.googleapis.com/google.rpc.ErrorInfo
    domain: googleapis.com
    metadata:
      customConstraints: customConstraints/custom.allowClusterCreateIfAnnotationPresent
    service: gkemulticloud.googleapis.com
    reason: CUSTOM_ORG_POLICY_VIOLATION