Kebijakan organisasi memberi Anda kontrol terpusat dan terprogram atas resource organisasi. Sebagai administrator kebijakan organisasi, Anda dapat mengonfigurasi kebijakan di seluruh organisasi untuk mendapatkan manfaat berikut:
- 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.
Google Distributed Cloud (GDC) yang terisolasi 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 batas aman. Kebijakan ini memungkinkan administrator mengonfigurasi pembatasan 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 IAM Organisasi Anda untuk meminta peran IAM berikut berdasarkan tugas yang perlu Anda lakukan:
- Admin Kebijakan Layanan yang Dibatasi
(
gdchrestrictedservice-policy-admin): membuat, memperbarui, dan menghapus kebijakan layanan yang dibatasi. - Admin Kebijakan Pembatasan Berdasarkan Atribut
(
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 kubectl CLI.
Mengonfigurasi kebijakan
Anda dapat mengonfigurasi dua jenis kebijakan organisasi di GDC:
- Kebijakan layanan terbatas (
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 terbatas
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.
Mengonfigurasi kebijakan layanan terbatas:
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(serta 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 subkumpulan layanan berikut di GDC:Layanan Grup API jenis Marketplace marketplace.gdc.googMarketplaceServiceVertex AI Workbench aiplatform.gdc.googNotebookDatabase Service - Postgres postgresql.dbadmin.gdc.googDBClusterBackupPlanImportRestore
Transfer Appliance system.gpc.gke.ioTransferApplianceRequestCadangan backup.gdc.googBackupRepositoryManagerKontainer Dataproc untuk Spark (Layanan Marketplace) sparkoperator.k8s.ioSparkApplicationJika layanan mencantumkan beberapa jenis dalam tabel (seperti Layanan Database), Anda hanya dapat menentukan jenis individual 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 CLI kubectl:
kubectl --kubeconfig CLUSTER_KUBECONFIG apply -f POLICY_NAME.yamlGanti kode berikut:
CLUSTER_KUBECONFIG: file kubeconfig dari 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 di cluster untuk resource atau project yang berbeda.
Mengonfigurasi 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 kustom, 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-foountuk 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 CLI kubectl:
kubectl --kubeconfig CLUSTER_KUBECONFIG apply -f POLICY_NAME.yamlGanti kode berikut:
CLUSTER_KUBECONFIG: file kubeconfig dari 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 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 lebih lanjut parameter ini. 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"
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 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 dari 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 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 dengankubectl --kubeconfig CLUSTER_KUBECONFIG get POLICY_TYPE/POLICY_NAME.warn: setara dengandryrun, tetapi 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"]