Kebijakan organisasi memberi Anda kontrol terpusat dan terprogram atas resource organisasi. Sebagai administrator kebijakan organisasi, Anda dapat mengonfigurasi kebijakan di seluruh organisasi untuk mencapai manfaat berikut:
- Kontrol terpusat untuk mengonfigurasi batasan tentang cara penggunaan resource organisasi Anda.
- Menentukan dan menetapkan batasan bagi tim pengembangan Anda agar tetap berada dalam batas kepatuhan.
- Membantu Project Owner dan tim mereka bergerak cepat tanpa melanggar kepatuhan.
Google Distributed Cloud (GDC) dengan air gap tidak menyediakan UI konsol atau CLI khusus untuk membuat dan mengelola kebijakan organisasi. Anda harus menggunakan Kubernetes API atau kubectl CLI.
Perbedaan dari Identity and Access Management
Identity and Access Management (IAM) dan kebijakan organisasi menjalankan fungsi akses dan tata kelola yang saling melengkapi:
- IAM berfokus pada pemberian izin. Kebijakan ini menentukan siapa (anggota seperti pengguna, grup, atau akun layanan) yang dapat melakukan tindakan apa (peran) pada resource mana (cakupan resource). Izin yang diberikan melalui peran IAM bersifat tambahan dan tidak memiliki aturan penolakan.
- Kebijakan organisasi berfokus pada penetapan batasan. Kebijakan ini memungkinkan administrator mengonfigurasi batasan terprogram pada resource di seluruh organisasi, seperti menonaktifkan layanan tertentu atau membatasi modifikasi resource berdasarkan atribut subjek menggunakan kontrol akses berbasis atribut (ABAC). Kebijakan organisasi lebih diutamakan untuk memblokir operasi meskipun anggota memiliki peran IAM.
Sebelum memulai
Sebelum mengonfigurasi kebijakan organisasi, Anda harus meminta izin yang diperlukan dan menyiapkan lingkungan Anda.
Meminta peran IAM
Hubungi Admin Org IAM Anda untuk meminta peran IAM berikut berdasarkan tugas yang perlu Anda lakukan:
- Restricted Service Policy Admin
(
gdchrestrictedservice-policy-admin): membuat, memperbarui, dan menghapus kebijakan layanan yang dibatasi. - Restrict By Attributes Policy Admin
(
gdchrestrictbyattributes-policy-admin): membuat, memperbarui, dan menghapus kebijakan kontrol akses berbasis atribut.
Menyiapkan lingkungan Anda
Download dan instal gdcloud CLI, jika Anda belum melakukannya.
Buat file kubeconfig untuk mengonfigurasi akses CLI kubectl.
Mengonfigurasi kebijakan
Anda dapat mengonfigurasi dua jenis kebijakan organisasi di GDC:
- Kebijakan layanan yang dibatasi (
GDCHRestrictedService): membatasi layanan yang dapat Anda gunakan atau ubah dalam cluster. - Kebijakan kontrol akses berbasis atribut (
GDCHRestrictByAttributes): membatasi akses ke resource dalam cluster secara bersyarat berdasarkan atribut subjek yang dipetakan dari penyedia identitas Anda.
Mengonfigurasi kebijakan layanan yang dibatasi
Jenis kebijakan GDCHRestrictedService memungkinkan Anda membatasi layanan yang dapat digunakan atau diubah dalam cluster dengan memblokir API tertentu, seperti membatasi layanan ke project tertentu atau memblokir akses ke layanan baru saat Anda mengujinya. Buat kebijakan ini di cluster yang sama dengan resource layanan. Anda dapat membuat beberapa instance kebijakan dalam cluster untuk berbagai layanan atau project.
GDCHRestrictedService mendukung operasi CREATE, UPDATE, dan DELETE. Untuk membatasi operasi baca GET dan LIST, gunakan binding peran IAM untuk memberikan dan mencabut akses.
Konfigurasikan kebijakan layanan yang dibatasi:
Tentukan manifes kebijakan:
apiVersion: constraints.gatekeeper.sh/v1beta1 kind: GDCHRestrictedService metadata: name: POLICY_NAME spec: match: kinds: - apiGroups: - "API_GROUP" kinds: - "KIND" parameters: disabledOperations: - DISABLED_OPERATIONGanti kode berikut:
POLICY_NAME: nama kebijakan organisasi.API_GROUP: grup API layanan yang akan dibatasi, seperti yang tercantum dalam tabel layanan yang didukung berikut.KIND: jenis resource yang akan dibatasi, seperti yang tercantum dalam tabel layanan yang didukung berikut.DISABLED_OPERATION: grup operasi yang diblokir oleh kebijakan ini. Nilai yang diizinkan adalahCREATE,UPDATE, danDELETE. Nilai default untuk kolomdisabledOperationsadalah*. Untuk menonaktifkan layanan sepenuhnya, cantumkanCREATE,UPDATE, danDELETE(dan tentukan semua jenisnya).
Secara default, kebijakan ini berlaku di semua namespace dalam cluster. Untuk mencakup kebijakan ke namespace atau project tertentu, lihat Menentukan cakupan kebijakan organisasi dalam cluster.
Kebijakan
GDCHRestrictedServicemendukung subset layanan berikut di GDC:Layanan Grup API kinds Marketplace marketplace.gdc.googMarketplaceServiceVertex AI Workbench aiplatform.gdc.googNotebookLayanan Database - Postgres postgresql.dbadmin.gdc.googDBClusterBackupPlanImportRestore
Transfer Appliance system.gpc.gke.ioTransferApplianceRequestCadangan backup.gdc.googBackupRepositoryManagerDataproc Container untuk Spark (layanan Marketplace) sparkoperator.k8s.ioSparkApplicationJika layanan mencantumkan beberapa jenis dalam tabel (seperti Database Service), Anda hanya dapat menentukan jenis tertentu yang ingin dibatasi. Misalnya, Anda dapat memblokir operasi
Restoresambil terus mengizinkan operasiDBCluster.Contoh berikut membatasi update pada layanan marketplace:
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"Terapkan kebijakan menggunakan kubectl CLI:
kubectl --kubeconfig CLUSTER_KUBECONFIG apply -f POLICY_NAME.yamlGanti kode berikut:
CLUSTER_KUBECONFIG: file kubeconfig cluster tempat Anda ingin menerapkan kebijakanPOLICY_NAME: nama file kebijakan organisasi
Mengonfigurasi kebijakan kontrol akses berbasis atribut
Jenis kebijakan GDCHRestrictByAttributes memungkinkan Anda membuat kebijakan ABAC untuk
membatasi akses ke resource secara bersyarat berdasarkan atribut subjek. Misalnya,
Anda dapat menggunakan jenis kebijakan ini untuk membatasi operasi tulis atau ubah pada bucket
penyimpanan sehingga hanya pengguna atau akun layanan dengan atribut identitas tertentu
(seperti citizenship=USA atau citizenship=UK) yang dapat melakukannya.
Buat kebijakan ini di cluster yang sama dengan resource. Anda dapat membuat beberapa instance kebijakan dalam cluster untuk resource atau project yang berbeda.
Konfigurasikan kebijakan kontrol akses berbasis atribut:
Buat file JSON patch untuk memetakan atribut identitas kustom untuk resource
IdentityProviderConfigAnda:cat <<EOF > attributeMapping-patch.json { "CUSTOM_ATTRIBUTE": "assertion[\"CUSTOM_ATTRIBUTE\"]" } EOFGanti
CUSTOM_ATTRIBUTEdengan nama atribut identitas yang akan dipetakan, seperticitizenship.Patch resource
IdentityProviderConfigdi namespaceplatform:kubectl --kubeconfig CLUSTER_KUBECONFIG patch \ IdentityProviderConfig IDENTITY_PROVIDER_CONFIG_NAME \ -n platform --type=json \ -p '[{"op":"add","path":"/spec/oidc/attributeMapping", "value": '"$(cat attributeMapping-patch.json)"'}]'Ganti kode berikut:
CLUSTER_KUBECONFIG: file kubeconfig cluster tempat penyedia identitas beradaIDENTITY_PROVIDER_CONFIG_NAME: nama resourceIdentityProviderConfig
Tentukan manifes kebijakan:
apiVersion: constraints.global.gatekeeper.sh/v1beta1 kind: GDCHRestrictByAttributes metadata: name: POLICY_NAME spec: match: kinds: - apiGroups: - "API_GROUP" kinds: - "KIND" parameters: attributes: - CUSTOM_ATTRIBUTE attributeValues: - ALLOWED_ATTRIBUTE_VALUEGanti kode berikut:
POLICY_NAME: nama kebijakan organisasi.API_GROUP: grup API resource yang akan dibatasi, sepertiobject.gdc.goog.KIND: jenis resource yang akan dibatasi, sepertiBucket.CUSTOM_ATTRIBUTE: atribut subjek kustom yang dipetakan dari penyedia identitas, seperticitizenship.ALLOWED_ATTRIBUTE_VALUE: nilai yang diizinkan untuk atribut khusus, sepertiUSA. Permintaan dari subjek yang atributnya tidak cocok dengan salah satu nilai yang diizinkan akan ditolak.
Secara default, kebijakan ini berlaku di semua namespace dalam cluster. Untuk mencakup kebijakan ke namespace atau project tertentu, lihat Menentukan cakupan kebijakan organisasi dalam cluster.
Contoh berikut membatasi modifikasi resource
Bucketdi namespaceproject-fooke subjek dengan atributcitizenship=USAataucitizenship=UK:apiVersion: constraints.global.gatekeeper.sh/v1beta1 kind: GDCHRestrictByAttributes metadata: name: restrict-by-citizenship spec: match: scope: Namespaced kinds: - apiGroups: - "object.gdc.goog" kinds: - Bucket namespaces: - project-foo parameters: attributes: - "citizenship" attributeValues: - "USA" - "UK"Terapkan kebijakan menggunakan kubectl CLI:
kubectl --kubeconfig CLUSTER_KUBECONFIG apply -f POLICY_NAME.yamlGanti kode berikut:
CLUSTER_KUBECONFIG: file kubeconfig cluster tempat Anda ingin menerapkan kebijakanPOLICY_NAME: nama file kebijakan organisasi
Menentukan cakupan kebijakan organisasi dalam cluster
Saat menentukan kebijakan organisasi, tentukan apakah kebijakan tersebut akan memengaruhi semua namespace, hanya namespace tertentu, atau semua namespace kecuali daftar yang diberikan. 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 pencocokan 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
parameters:
disabledOperations:
- "UPDATE"
- "CREATE"
- "DELETE"
Me-roll back kebijakan yang ada
Untuk berhenti menerapkan kebijakan yang ada, hapus kebijakan tersebut menggunakan kubectl CLI. Gunakan file kubeconfig yang memberi Anda akses ke cluster tempat kebijakan ditentukan dan peran IAM yang sesuai dengan jenis kebijakan (seperti gdchrestrictedservice-policy-admin atau gdchrestrictbyattributes-policy-admin).
Menghapus kebijakan organisasi:
kubectl --kubeconfig CLUSTER_KUBECONFIG delete \
POLICY_TYPE/POLICY_NAME
Ganti kode berikut:
CLUSTER_KUBECONFIG: file kubeconfig cluster tempat kebijakan organisasi beradaPOLICY_TYPE: jenis kebijakan organisasi yang akan dihapus, sepertiGDCHRestrictedServiceatauGDCHRestrictByAttributesPOLICY_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 meluncurkannya, 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 dengankubectl --kubeconfig CLUSTER_KUBECONFIG get POLICY_TYPE/POLICY_NAME.warn: setara dengandryrun, kecuali bahwa pengujian 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"]