Mengonfigurasi kebijakan organisasi

Kebijakan organisasi memberi Anda kontrol terpusat dan terprogram atas resource organisasi. Sebagai administrator kebijakan organisasi, Anda dapat mengonfigurasi kebijakan di seluruh organisasi.

Di Google Distributed Cloud (GDC) dengan air gap versi ini, tidak ada UI atau CLI untuk kebijakan organisasi. Anda harus menggunakan API atau CLI kubectl untuk mengelolanya.

Manfaat

Mengonfigurasi kebijakan organisasi memberikan beberapa manfaat:

  • Kontrol terpusat untuk mengonfigurasi batasan tentang cara penggunaan resource organisasi Anda.
  • Menentukan dan menetapkan batas aman bagi tim pengembangan Anda agar tetap berada dalam batas kepatuhan.
  • Membantu pemilik project dan tim mereka bergerak cepat tanpa melanggar kepatuhan.

Perbedaan dari Identity and Access Management

Identity and Access Management berfokus pada siapa, dan memungkinkan administrator memberikan otorisasi kepada pihak yang dapat mengambil tindakan atas resource tertentu berdasarkan izin.

Kebijakan organisasi berfokus pada apa, dan memungkinkan administrator menetapkan batasan pada resource tertentu untuk menentukan cara mengonfigurasinya.

Daftar jenis kebijakan organisasi yang tersedia

Dalam rilis GDC ini, Anda dapat menggunakan jenis kebijakan berikut.

GDCHRestrictedService

Jenis kebijakan GDCHRestrictedService memungkinkan Anda membatasi layanan yang dapat digunakan di GDC. Jika diterapkan, kebijakan ini akan mencegah penggunaan API yang dirujuknya. Misalnya, Anda dapat menggunakan jenis kebijakan ini untuk membatasi penggunaan layanan tertentu ke project tertentu. Anda juga dapat menggunakan kebijakan ini untuk membatasi sepenuhnya akses ke layanan GDC baru yang ingin Anda uji sebelum mengizinkan tim Anda menggunakannya.

Buat kebijakan ini di cluster yang sama dengan resource layanan. Anda dapat membuat beberapa instance kebijakan ini untuk layanan atau project yang berbeda.

Berikut adalah template untuk kebijakan ini:

apiVersion: constraints.gatekeeper.sh/v1beta1
kind: GDCHRestrictedService
metadata:
  name: POLICY_NAME
spec:
  match:
    MATCH_SCHEMA
  parameters:
    disabledOperations:
      - DISABLED_OPERATION

Ganti kode berikut:

  • POLICY_NAME: nama kebijakan organisasi.

  • MATCH_SCHEMA: resource yang akan dicocokkan untuk batasan ini. Lihat bagian Menentukan cakupan kebijakan organisasi dalam cluster untuk mengetahui informasi selengkapnya.

  • DISABLED_OPERATION: grup operasi yang diblokir oleh kebijakan ini. Nilai yang diizinkan adalah CREATE dan UPDATE. Nilai default untuk kolom disabledOperations adalah *.

Kebijakan GDCHRestrictedService hanya mendukung operasi UPDATE dan CREATE. Untuk membatasi operasi GET, LIST, dan DELETE, sebaiknya gunakan IAM untuk menetapkan peran.

Kebijakan GDCHRestrictedService hanya mendukung subset layanan yang tersedia berikut di GDC.

Layanan Grup API jenis
Marketplace marketplace.gdc.goog MarketplaceService
Vertex AI Workbench aiplatform.gdc.goog Notebook
Database Service - Postgres postgresql.dbadmin.gdc.goog
  • DBCluster
  • BackupPlan
  • Import
  • Restore
Database Service - Oracle oracle.dbadmin.gdc.goog
  • DBCluster
  • BackupPlan
  • Import
Transfer Appliance system.gpc.gke.io TransferApplianceRequest
Cadangan backup.gdc.goog BackupRepositoryManager
Dataproc Container for Spark (Layanan Marketplace) sparkoperator.k8s.io SparkApplication

Anda tidak harus menentukan semua jenis untuk layanan tertentu. Anda dapat membatasi penggunaan subset fitur layanan dengan hanya menentukan jenis yang sesuai.

Misalnya, untuk membatasi update pada layanan marketplace, buat kebijakan berikut:

apiVersion: constraints.gatekeeper.sh/v1beta1
kind: GDCHRestrictedService
metadata:
  name: no-update-to-marketplace-service
spec:
  match:
    kinds:
    - apiGroups:
      - "marketplace.gdc.goog"
      kinds:
      - MarketplaceService
  parameters:
    disabledOperations:
      - "UPDATE"

