Halaman ini menunjukkan cara menginstal Policy Controller. Pengontrol Kebijakan memeriksa, mengaudit, dan menerapkan kepatuhan cluster Anda terhadap kebijakan yang terkait dengan keamanan, peraturan, atau aturan bisnis.
Halaman ini ditujukan untuk administrator IT dan Operator yang ingin memastikan bahwa semua resource yang berjalan dalam platform cloud memenuhi persyaratan kepatuhan organisasi dengan menyediakan dan mempertahankan otomatisasi untuk mengaudit atau menerapkan. Untuk mempelajari lebih lanjut peran umum dan contoh tugas yang kami referensikan dalam konten Google Cloud, lihat Peran dan tugas pengguna GKE Enterprise umum.
Pengontrol Kebijakan tersedia jika Anda menggunakan edisi Google Kubernetes Engine (GKE) Enterprise. Untuk mempelajari lebih lanjut, lihat Harga edisi Enterprise Google Kubernetes Engine (GKE).
Sebelum memulai
Sebelum memulai, pastikan Anda telah menjalankan tugas berikut:
- Instal dan lakukan inisialisasi Google Cloud CLI, yang menyediakan perintah
gcloud
,kubectl
, dannomos
yang digunakan dalam petunjuk ini. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankangcloud components update
. Jika Anda menggunakan Cloud Shell, Google Cloud CLI sudah terinstal. Pastikan Open Policy Agent Gatekeeper open source tidak diinstal di cluster Anda. Jika demikian, uninstal Gatekeeper sebelum menginstal Policy Controller.
Aktifkan API yang diperlukan:
console
Aktifkan Policy Controller API.
gcloud
Jalankan perintah berikut:
gcloud services enable anthos.googleapis.com anthospolicycontroller.googleapis.com
Buat, atau pastikan Anda memiliki akses ke, cluster yang menjalankan Kubernetes versi 1.14.x atau yang lebih baru. Pengontrol Kebijakan mungkin tampak berjalan di versi Kubernetes sebelum 1.14.x, tetapi produk tidak berperilaku dengan benar.
Berikan peran IAM yang diperlukan kepada pengguna yang mendaftarkan cluster.
Jika Anda berencana menggunakan Google Cloud CLI untuk mengonfigurasi Policy Controller, daftarkan cluster Anda ke fleet sekarang. Jika Anda berencana menggunakan konsol Google Cloud, daftarkan cluster saat Anda menginstal Policy Controller.
Jika Anda menggunakan cluster yang terpasang GKE, pastikan cluster AKS Anda tidak memiliki add-on Azure Policy dan hindari pemberian label pada namespace dengan kunci
control-plane
.Jika Anda menggunakan Google Distributed Cloud di VMware atau bare metal, pastikan Anda menginstal Policy Controller di cluster pengguna. Pengontrol Kebijakan tidak dapat diinstal di cluster admin.
Menginstal Pengontrol Kebijakan
Mulai versi 1.16.0, jika menggunakan Google Cloud CLI, Anda dapat menginstal dan mengelola Policy Controller secara langsung (direkomendasikan).
Mengonfigurasi Pengontrol Kebijakan melalui objek ConfigManagement
tidak lagi
direkomendasikan.
Konsol
Untuk menginstal Policy Controller di konsol Google Cloud, selesaikan langkah-langkah berikut:
- Di konsol Google Cloud, buka halaman Kebijakan GKE Enterprise di bagian Posture Management.
Klik add Configure Policy Controller.
Opsional: Untuk mengubah setelan armada default, klik Sesuaikan setelan armada. Pada dialog yang muncul, lakukan hal berikut:
- Di bagian Tambahkan/Edit paket kebijakan, sertakan atau kecualikan paket kebijakan dengan mengklik tombol yang relevan.
Di bagian Edit Policy Controller configuration, lakukan hal berikut:
- Untuk mengaktifkan mutation webhook, centang kotak Enable mutation webhook. Fitur ini tidak kompatibel dengan cluster Autopilot.
- Di kotak Interval audit, masukkan periode dalam detik antara dua audit berturut-turut.
Di kotak Namespace yang dapat dikecualikan, masukkan daftar namespace. Pengontrol Kebijakan mengabaikan objek dalam namespace ini.
Praktik terbaik: Mengecualikan namespace sistem untuk menghindari error di lingkungan Anda. Anda dapat menemukan petunjuk untuk mengecualikan namespace dan daftar namespace umum yang dibuat oleh layanan Google Cloud di halaman Exclude namespaces.
Untuk mengaktifkan batasan referensi, pilih kotak centang Aktifkan Template Batasan yang merujuk ke objek selain objek yang sedang dievaluasi.
Dalam daftar Version, pilih versi Policy Controller yang ingin Anda gunakan.
Klik Simpan perubahan.
Klik Konfigurasikan.
Pada dialog konfirmasi, klik Confirm. Jika Anda belum mengaktifkan Pengontrol Kebijakan sebelumnya, mengklik Konfirmasi akan mengaktifkan
anthospolicycontroller.googleapis.com
API dan menginstal Pengontrol Kebijakan di cluster Anda.Opsional: Sinkronkan cluster yang ada ke setelan default:
- Di tab Setelan, klik Sinkronkan ke setelan armada.
- Dalam daftar Clusters in the fleet, pilih cluster yang ingin Anda sinkronkan, lalu klik Sync to fleet settings. Operasi ini dapat memerlukan waktu beberapa menit untuk selesai.
Anda akan dialihkan ke tab Setelan Pengontrol Kebijakan. Saat Pengontrol Kebijakan diinstal dan dikonfigurasi di cluster Anda, kolom status akan menampilkan Diinstal check_circle. Proses ini dapat memerlukan waktu beberapa menit.
gcloud policyController
Aktifkan Pengontrol Kebijakan dengan menjalankan perintah berikut:
gcloud container fleet policycontroller enable \
--memberships=MEMBERSHIP_NAME
Anda dapat menetapkan kolom tambahan untuk mengonfigurasi Pengontrol Kebijakan. Misalnya,
Anda mungkin ingin memberi tahu Pengontrol Kebijakan untuk mengecualikan beberapa namespace dari penerapan.
Untuk mengetahui daftar lengkap kolom yang dapat Anda konfigurasi, lihat
dokumentasi Google Cloud CLI Pengontrol Kebijakan
atau jalankan gcloud container fleet policycontroller enable --help
.
Tetapkan setelan tingkat armada untuk Pengontrol Kebijakan dengan menyelesaikan langkah-langkah berikut:
Buat file bernama
fleet-default.yaml
yang berisi konfigurasi default untuk Pengontrol Kebijakan. KolominstallSpec
wajib diisi untuk mengaktifkan default tingkat armada. Contoh ini menunjukkan opsi yang dapat Anda konfigurasi:# cat fleet-default.yaml policyControllerHubConfig: installSpec: INSTALL_SPEC_ENABLED # Uncomment to set default deployment-level configurations. # deploymentConfigs: # admission: # containerResources: # limits: # cpu: 1000m # memory: 8Gi # requests: # cpu: 500m # memory: 4Gi # Uncomment to set policy bundles that you want to install by default. # policyContent: # bundles: # cis-k8s-v1.5.1: # exemptedNamespaces: # - "namespace-name" # Uncomment to exempt namespaces from admission. # exemptableNamespaces: # - "namespace-name" # Uncomment to enable support for referential constraints # referentialRulesEnabled: true # Uncomment to disable audit, adjust value to set audit interval # auditIntervalSeconds: 0 # Uncomment to log all denies and dryrun failures # logDeniesEnabled: true # Uncomment to enable mutation # mutationEnabled: true # Uncomment to adjust the value to set the constraint violation limit # constraintViolationLimit: 20 # ... other fields ...
Praktik terbaik: Mengecualikan namespace sistem untuk menghindari error di lingkungan Anda. Anda dapat menemukan petunjuk untuk mengecualikan namespace dan daftar namespace umum yang dibuat oleh layanan Google Cloud di halaman Exclude namespaces.
Terapkan konfigurasi default ke fleet Anda:
gcloud container fleet policycontroller enable \ --fleet-default-member-config=fleet-default.yaml
Untuk memverifikasi bahwa konfigurasi telah diterapkan, jalankan perintah berikut:
gcloud container fleet policycontroller describe
Untuk menghapus konfigurasi default tingkat armada, jalankan perintah berikut:
gcloud container fleet policycontroller enable \ --no-fleet-default-member-config
gcloud ConfigManagement
Siapkan konfigurasi dengan membuat manifes
apply-spec.yaml
baru atau menggunakan manifes yang sudah ada. Dengan menggunakan manifes yang ada, Anda dapat mengonfigurasi cluster dengan setelan yang sama dengan yang digunakan oleh cluster lain.Membuat manifes baru
Untuk mengonfigurasi Policy Controller dengan setelan baru untuk cluster Anda, buat file bernama
apply-spec.yaml
dan salin file YAML berikut ke dalamnya:# apply-spec.yaml applySpecVersion: 1 spec: policyController: # Set to true to install and enable Policy Controller enabled: true # Uncomment to prevent the template library from being installed # templateLibraryInstalled: false # Uncomment to enable support for referential constraints # referentialRulesEnabled: true # Uncomment to disable audit, adjust value to set audit interval # auditIntervalSeconds: 0 # Uncomment to log all denies and dryrun failures # logDeniesEnabled: true # Uncomment to enable mutation # mutationEnabled: true # Uncomment to exempt namespaces # exemptableNamespaces: ["namespace-name"] # Uncomment to change the monitoring backends # monitoring: # backends: # - cloudmonitoring # - prometheus # ...other fields...
Praktik terbaik: Mengecualikan namespace sistem untuk menghindari error di lingkungan Anda. Anda dapat menemukan petunjuk untuk mengecualikan namespace dan daftar namespace umum yang dibuat oleh layanan Google Cloud di halaman Exclude namespaces.
Anda harus menambahkan kolom
spec.policyController
dan menetapkan nilaienabled
ketrue
. Anda dapat memilih untuk mengaktifkan fitur Pengontrol Kebijakan lainnya. Namun, dukungan untuk batasan referensi dinonaktifkan secara default. Sebelum mengaktifkannya, pastikan Anda memahami ketentuan tentang konsistensi akhir.Menggunakan manifes yang ada
Untuk mengonfigurasi cluster dengan setelan yang sama dengan yang digunakan oleh cluster lain, ambil setelan dari cluster terdaftar:
gcloud alpha container fleet config-management fetch-for-apply \ --membership=MEMBERSHIP_NAME \ --project=PROJECT_ID \ > CONFIG_YAML_PATH
Ganti kode berikut:
MEMBERSHIP_NAME
: nama keanggotaan cluster terdaftar yang memiliki setelan Pengontrol Kebijakan yang ingin Anda gunakanPROJECT_ID
: project ID AndaCONFIG_YAML_PATH
: jalur keapply-spec.yaml
file
Terapkan file
apply-spec.yaml
:gcloud beta container fleet config-management apply \ --membership=MEMBERSHIP_NAME \ --config=CONFIG_YAML \ --project=PROJECT_ID
Ganti kode berikut:
MEMBERSHIP_NAME
: nama keanggotaan cluster terdaftar yang memiliki setelan Pengontrol Kebijakan yang ingin Anda gunakan.CONFIG_YAML
: tambahkan jalur ke fileapply-spec.yaml
Anda.PROJECT_ID
: tambahkan project ID Anda.
Pod dibuat dan Pengontrol Kebijakan mulai memeriksa dan menerapkan batasan.
Memverifikasi penginstalan Pengontrol Kebijakan
Setelah menginstal Pengontrol Kebijakan, Anda dapat memverifikasi bahwa penginstalan tersebut berhasil.
Konsol
Selesaikan langkah-langkah berikut:
- Di konsol Google Cloud, buka halaman Kebijakan GKE Enterprise di bagian Posture Management.
- Di tab Settings, di tabel cluster, periksa kolom Policy controller status. Penginstalan yang berhasil memiliki status Diinstal check_circle.
gcloud policyController
Jalankan perintah berikut:
gcloud container fleet policycontroller describe --memberships=MEMBERSHIP_NAME
Penginstalan yang berhasil akan menampilkan membershipStates: MEMBERSHIP_NAME: policycontroller: state: ACTIVE
.
gcloud ConfigManagement
Jalankan perintah berikut:
gcloud beta container fleet config-management status \
--project=PROJECT_ID
Ganti PROJECT_ID
dengan ID project Anda.
Anda akan melihat output yang mirip dengan contoh berikut ini:
Name Status Last_Synced_Token Sync_Branch Last_Synced_Time Policy_Controller
CLUSTER_NAME SYNCED a687c2c 1.0.0 2021-02-17T00:15:55Z INSTALLED
Penginstalan yang berhasil memiliki status INSTALLED
di kolom Pengontrol Kebijakan.
Memverifikasi penginstalan library template batasan
Saat Anda menginstal Pengontrol Kebijakan, library template batasan akan diinstal secara default. Penginstalan ini dapat memerlukan waktu beberapa menit. Anda dapat memverifikasi bahwa library template berhasil diselesaikan.
Konsol
Selesaikan langkah-langkah berikut:
- Di konsol Google Cloud, buka halaman Kebijakan GKE Enterprise di bagian Posture Management.
- Di tab Settings, di tabel cluster, pilih nomor yang tercantum di kolom Bundles installed. Di panel Status konten kebijakan, penginstalan library template yang berhasil akan memiliki status Terinstal check_circle.
gcloud
Jalankan perintah berikut:
kubectl get constrainttemplates
Anda akan melihat output yang mirip dengan contoh berikut ini:
NAME AGE k8sallowedrepos 84s k8scontainerlimits 84s k8spspallowprivilegeescalationcontainer 84s ...[OUTPUT TRUNCATED]...
Jika setiap template batasan diinstal dengan benar, kolom
status.created
-nya adalah true
.
Interaksi Pengontrol Kebijakan dengan Config Sync
Jika menggunakan Policy Controller dengan Config Sync, Anda harus mengetahui interaksi berikut dengan resource yang disimpan di sumber tepercaya, seperti repositori Git, yang disinkronkan oleh Config Sync:
Anda tidak dapat menyinkronkan template batasan yang juga merupakan bagian dari library template kecuali jika library template batasan dinonaktifkan.
Jika ingin menyinkronkan resource
Config
yang disimpan dalam namespacegatekeeper-system
, Anda hanya perlu menentukan resourceConfig
di sumber tepercaya.gatekeeper-system
Namespace
tidak boleh ditentukan dengangatekeeper-system
.
Mengelola library template batasan
Untuk informasi tentang cara meng-uninstal atau menginstal template batasan, batasan terkait, atau library template batasan, lihat Membuat batasan.
Mengecualikan namespace dari penerapan
Anda dapat mengonfigurasi Pengontrol Kebijakan untuk mengabaikan objek dalam namespace. Untuk informasi selengkapnya, lihat Mengecualikan namespace dari Pengontrol Kebijakan.
Mengubah resource
Pengontrol Kebijakan juga berfungsi sebagai webhook yang berubah. Untuk mengetahui informasi selengkapnya, lihat Mengubah resource.
Melihat versi Pengontrol Kebijakan
Untuk mengetahui versi Pengontrol Kebijakan Gatekeeper yang digunakan, lihat tag gambar dengan menjalankan perintah berikut:
kubectl get deployments -n gatekeeper-system gatekeeper-controller-manager \
-o="jsonpath={.spec.template.spec.containers[0].image}"
Tag Git (atau hash) yang digunakan untuk mem-build Gatekeeper dan nomor versi Operator ConfigManagement disertakan dalam tag image sebagai berikut:
.../gatekeeper:VERSION_NUMBER-GIT_TAG.gBUILD_NUMBER
Misalnya, untuk gambar berikut:
gcr.io/config-management-release/gatekeeper:anthos1.3.2-480baac.g0
anthos1.3.2
adalah nomor versi.480baac
adalah tag Git.0
adalah nomor build.
Mengupgrade Pengontrol Kebijakan
Sebelum mengupgrade Pengontrol Kebijakan, periksa catatan rilis untuk mengetahui detail tentang apa saja yang berubah di antara versi.
Untuk mengupgrade Policy Controller, selesaikan langkah-langkah berikut:
Konsol
- Di konsol Google Cloud, buka halaman Kebijakan GKE Enterprise di bagian Posture Management.
- Di tab Setelan, di samping cluster yang versinya ingin Anda upgrade, pilih edit Edit konfigurasi.
- Luaskan menu Edit Policy Controller configuration.
- Dari menu drop-down Version, pilih versi yang ingin Anda upgrade.
- Klik Simpan perubahan.
gcloud
Jalankan perintah berikut:
gcloud container fleet policycontroller update \
--version=VERSION \
--memberships=MEMBERSHIP_NAME
Ganti kode berikut:
VERSION
: versi yang ingin Anda upgradeMEMBERSHIP_NAME
: nama keanggotaan yang Anda pilih saat mendaftarkan cluster. Anda dapat menemukan nama langganan dengan menjalankangcloud container fleet memberships list
.
Meng-uninstal Pengontrol Kebijakan
Ikuti langkah-langkah berikut untuk meng-uninstal Pengontrol Kebijakan dari cluster Anda.
Konsol
Untuk menonaktifkan Pengontrol Kebijakan di cluster Anda, selesaikan tugas berikut:
- Di konsol Google Cloud, buka halaman Kebijakan GKE Enterprise di bagian Posture Management.
- Di tab Settings, di tabel cluster, pilih Edit edit di kolom Edit configuration.
- Di panel cluster, scroll ke bawah dan luaskan menu About Policy Controller.
- Pilih Uninstal Policy Controller.
- Konfirmasi penguninstalan dengan mengikuti petunjuk dalam dialog konfirmasi dan memilih Konfirmasi.
Saat Pengontrol Kebijakan di-uninstal, kolom status akan menampilkan Tidak diinstal do_not_disturb_on.
gcloud policyController
Untuk meng-uninstal Policy Controller, jalankan perintah berikut:
gcloud container fleet policycontroller disable \
--memberships=MEMBERSHIP_NAME
Ganti MEMBERSHIP_NAME
dengan nama keanggotaan
cluster terdaftar untuk menonaktifkan Pengontrol Kebijakan. Anda dapat menentukan beberapa
keanggotaan yang dipisahkan dengan koma.
gcloud ConfigManagement
Untuk meng-uninstal Pengontrol Kebijakan:
Edit konfigurasi Operator ConfigManagement di file
apply-spec.yaml
dan tetapkanpolicyController.enabled
kefalse
.Terapkan perubahan dalam file
apply-spec.yaml
:gcloud beta container fleet config-management apply \ --membership=CLUSTER_NAME \ --config=CONFIG_YAML \ --project=PROJECT_ID
Ganti kode berikut:
- CLUSTER_NAME: tambahkan cluster terdaftar yang ingin Anda terapkan konfigurasi ini.
- CONFIG_YAML: tambahkan jalur ke file
apply-spec.yaml
Anda. - PROJECT_ID: tambahkan project ID Anda.
Menghapus Operator ConfigManagement
Jika menginstal Pengontrol Kebijakan melalui objek ConfigManagement
, Anda juga harus menghapus Operator ConfigManagement dari cluster.
Untuk menghapus Operator ConfigManagement, jalankan perintah berikut:
Hapus objek ConfigManagement dari cluster:
kubectl delete configmanagement --all
Setelah Anda menjalankan perintah ini, hal berikut akan terjadi:
- Semua ClusterRoles dan ClusterRoleBindings yang dibuat di cluster oleh Operator ConfigManagement akan dihapus dari cluster.
- Semua konfigurasi pengontrol akses yang diinstal oleh Operator ConfigManagement akan dihapus.
- Konten namespace
config-management-system
dihapus, kecualigit-creds
Secret, dan untuk versi Policy Controller mulai versi 1.9.0, Deploymentconfig-management-operator
, dan Podconfig-management-operator
. Operator ConfigManagement tidak dapat berfungsi tanpa namespaceconfig-management-system
. Setiap CustomResourceDefinitions (CRD) yang dibuat atau diubah oleh pengontrol Operator ConfigManagement akan dihapus dari cluster tempat CRD dibuat atau diubah. CRD yang diperlukan untuk menjalankan Operator ConfigManagement masih ada karena dari sudut pandang Kubernetes, CRD ditambahkan oleh pengguna yang menginstal Operator ConfigManagement. Informasi tentang cara menghapus komponen ini akan dibahas di langkah berikutnya.
Jika Anda perlu mempertahankan Secret
git-creds
, lakukan sekarang:kubectl -n config-management-system get secret git-creds -o yaml
Hapus namespace
config-management-system
:kubectl delete ns config-management-system
Hapus namespace
config-management-monitoring
:kubectl delete ns config-management-monitoring
Hapus CustomResourceDefinition ConfigManagement:
kubectl delete crd configmanagements.configmanagement.gke.io
RBAC dan izin Pengontrol Kebijakan
Pengontrol Kebijakan mencakup beban kerja dengan hak istimewa tinggi. Izin untuk beban kerja ini tercakup dalam dokumentasi operasi Open Policy Agent Gatekeeper.
Permintaan resource Pengontrol Kebijakan
Tabel berikut mencantumkan persyaratan resource Kubernetes untuk setiap versi Policy Controller yang didukung. Permintaan resource untuk Operator ConfigManagement hanya berlaku jika Anda menginstal Pengontrol Kebijakan melalui objek ConfigManagement
.
Komponen | CPU | Memori |
---|---|---|
Operator ConfigManagement | 100 m | 100 Mi |
Pengontrol Kebijakan | 100 m | 256 Mi |
Langkah selanjutnya
- Pelajari Pengontrol Kebijakan lebih lanjut.
- Pelajari paket Pengontrol Kebijakan lebih lanjut.
- Pelajari cara membuat batasan.
- Memecahkan masalah Pengontrol Kebijakan.