Pengontrol Kebijakan objek batasan memungkinkan Anda menerapkan kebijakan untuk cluster Kubernetes. Untuk membantu menguji kebijakan, Anda dapat menambahkan tindakan penegakan kebijakan ke batasan Anda. Anda kemudian dapat melihat pelanggaran pada objek dan log batasan.
Halaman ini ditujukan untuk admin IT dan Operator yang ingin memastikan bahwa semua resource yang berjalan dalam platform {i>cloud<i} memenuhi persyaratan persyaratan kepatuhan dengan menyediakan dan mempertahankan otomatisasi untuk menegakkan, dan siapa yang mengelola siklus hidup infrastruktur teknologi yang mendasarinya. Kepada mempelajari lebih lanjut tentang peran umum dan contoh tugas yang kami rujuk dalam konten Google Cloud, lihat Peran dan tugas pengguna GKE Enterprise yang umum.
Jenis tindakan penegakan kebijakan
Ada tiga tindakan penegakan kebijakan: deny
, dryrun
, dan warn
.
deny
adalah tindakan penerapan default. Ini diaktifkan secara otomatis, meskipun
Anda tidak perlu menambahkan tindakan penegakan kebijakan di batasan Anda. Gunakan deny
untuk mencegah
operasi cluster tertentu agar tidak terjadi saat terjadi pelanggaran.
dryrun
memungkinkan Anda memantau pelanggaran aturan tanpa memblokir secara aktif
transaksi. Anda dapat menggunakannya untuk menguji apakah
batasan Anda berfungsi sebagai
yang diinginkan, sebelum mengaktifkan penerapan aktif menggunakan tindakan deny
. Pengujian
cara ini dapat mencegah gangguan yang
disebabkan oleh kesalahan konfigurasi
batasan data.
warn
mirip dengan dryrun
, tetapi juga memberikan pesan langsung tentang
pelanggaran yang terjadi
saat masuk.
Metode ini disarankan saat menguji batasan
baru atau melakukan tindakan migrasi,
seperti mengupgrade platform, untuk mengalihkan tindakan penegakan dari deny
menjadi warn
atau
dryrun
agar Anda dapat menguji apakah kebijakan Anda berfungsi seperti yang diharapkan.
Menambahkan tindakan penegakan kebijakan
Anda dapat menambahkan enforcementAction: deny
atau enforcementAction: dryrun
ke
batasan data.
Contoh batasan berikut, yang bernama audit.yaml
, menambahkan tindakan dryrun
.
#audit.yaml
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sPSPAllowedUsers
metadata:
name: user-must-be-3333
spec:
enforcementAction: dryrun
match:
kinds:
- apiGroups: [""]
kinds: ["Pod"]
parameters:
runAsUser:
rule: MustRunAs
ranges:
- min: 3333
max: 3333
Buat batasan. Misalnya, terapkan menggunakan kubectl apply -f
:
kubectl apply -f audit.yaml
Melihat hasil audit
Pelanggaran yang diaudit ditambahkan ke objek Constraint dan juga ditulis ke log. Pelanggaran yang penolakan oleh pengontrol penerimaan tidak muncul di log.
Melihat hasil audit di objek batasan
Untuk melihat pelanggaran terhadap batasan tertentu, jalankan perintah berikut dan lihat
Kolom spec.status
.
kubectl get constraint-kind constraint-name -o yaml
Contoh
Untuk melihat output batasan dari audit.yaml
, jalankan perintah
perintah berikut:
kubectl get K8sPSPAllowedUsers user-must-be-3333 -o yaml
Output yang Anda lihat mirip dengan yang berikut ini:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sPSPAllowedUsers
metadata:
creationTimestamp: "2020-05-22T01:34:22Z"
generation: 1
name: user-must-be-3333
resourceVersion: "13351707"
selfLink: /apis/constraints.gatekeeper.sh/v1beta1/k8spspallowedusers/user-must-be-3333
uid: 5d0b39a8-9bcc-11ea-bb38-42010a80000c
spec:
enforcementAction: dryrun
match:
kinds:
- apiGroups:
- ""
kinds:
- Pod
parameters:
runAsUser:
ranges:
- max: 3333
min: 3333
rule: MustRunAs
status:
auditTimestamp: "2020-05-22T01:39:05Z"
byPod:
- enforced: true
id: gatekeeper-controller-manager-6b665d4c4d-lwnz5
observedGeneration: 1
totalViolations: 5
violations:
- enforcementAction: dryrun
kind: Pod
message: Container git-sync is attempting to run as disallowed user 65533
name: git-importer-86564db8cb-5r4gs
namespace: config-management-system
- enforcementAction: dryrun
kind: Pod
message: Container manager is attempting to run as disallowed user 1000
name: gatekeeper-controller-manager-6b665d4c4d-lwnz5
namespace: gatekeeper-system
- enforcementAction: dryrun
kind: Pod
message: Container kube-proxy is attempting to run without a required securityContext/runAsUser
name: kube-proxy-gke-fishy131-default-pool-7369b17c-cckf
namespace: kube-system
- enforcementAction: dryrun
kind: Pod
message: Container kube-proxy is attempting to run without a required securityContext/runAsUser
name: kube-proxy-gke-fishy131-default-pool-7369b17c-jnhb
namespace: kube-system
- enforcementAction: dryrun
kind: Pod
message: Container kube-proxy is attempting to run without a required securityContext/runAsUser
name: kube-proxy-gke-fishy131-default-pool-7369b17c-xrd8
namespace: kube-system
Melihat hasil audit di log
Anda dapat menggunakan Logs Explorer untuk mengambil, melihat, dan menganalisis data log untuk Pengontrol Kebijakan.
Untuk mendapatkan semua log Pengontrol Kebijakan, jalankan perintah berikut:
kubectl logs -n gatekeeper-system -l gatekeeper.sh/system=yes
Hasil audit memiliki "process":"audit"
di baris log, sehingga Anda dapat menyalurkan
{i>output<i} ke perintah lain dan
memfilter berdasarkan baris ini. Misalnya,
Anda dapat menggunakan jq
, yang mengurai file JSON dan memungkinkan Anda menyetel filter untuk
jenis log tertentu.
Contoh hasil audit dari logging:
{
"level":"info",
"ts":1590111401.9769812,
"logger":"controller",
"msg":"Container kube-proxy is attempting to run without a required securityContext/runAsUser",
"process":"audit",
"audit_id":"2020-05-22T01:36:24Z",
"event_type":"violation_audited",
"constraint_kind":"K8sPSPAllowedUsers",
"constraint_name":"user-must-be-3333",
"constraint_namespace":"",
"constraint_action":"dryrun",
"resource_kind":"Pod",
"resource_namespace":"kube-system",
"resource_name":"kube-proxy-gke-fishy131-default-pool-7369b17c-xrd8"
}
Langkah selanjutnya
- Baca selengkapnya tentang Membuat batasan
- Menggunakan library template batasan
- Mempelajari cara menggunakan batasan, bukan PodSecurityPolicies