Kebijakan ini mencegah operasi UPDATE apa pun pada grup API marketplace.gdc.goog apa pun dengan nilai MarketplaceService untuk jenisnya. Akibatnya, kebijakan ini mencegah siapa pun mengubah layanan Marketplace.

Untuk menonaktifkan layanan sepenuhnya, cantumkan CREATE dan UPDATE dalam parameter disabledOperations, dan cantumkan semua jenis yang didokumentasikan di sini.

Memberikan peran IAM untuk mengelola kebijakan organisasi

Setiap kebijakan organisasi memiliki peran IAM terkait. Berikan peran IAM kepada pengguna dan grup yang ingin Anda kelola kebijakan organisasi tertentu tersebut. Untuk mengizinkan pengguna atau grup membuat, memperbarui, atau menghapus kebijakan berjenis GDCHRestrictedService, tetapkan peran IAM gdchrestrictedservice-policy-manager kepada pengguna atau grup tersebut.

Menentukan cakupan kebijakan organisasi dalam cluster

Saat menentukan kebijakan organisasi, putuskan apakah kebijakan tersebut harus memengaruhi semua namespace, hanya namespace tertentu, atau semua namespace kecuali daftar tertentu. Untuk mencapai hal ini, gunakan kombinasi parameter .spec.match.excludedNamespaces, .spec.match.namespaceSelector, .spec.match.namespaces, dan .spec.match.scope dari definisi kebijakan.

Baca halaman bagian kecocokan kebijakan organisasi untuk mempelajari parameter ini lebih lanjut. Misalnya, untuk mengizinkan pembuatan database hanya di namespace yang memiliki label owner: dba-team, buat kebijakan berikut:

apiVersion: constraints.gatekeeper.sh/v1beta1
kind: GDCHRestrictedService
metadata:
  name: db-restricted-to-dbas
spec:
  match:
    scope: Namespaced
    namespaceSelector:
      matchExpressions:
      # We are restricting the use of the service in namespaces that
      # don't have the owner: dba-team label
      - key: owner
        operator: NotIn
        values:
        - dba-team
    kinds:
    - apiGroups:
      - "postgresql.dbadmin.gdc.goog"
      kinds:
      - DBCluster
      - BackupPlan
      - Import
      - Restore
    - apiGroups:
      - "oracle.dbadmin.gdc.goog"
      kinds:
      - DBCluster
      - BackupPlan
      - Import
  parameters:
    disabledOperations:
      - "UPDATE"
      - "CREATE"

Mengembalikan kebijakan yang ada

Untuk berhenti menerapkan kebijakan yang ada, hapus kebijakan tersebut menggunakan CLI kubectl. Gunakan file kubeconfig yang memberi Anda akses ke cluster tempat kebijakan ditentukan dan ke peran IAM gdchrestrictedservice-policy-manager.

Untuk menghapus kebijakan organisasi, jalankan:

kubectl --kubeconfig CLUSTER_KUBECONFIG delete \
    GDCHRestrictedService/POLICY_NAME

Ganti kode berikut:

  • CLUSTER_KUBECONFIG: file kubeconfig dari cluster tempat kebijakan organisasi berada.

  • POLICY_NAME: nama kebijakan organisasi yang akan dihapus.

Menguji kebijakan dalam mode audit

Anda dapat menguji kebijakan tanpa menerapkannya. Uji kebijakan untuk memastikan bahwa kebijakan tidak merusak sistem yang ada sebelum diluncurkan, atau untuk mendapatkan perkiraan seberapa luas perilaku tersebut. Untuk menambahkan pengujian, tambahkan enforcementAction ke definisi kebijakan Anda. Ada tiga kemungkinan nilai untuk parameter ini:

  • deny: kebijakan diterapkan. Ini adalah setelan default.
  • dryrun: tindakan diizinkan, tetapi Anda dapat melihat bahwa ada pelanggaran kebijakan di log audit dan status kebijakan. Periksa pelanggaran dengan kubectl --kubeconfig CLUSTER_KUBECONFIG get POLICY_TYPE/POLICY_NAME.
  • warn: setara dengan dryrun, tetapi pengujian ini juga menampilkan peringatan sebagai respons terhadap permintaan yang memicu pelanggaran kebijakan.

Misalnya, untuk menguji kebijakan yang menonaktifkan Marketplace, buat kebijakan berikut:

apiVersion: constraints.gatekeeper.sh/v1beta1
kind: GDCHRestrictedService
metadata:
  name: disable-marketplace-service-project-alice
Spec:
  enforcementAction: warn
  match:
    kinds:
      - apiGroups: ["marketplace.gdc.goog"]
        kinds: ["MarketplaceService"]