Anda dapat mengonfigurasi kebijakan keamanan untuk pod guna memverifikasi keamanan permintaan penerapan dan pembaruan. Fitur manajemen kebijakan pada kluster ACK menyediakan beberapa pustaka aturan bawaan, termasuk Compliance, Infra, K8s-general, PSP, dan FinOps.
Pengenalan aturan
Pustaka aturan kebijakan keamanan kontainer ACK mencakup templat aturan berikut:
Compliance: Aturan keamanan yang dikustomisasi berdasarkan standar kepatuhan, seperti Alibaba Cloud K8s Reinforcement.
Infra: Aturan yang meningkatkan dan melindungi keamanan sumber daya infrastruktur cloud.
K8s-general: Aturan yang membatasi dan menstandarkan konfigurasi sumber daya sensitif dalam kluster Kubernetes untuk meningkatkan keamanan aplikasi.
PSP: Kebijakan yang menggantikan Kubernetes Pod Security Policies (PSP). Kebijakan ini menyediakan batasan keamanan yang setara dengan fitur PSP asli dalam manajemen kebijakan ACK.
FinOps: Aturan kebijakan pengendalian dan optimalisasi untuk proses tata kelola biaya.
Pustaka aturan kebijakan
Container Service for Kubernetes (ACK) menyediakan pustaka aturan kebijakan bawaan berikut. Kategori kebijakan beserta deskripsinya adalah sebagai berikut:
Kategori | Kebijakan | Deskripsi | Tingkat keparahan |
Compliance |
| Membatasi pemasangan rahasia sebagai variabel lingkungan di pod aplikasi menggunakan secretKeyRef. | medium |
| Mengharuskan semua kontainer dalam sebuah pod memiliki bidang | low | |
| Membatasi penerapan resource ke namespace tertentu dalam kluster. | low | |
| Membatasi role binding dalam namespace tertentu agar hanya menggunakan role atau cluster role dari rentang yang ditentukan. | high | |
| Mencegah namespace tertentu dihapus secara tidak sengaja. | medium | |
| Mencegah instance Service di namespace tertentu dihapus secara tidak sengaja. | medium | |
| Mencegah penghapusan persistent volume (PV) yang berada dalam status bound. | high | |
| Mencegah penghapusan node yang memiliki tag kustom. | high | |
| Mencegah penghapusan berbagai resource (termasuk Service, Namespace, dan Ingress) yang memiliki tag kustom. | high | |
| Mencegah penghapusan resource terkait CoreDNS dalam namespace kube-system. | high | |
ACKBlockCrdDeletion | Mencegah penghapusan CustomResourceDefinitions (CRD) yang masih memiliki custom resource (CR) terkait. | medium | |
Infra |
| Membatasi penggunaan shareProcessNamespace dalam aplikasi yang diterapkan dalam cakupan tertentu di kluster. | high |
| Mengharuskan volume tipe `emptyDir` menentukan | low | |
| Mengharuskan pod yang diterapkan dalam cakupan tertentu di kluster memiliki anotasi | low | |
| Membatasi penerapan dalam namespace tertentu agar hanya menggunakan persistent volume (PV) Alibaba Cloud OSS dari wilayah tertentu. | low | |
| Membatasi kapasitas disk maksimum yang dapat diminta untuk instance PV yang dibuat di kluster. | medium | |
| Membatasi penerapan instance persistent volume claim (PVC) hanya pada daftar putih namespace dan membatasi kapasitas disk maksimum yang dapat diminta untuk instance PVC. | medium | |
| Menentukan jenis pemasangan volume yang dilarang untuk Pod yang diterapkan dalam cakupan tertentu di kluster. | medium | |
| Mengharuskan pod memiliki sidecar ASM yang disuntikkan. | high | |
K8s-general |
| Membatasi pod aplikasi yang diterapkan dalam cakupan tertentu di kluster agar hanya menarik citra dari repositori yang ada dalam daftar putih. | high |
| Mengharuskan aplikasi dikonfigurasi dengan | low | |
| Mengharuskan aplikasi memiliki bidang | high | |
| Membatasi startup kontainer ephemeral dalam pod aplikasi dalam cakupan tertentu di kluster. | medium | |
| Membatasi penerapan layanan bertipe LoadBalancer dalam cakupan tertentu di kluster. | high | |
| Membatasi penggunaan layanan bertipe NodePort dalam cakupan tertentu di kluster. | high | |
| Mengharuskan pod aplikasi dalam cakupan tertentu di kluster memiliki | low | |
| Membatasi instance Service dalam cakupan tertentu di kluster agar hanya menggunakan externalIPs yang ada dalam daftar putih. | high | |
| Membatasi penerapan citra yang tidak menggunakan format digest dalam cakupan tertentu di kluster. | low | |
| Membatasi penerapan aplikasi yang tidak memiliki label standar tertentu dalam cakupan tertentu di kluster. | low | |
| Mengharuskan pod yang diterapkan dalam cakupan tertentu di kluster dikonfigurasi dengan jenis readinessProbe dan livenessProbe tertentu. | medium | |
| Membatasi konfigurasi berbahaya dalam bidang | high | |
| Membatasi konfigurasi berbahaya dalam bidang | high | |
| Membatasi pembuatan layanan LoadBalancer yang menghadap publik. | high | |
| Setelah menginstal komponen Ratify dari pasar, verifikasi metadata keamanan, seperti signature atau bill of materials (BOM), dalam citra pod yang diterapkan dalam cakupan tertentu di kluster. | high | |
PSP |
| Membatasi konfigurasi parameter | medium |
| Membatasi | medium | |
| Membatasi konfigurasi AppArmor untuk pod yang diterapkan dalam cakupan tertentu di kluster. | low | |
| Membatasi konfigurasi Linux Capabilities untuk pod yang diterapkan dalam cakupan tertentu di kluster. | high | |
| Membatasi konfigurasi fsGroup untuk pod yang diterapkan dalam cakupan tertentu di kluster. | medium | |
| Membatasi konfigurasi driver FlexVolume untuk pod yang diterapkan dalam cakupan tertentu di kluster. | medium | |
| Membatasi rentang sysctls terlarang untuk pod yang diterapkan dalam cakupan tertentu di kluster. | high | |
| Membatasi rentang direktori host yang boleh dipasang oleh pod yang diterapkan dalam cakupan tertentu di kluster. | high | |
| Membatasi apakah pod yang diterapkan dalam cakupan tertentu di kluster boleh berbagi namespace host. | high | |
| Membatasi penggunaan jaringan host dan port tertentu oleh pod yang diterapkan dalam cakupan tertentu di kluster. | high | |
| Membatasi startup kontainer istimewa dalam pod yang diterapkan dalam cakupan tertentu di kluster. | high | |
| Membatasi jenis pemasangan proc yang diizinkan untuk pod yang diterapkan dalam cakupan tertentu di kluster. | low | |
| Mengharuskan pod yang diterapkan dalam cakupan tertentu di kluster menggunakan sistem file root read-only. | medium | |
| Mengharuskan pod yang diterapkan dalam cakupan tertentu di kluster menggunakan konfigurasi SELinux yang ditentukan dalam parameter allowedSELinuxOptions. | low | |
| Membatasi pod yang diterapkan dalam cakupan tertentu di kluster agar hanya menggunakan profil Seccomp tertentu. | low | |
| Membatasi pod yang diterapkan dalam cakupan tertentu di kluster agar hanya menggunakan jenis pemasangan volume tertentu. | medium | |
FinOps |
| Mengharuskan pod aplikasi tertentu dalam kluster mendeklarasikan resource | low |
| Mengharuskan konfigurasi resource CPU dan memori pod aplikasi tertentu dalam kluster dipilih dari daftar opsi yang telah ditentukan. | low | |
| Membatasi konfigurasi resource pod aplikasi tertentu dalam kluster agar berada dalam rentang tertentu. | low | |
| Mengharuskan pod aplikasi tertentu dalam kluster memiliki label | low | |
| Membatasi jumlah replika aplikasi ke rentang minimum dan maksimum tertentu. | low | |
| Mewajibkan penggunaan ulang instance ALB yang sudah ada dan melarang pembuatan instance resource ALB baru melalui AlbConfig. | low |
Compliance
ACKNoEnvVarSecrets
Deskripsi aturan: Membatasi pemasangan rahasia sebagai variabel lingkungan di pod aplikasi menggunakan secretKeyRef.
Tingkat keparahan: medium.
Parameter: Tidak ada.
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKNoEnvVarSecrets
metadata:
name: no-env-var-secrets
spec:
match:
kinds:
- apiGroups: [""]
kinds: ["Pod"]
namespaces: ["test-gatekeeper"]Diizinkan:
apiVersion: v1
kind: Pod
metadata:
name: mypod
namespace: test-gatekeeper
spec:
containers:
- name: mypod
image: redis
volumeMounts:
- name: foo
mountPath: "/etc/foo"
volumes:
- name: foo
secret:
secretName: mysecret
items:
- key: username
path: my-group/my-usernameDilarang:
apiVersion: v1
kind: Pod
metadata:
name: bad
namespace: test-gatekeeper
spec:
containers:
- name: mycontainer
image: redis
env:
- name: SECRET_USERNAME
valueFrom:
secretKeyRef:
name: mysecret
key: username
- name: SECRET_PASSWORD
valueFrom:
secretKeyRef:
name: mysecret
key: password
restartPolicy: NeverACKPodsRequireSecurityContext
Deskripsi aturan: Mengharuskan semua kontainer dalam sebuah pod memiliki bidang securityContext yang dikonfigurasi.
Tingkat keparahan: low.
Parameter: Tidak ada.
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKPodsRequireSecurityContext
metadata:
name: pods-require-security-context
annotations:
description: "Requires that Pods must have a `securityContext` defined."
spec:
match:
kinds:
- apiGroups: [""]
kinds: ["Pod"]
namespaces: ["test-gatekeeper"]Diizinkan:
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: test
name: test
namespace: test-gatekeeper
spec:
securityContext:
runAsNonRoot: false
containers:
- image: test
name: test
resources: {}
dnsPolicy: ClusterFirst
restartPolicy: Never
status: {}Dilarang:
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: test
name: bad
namespace: test-gatekeeper
spec:
containers:
- image: test
name: test2
- image: test
name: test
resources: {}
securityContext:
runAsNonRoot: falseACKRestrictNamespaces
Deskripsi aturan: Membatasi penerapan resource ke namespace tertentu dalam kluster.
Tingkat keparahan: low.
Parameter:
Nama Parameter | Tipe | Deskripsi |
restrictedNamespaces | array | Melarang penerapan resource ke target yang ditentukan dalam parameter ini. |
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKRestrictNamespaces
metadata:
name: restrict-default-namespace
annotations:
description: "Restricts resources from using the restricted namespace."
spec:
match:
kinds:
- apiGroups: ['']
kinds: ['Pod']
parameters:
restrictedNamespaces:
- "test-gatekeeper"Diizinkan:
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: test
name: test
namespace: non-test-gatekeeper
spec:
containers:
- image: test
name: test
resources: {}
dnsPolicy: ClusterFirst
restartPolicy: Never
status: {}Dilarang:
apiVersion: v1
kind: Pod
metadata:
name: bad
namespace: test-gatekeeper
spec:
containers:
- name: mycontainer
image: redis
restartPolicy: NeverACKRestrictRoleBindings
Deskripsi: Membatasi RoleBinding dalam namespace tertentu ke kumpulan Role atau ClusterRole tertentu.
Tingkat keparahan: high.
Parameter:
Nama Parameter | Jenis Parameter | Deskripsi |
restrictedRole | object | ClusterRole atau Role yang dibatasi. |
allowedSubjects | array | Daftar putih subjek yang dapat dilampirkan. |
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKRestrictRoleBindings
metadata:
name: restrict-clusteradmin-rolebindings
annotations:
description: "Restricts use of sensitive role in specific rolebinding."
spec:
match:
kinds:
- apiGroups: ["rbac.authorization.k8s.io"]
kinds: ["RoleBinding"]
parameters:
restrictedRole:
apiGroup: "rbac.authorization.k8s.io"
kind: "ClusterRole"
name: "cluster-admin"
allowedSubjects:
- apiGroup: "rbac.authorization.k8s.io"
kind: "Group"
name: "system:masters"Diizinkan:
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: good-2
namespace: test-gatekeeper
subjects:
- kind: Group
name: 'system:masters'
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: rbac.authorization.k8s.ioDilarang:
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: bad-1
namespace: test-gatekeeper
subjects:
- kind: ServiceAccount
name: policy-template-controller
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: rbac.authorization.k8s.ioACKNamespacesDeleteProtection
Deskripsi aturan: Mencegah penghapusan tidak sengaja namespace tertentu. Anda dapat menggunakan parameter protectionNamespaces untuk mengonfigurasi nama namespace yang dilindungi.
Prasyarat: Komponen gatekeeper harus v3.10.0.130-g0e79597d-aliyun atau lebih baru. Untuk informasi selengkapnya tentang versi komponen gatekeeper, lihat Gatekeeper.
Tingkat keparahan: medium.
Parameter:
Parameter | Jenis Parameter | Deskripsi |
| array | Daftar nama namespace yang dilindungi. |
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKNamespacesDeleteProtection
metadata:
name: namespace-delete-protection
spec:
match:
kinds:
- apiGroups: ['']
kinds: ['Namespace']
parameters:
protectionNamespaces:
- test-gatekeeperDiizinkan:
apiVersion: v1
kind: Namespace
metadata:
name: will-deleteDilarang:
apiVersion: v1
kind: Namespace
metadata:
name: test-gatekeeperACKServicesDeleteProtection
Deskripsi aturan: Mencegah penghapusan tidak sengaja instance Service dalam namespace tertentu. Anda dapat menggunakan parameter protectionServices untuk mengonfigurasi nama instance Service yang dilindungi.
Tingkat keparahan: medium.
Parameter:
Nama parameter | Jenis parameter | Deskripsi |
protectionServices | array | Daftar nama instance Service yang dilindungi dalam namespace tertentu. |
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKServicesDeleteProtection
metadata:
name: service-delete-protection
annotations:
description: "Protect to delete specific service."
spec:
enforcementAction: deny
match:
kinds:
- apiGroups: ['']
kinds: ['Service']
namespaces: ["test-gatekeeper"]
parameters:
protectionServices:
- test-svcDiizinkan:
apiVersion: v1
kind: Service
metadata:
name: good
namespace: test-gatekeeperDilarang:
apiVersion: v1
kind: Service
metadata:
name: test-svcACKProtectBoundingPV
Deskripsi aturan: Mencegah penghapusan persistent volume (PV) yang terikat ke persistent volume claim (PVC) dalam kluster.
Tingkat keparahan: high.
Parameter: Tidak ada.
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKProtectBoundingPV
metadata:
name: protect-pv-deletion
spec:
enforcementAction: deny
match:
kinds:
- apiGroups:
- ""
kinds:
- PersistentVolumeDiizinkan:
apiVersion: v1
kind: PersistentVolume
metadata:
name: test-pv-bound-should-be-blocked
spec:
accessModes:
- ReadWriteOnce
capacity:
storage: 1Gi
persistentVolumeReclaimPolicy: Retain
storageClassName: manual-sc
hostPath:
path: /tmp/data
type: DirectoryOrCreate
status:
phase: ReleasedDilarang:
apiVersion: v1
kind: PersistentVolume
metadata:
name: test-pv-bound-should-be-blocked
spec:
accessModes:
- ReadWriteOnce
capacity:
storage: 1Gi
persistentVolumeReclaimPolicy: Retain
storageClassName: manual-sc
hostPath:
path: /tmp/data
type: DirectoryOrCreate
status:
phase: BoundACKBlockNodeDelete
Deskripsi aturan: Mencegah penghapusan node yang memiliki tag kustom dalam kluster. Anda dapat menentukan beberapa pasangan kunci-nilai. Node dilindungi jika cocok dengan salah satu pasangan kunci-nilai yang ditentukan.
Tingkat Keparahan: Tinggi.
Parameter:
Nama Parameter | Jenis parameter | Deskripsi |
| array | Tag kustom yang digunakan untuk mengidentifikasi node yang dilindungi. |
| string | Kunci tag kustom. |
| string | Nilai tag kustom. |
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKBlockNodeDelete
metadata:
name: block-node-delete
spec:
enforcementAction: deny
match:
kinds:
- apiGroups: ["*"]
kinds: ["Node"]
parameters:
protectedLabels:
- labelName: policy.alibabacloud.vpc.com/node-delete-protection
labelValue: "true"
- labelName: policy.alibabacloud.com/node-delete-protection
labelValue: "true"Diizinkan:
apiVersion: v1
kind: Node
metadata:
name: cn-hangzhou-1Ditolak:
apiVersion: v1
kind: Node
metadata:
labels:
policy.alibabacloud.vpc.com/node-delete-protection: "true"
name: cn-hangzhou-1
---
apiVersion: v1
kind: Node
metadata:
labels:
policy.alibabacloud.vpc.com/node-delete-protection: "true"
name: cn-hangzhou-2
---
apiVersion: v1
kind: Node
metadata:
labels:
policy.alibabacloud.com/node-delete-protection: "true"
policy.alibabacloud.vpc.com/node-delete-protection: "true"
name: cn-hangzhou-3ACKResourceDeletionProtection
Deskripsi aturan: Mencegah penghapusan resource yang memiliki tag kustom dalam kluster. Aturan ini mendukung jenis resource seperti Service, Namespace, Ingress, Deployment, StatefulSet, DaemonSet, Job, dan CronJob. Anda dapat menentukan beberapa pasangan kunci-nilai. Resource dilindungi jika cocok dengan salah satu pasangan kunci-nilai yang ditentukan.
Tingkat keparahan: high.
Parameter:
Nama Parameter | Jenis parameter | Deskripsi |
| array | Tag kustom yang digunakan untuk mengidentifikasi node yang dilindungi. |
| string | Kunci tag kustom. |
| string | Nilai tag kustom. |
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKResourceDeletionProtection
metadata:
name: resource-deletion-protection
annotations:
description: "Protect resources from being accidentally deleted."
spec:
enforcementAction: deny
match:
kinds:
- apiGroups:
- ""
kinds:
- Service
- Namespace
- apiGroups:
- extensions
- networking.k8s.io
kinds:
- Ingress
- apiGroups:
- apps
kinds:
- Deployment
- StatefulSet
- DaemonSet
- apiGroups:
- batch
kinds:
- Job
- CronJob
parameters:
labels:
- labelName: policy.alibabacloud.com/delete-protection
labelValue: "true"Diizinkan:
apiVersion: apps/v1
kind: Deployment
metadata:
name: test-deployment
namespace: test-gatekeeper
spec:
replicas: 2
selector:
matchLabels:
app: test-app
template:
metadata:
labels:
app: test-app
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80Dilarang:
apiVersion: apps/v1
kind: Deployment
metadata:
name: test-deployment
namespace: test-gatekeeper
labels:
policy.alibabacloud.com/delete-protection: "true"
spec:
replicas: 2
selector:
matchLabels:
app: test-app
template:
metadata:
labels:
app: test-app
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80ACKProtectCoreDNS
Deskripsi aturan: Mencegah penghapusan resource terkait CoreDNS dalam namespace kube-system, termasuk Deployment, Service, dan ConfigMap terkait.
Tingkat keparahan: high.
Parameter:
Nama Parameter | Jenis parameter | Deskripsi |
| int | Menentukan jumlah replika minimum yang diinginkan untuk Deployment CoreDNS. |
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKProtectCoreDNS
metadata:
name: coredns-protect-rule
spec:
enforcementAction: deny
match:
kinds:
- apiGroups: ["*"]
kinds: ["Deployment", "Service", "Scale", "ConfigMap" ]
scope: "Namespaced"
namespaces: ["kube-system"]
parameters:
min_replicas: 2Diizinkan:
apiVersion: apps/v1
kind: Deployment
metadata:
name: coredns
namespace: kube-system
spec:
replicas: 3
selector:
matchLabels:
k8s-app: kube-dns
template:
metadata:
labels:
k8s-app: kube-dns
spec:
containers:
- name: coredns
image: registry-cn-hangzhou-vpc.ack.aliyuncs.com/acs/coredns:latest
imagePullPolicy: IfNotPresentDilarang:
apiVersion: apps/v1
kind: Deployment
metadata:
name: coredns
namespace: kube-system
spec:
replicas: 1
selector:
matchLabels:
k8s-app: kube-dns
template:
metadata:
labels:
k8s-app: kube-dns
spec:
containers:
- name: coredns
image: registry-cn-hangzhou-vpc.ack.aliyuncs.com/acs/coredns:latest
imagePullPolicy: IfNotPresent
---
apiVersion: v1
data:
Corefile: ""
kind: ConfigMap
metadata:
name: coredns
namespace: kube-system
---
apiVersion: v1
kind: Service
metadata:
labels:
k8s-app: kube-dns
kubernetes.io/cluster-service: "true"
kubernetes.io/name: KubeDNS
name: kube-dns
namespace: kube-systemACKBlockCrdDeletion
Deskripsi aturan: Mencegah penghapusan CustomResourceDefinitions (CRD) yang masih memiliki custom resource (CR) terkait.
Tingkat keparahan: medium.
Parameter: Tidak ada.
Contoh dan penggunaan: Sebelum menerapkan kebijakan, Anda harus terlebih dahulu menginstal dan mengonfigurasi ack-policy-external-provider. Kemudian, Anda dapat menerapkan kebijakan untuk melindungi CRD.
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKBlockCrdDeletion
metadata:
name: block-crd-deletion
spec:
enforcementAction: deny
match:
kinds:
- apiGroups:
- '*'
kinds:
- CustomResourceDefinitionInfra
ACKBlockProcessNamespaceSharing
Deskripsi aturan: Membatasi penggunaan shareProcessNamespace dalam aplikasi yang diterapkan dalam cakupan tertentu di kluster.
Tingkat keparahan: high.
Parameter: Tidak ada.
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKBlockProcessNamespaceSharing
metadata:
name: block-share-process-namespace
spec:
match:
kinds:
- apiGroups: [""]
kinds: ["Pod"]
namespaces: ["test-gatekeeper"]Diizinkan:
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: test
name: test-3
namespace: test-gatekeeper
spec:
containers:
- image: test
name: test
resources: {}
dnsPolicy: ClusterFirst
restartPolicy: Never
status: {}Dilarang:
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: test
name: bad
namespace: test-gatekeeper
spec:
shareProcessNamespace: true
containers:
- image: test
name: test
resources: {}
dnsPolicy: ClusterFirst
restartPolicy: Never
status: {}ACKEmptyDirHasSizeLimit
Deskripsi aturan: Mengharuskan volume emptyDir menentukan sizeLimit.
Tingkat keparahan: low.
Parameter: Tidak ada.
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKEmptyDirHasSizeLimit
metadata:
name: empty-dir-has-sizelimit
spec:
match:
kinds:
- apiGroups: [""]
kinds: ["Pod"]
namespaces: ["test-gatekeeper"]Diizinkan:
apiVersion: v1
kind: Pod
metadata:
name: test-1
namespace: test-gatekeeper
spec:
containers:
- image: k8s.gcr.io/test-webserver
name: test-container
volumeMounts:
- mountPath: /cache
name: cache-volume
volumes:
- name: cache-volume
emptyDir:
sizeLimit: "10Mi"Dilarang:
apiVersion: v1
kind: Pod
metadata:
name: bad
namespace: test-gatekeeper
spec:
containers:
- image: k8s.gcr.io/test-webserver
name: test-container
volumeMounts:
- mountPath: /cache
name: cache-volume
volumes:
- name: cache-volume
emptyDir: {}ACKLocalStorageRequireSafeToEvict
Deskripsi aturan: Mengharuskan pod yang diterapkan dalam cakupan tertentu di kluster memiliki anotasi "cluster-autoscaler.kubernetes.io/safe-to-evict": "true" . Selama autoscaling, autoscaler kluster tidak menghapus pod yang tidak memiliki anotasi ini.
Tingkat keparahan: low.
Parameter: Tidak ada.
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKLocalStorageRequireSafeToEvict
metadata:
name: local-storage-require-safe-to-evict
spec:
match:
kinds:
- apiGroups: [""]
kinds: ["Pod"]
namespaces: ["test-gatekeeper"]Diizinkan:
apiVersion: v1
kind: Pod
metadata:
name: test-1
namespace: test-gatekeeper
annotations:
'cluster-autoscaler.kubernetes.io/safe-to-evict': 'true'
spec:
containers:
- image: k8s.gcr.io/test-webserver
name: test-container
volumeMounts:
- mountPath: /test-pd
name: test-volume
volumes:
- name: test-volume
hostPath:
# directory location on host
path: /data
# this field is optional
type: DirectoryDilarang:
apiVersion: v1
kind: Pod
metadata:
name: bad
namespace: test-gatekeeper
spec:
containers:
- image: k8s.gcr.io/test-webserver
name: test-container
volumeMounts:
- mountPath: /cache
name: cache-volume
volumes:
- name: cache-volume
emptyDir: {}ACKOSSStorageLocationConstraint
Deskripsi aturan: Membatasi penerapan dalam namespace tertentu agar hanya menggunakan persistent volume (PV) Alibaba Cloud Object Storage Service (OSS) dari wilayah tertentu.
Tingkat keparahan: low.
Parameter:
Nama Parameter | Jenis parameter | Deskripsi |
| string | Menentukan apakah akan menggunakan daftar putih. Nilai default |
| array | Daftar ID wilayah Alibaba Cloud tertentu. |
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKOSSStorageLocationConstraint
metadata:
name: restrict-oss-location
annotations:
description: "Restricts location of oss storage in cluster."
spec:
match:
kinds:
- apiGroups: [""]
kinds: ["PersistentVolume", "Pod"]
namespaces:
- "test-gatekeeper"
parameters:
mode: "allowlist"
regions:
- "cn-beijing"Diizinkan:
apiVersion: v1
kind: Pod
metadata:
name: pod-oss-csi-good
namespace: test-gatekeeper
spec:
containers:
- name: test
image: test
volumes:
- name: test
csi:
driver: ossplugin.csi.alibabacloud.com
volumeAttributes:
bucket: "oss"
url: "oss-cn-beijing.aliyuncs.com"
otherOpts: "-o max_stat_cache_size=0 -o allow_other"
path: "/"Dilarang:
apiVersion: v1
kind: Pod
metadata:
name: pod-oss-csi
namespace: test-gatekeeper
spec:
containers:
- name: test
image: nginx:latest
volumes:
- name: test
csi:
driver: ossplugin.csi.alibabacloud.com
nodePublishSecretRef:
name: oss-secret
volumeAttributes:
bucket: "oss"
url: "oss-cn-hangzhou.aliyuncs.com"
otherOpts: "-o max_stat_cache_size=0 -o allow_other"
path: "/"ACKPVSizeConstraint
Deskripsi aturan: Membatasi kapasitas disk maksimum yang dapat diminta untuk instance PV yang dibuat di kluster.
Tingkat keparahan: medium.
Parameter:
Nama parameter | Jenis parameter | Deskripsi |
| string | Kapasitas disk maksimum yang dapat diminta untuk instance PV. Nilai default adalah 50 GiB. |
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKPVSizeConstraint
metadata:
name: limit-pv-size
annotations:
description: "Limit the pv storage capacity size within a specified maximum amount."
spec:
enforcementAction: deny
match:
kinds:
- apiGroups: [ "" ]
kinds: [ "PersistentVolume" ]
parameters:
maxSize: "50Gi"Diizinkan:
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-oss-csi
labels:
alicloud-pvname: pv-oss
spec:
capacity:
storage: 25Gi
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
csi:
driver: ossplugin.csi.alibabacloud.com
volumeHandle: pv-oss
nodePublishSecretRef:
name: oss-secret
namespace: default
volumeAttributes:
bucket: "oss"
url: "oss-cn-beijing.aliyuncs.com"
otherOpts: "-o max_stat_cache_size=0 -o allow_other"
path: "/"Dilarang:
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-oss-csi-bad
labels:
alicloud-pvname: pv-oss
spec:
capacity:
storage: 500Gi
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
csi:
driver: ossplugin.csi.alibabacloud.com
volumeHandle: pv-oss
nodePublishSecretRef:
name: oss-secret
namespace: default
volumeAttributes:
bucket: "oss"
url: "oss-cn-beijing.aliyuncs.com"
otherOpts: "-o max_stat_cache_size=0 -o allow_other"
path: "/"ACKPVCConstraint
Deskripsi aturan: Membatasi penerapan instance persistent volume claim (PVC) hanya pada daftar putih namespace dan membatasi kapasitas disk maksimum yang dapat diminta untuk instance PVC.
Tingkat keparahan: medium.
Parameter:
Parameter | Jenis parameter | Deskripsi |
| string | Kapasitas disk maksimum yang dapat diminta untuk instance PV. Nilai default adalah 50 GiB. |
| array | Daftar putih namespace tempat instance PVC dapat diterapkan. |
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKPVCConstraint
metadata:
name: limit-pvc-size-and-ns
annotations:
description: "Limit the maximum pvc storage capacity size and the namespace whitelists that can be deployed."
spec:
enforcementAction: deny
match:
kinds:
- apiGroups: [ "" ]
kinds: [ "PersistentVolumeClaim" ]
parameters:
maxSize: "50Gi"
allowNamespaces:
- "test-gatekeeper"Diizinkan:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: disk-pvc
namespace: test-gatekeeper
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20GiDilarang:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: bad-disk-pvc
namespace: test-gatekeeper
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 200Gi
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: bad-namespace-pvc
namespace: test-gatekeeper-bad
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi ACKBlockVolumeTypes
Deskripsi aturan: Melarang jenis pemasangan volume tertentu untuk pod yang diterapkan dalam cakupan tertentu di kluster.
Tingkat keparahan: medium.
Parameter:
Nama Parameter | Tipe | Deskripsi |
| array | Daftar jenis pemasangan volume yang dilarang. |
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKBlockVolumeTypes
metadata:
name: block-volume-types
spec:
enforcementAction: deny
match:
kinds:
- apiGroups: [""]
kinds: ["Pod"]
namespaces: ["test-gatekeeper"]
parameters:
volumes:
- "gitRepo"Diizinkan:
apiVersion: v1
kind: Pod
metadata:
name: use-empty-dir
namespace: test-gatekeeper
spec:
containers:
- name: test
image: test
volumes:
- name: emptydir-volume
emptyDir: {}Dilarang:
apiVersion: v1
kind: Pod
metadata:
name: use-git-repo
namespace: test-gatekeeper
spec:
containers:
- name: test
image: test
volumes:
- name: git-volume
gitRepo:
repository: "git@***:***/my-git-repository.git"
revision: "22f1d8406d464b0c08***"ASMSidecarInjectionEnforced
Deskripsi aturan: Mengharuskan pod memiliki sidecar Alibaba Cloud Service Mesh (ASM) yang disuntikkan.
Tingkat keparahan: high.
Parameter: Tidak ada.
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ASMSidecarInjectionEnforced
metadata:
name: asm-sidecar-injectionen-forced
spec:
enforcementAction: deny
match:
kinds:
- apiGroups: [""]
kinds: ["Pod"]
namespaces: ["test-gatekeeper"]Diizinkan:
apiVersion: v1
kind: Pod
metadata:
name: sidecar-injection
namespace: test-gatekeeper
spec:
containers:
- name: test
image: test
- name: istio-proxy
image: xxx/proxyv2:xxx
Dilarang:
apiVersion: v1
kind: Pod
metadata:
name: sidecar-injection
namespace: test-gatekeeper
spec:
containers:
- name: test
image: testK8s-general
ACKAllowedRepos
Deskripsi aturan: Mengharuskan pod aplikasi yang diterapkan dalam cakupan tertentu di kluster hanya menarik citra dari repositori yang ada dalam daftar putih.
Tingkat keparahan: high.
Parameter:
Nama Parameter | Tipe | Deskripsi |
| array | Daftar putih repositori citra yang diizinkan. |
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKAllowedRepos
metadata:
name: allowed-repos
spec:
match:
kinds:
- apiGroups: [""]
kinds: ["Pod"]
namespaces:
- "test-gatekeeper"
parameters:
repos:
- "registry-vpc.cn-hangzhou.aliyuncs.com/acs/"
- "registry.cn-hangzhou.aliyuncs.com/acs/"Diizinkan:
apiVersion: v1
kind: Pod
metadata:
name: pod-01
namespace: test-gatekeeper
spec:
containers:
- image: registry.cn-hangzhou.aliyuncs.com/acs/test-webserver
name: test-container-1
initContainers:
- image: registry.cn-hangzhou.aliyuncs.com/acs/test-webserver
name: test-containerDilarang:
apiVersion: v1
kind: Pod
metadata:
name: bad-1
namespace: test-gatekeeper
spec:
containers:
- image: k8s.gcr.io/test-webserver
name: test-container
initContainers:
- image: k8s.gcr.io/test-webserver
name: test-container-3ACKBlockAutoinjectServiceEnv
Deskripsi aturan: Mengharuskan aplikasi dikonfigurasi dengan enableServiceLinks: false untuk mencegah alamat IP layanan terekspos sebagai variabel lingkungan pod.
Tingkat keparahan: low.
Parameter: Tidak ada.
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKBlockAutoinjectServiceEnv
metadata:
name: block-auto-inject-service-env
spec:
match:
kinds:
- apiGroups: [""]
kinds: ["Pod"]
namespaces:
- "test-gatekeeper"Diizinkan:
apiVersion: v1
kind: Pod
metadata:
name: pod-0
namespace: test-gatekeeper
spec:
enableServiceLinks: false
containers:
- image: openpolicyagent/test-webserver:1.0
name: test-containerDilarang:
apiVersion: v1
kind: Pod
metadata:
name: bad-1
namespace: test-gatekeeper
spec:
containers:
- image: k8s.gcr.io/test-webserver
name: test-containerACKBlockAutomountToken
Deskripsi aturan: Mengharuskan aplikasi memiliki bidang automountServiceAccountToken: false yang diatur untuk mencegah pemasangan otomatis token ServiceAccount.
Tingkat keparahan: high.
Parameter: Tidak ada.
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKBlockAutomountToken
metadata:
name: block-auto-mount-service-account-token
spec:
match:
kinds:
- apiGroups: [""]
kinds: ["Pod"]
namespaces:
- "test-gatekeeper"Diizinkan:
apiVersion: v1
kind: Pod
metadata:
name: pod-0
namespace: test-gatekeeper
spec:
automountServiceAccountToken: false
containers:
- image: openpolicyagent/test-webserver:v1.0
name: test-containerDilarang:
apiVersion: v1
kind: Pod
metadata:
name: bad-1
namespace: test-gatekeeper
spec:
containers:
- image: k8s.gcr.io/test-webserver
name: test-containerACKBlockEphemeralContainer
Deskripsi aturan: Mencegah kontainer ephemeral dimulai dalam pod aplikasi dalam cakupan tertentu di kluster.
Tingkat keparahan: medium.
Parameter: Tidak ada.
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKBlockEphemeralContainer
metadata:
name: block-ephemeral-container
spec:
enforcementAction: deny
match:
kinds:
- apiGroups: [""]
kinds: ["Pod"]
namespaces:
- "test-gatekeeper"Diizinkan:
apiVersion: v1
kind: Pod
metadata:
name: hello-pod
namespace: test-gatekeeper
spec:
containers:
- name: hello-pod
image: redisDilarang:
Mulai kontainer ephemeral berdasarkan pod yang sudah ada.
kubectl debug -it hello-pod -n test-gatekeeper --image=test --target=hello-podOutput yang diharapkan:
Error from server (Forbidden): admission webhook "validation.gatekeeper.sh" denied the request: [block-ephemeral-container-w5c6n] Creating ephemeral containers is disallowed, pod: hello-pod
ACKBlockLoadBalancer
Deskripsi aturan: Mencegah penerapan layanan bertipe LoadBalancer dalam cakupan tertentu di kluster.
Tingkat keparahan: high.
Parameter:
Nama parameter | Jenis parameter | Deskripsi |
restrictedNamespaces | array | Menolak penerapan resource yang ditentukan dalam parameter ini. |
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKBlockLoadBalancer
metadata:
name: block-load-balancer
spec:
match:
kinds:
- apiGroups: [""]
kinds: ["Service"]
namespaces:
- "test-gatekeeper"Diizinkan:
apiVersion: v1
kind: Service
metadata:
name: my-service-1
namespace: test-gatekeeper
spec:
selector:
app: MyApp
ports:
- name: http
protocol: TCP
port: 80
targetPort: 9376Dilarang:
apiVersion: v1
kind: Service
metadata:
name: my-service
namespace: test-gatekeeper
spec:
type: LoadBalancer
selector:
app: MyApp
ports:
- name: http
protocol: TCP
port: 80
targetPort: 9376ACKBlockNodePort
Deskripsi aturan: Mencegah penggunaan layanan bertipe NodePort dalam cakupan tertentu di kluster.
Tingkat keparahan: low.
Parameter: Tidak ada.
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKBlockNodePort
metadata:
name: block-node-port
spec:
match:
kinds:
- apiGroups: [""]
kinds: ["Service"]
namespaces:
- "test-gatekeeper"Diizinkan:
apiVersion: v1
kind: Service
metadata:
name: my-service-1
namespace: test-gatekeeper
spec:
selector:
app: MyApp
ports:
- name: http
protocol: TCP
port: 80
targetPort: 9376Dilarang:
apiVersion: v1
kind: Service
metadata:
name: my-service
namespace: test-gatekeeper
spec:
type: NodePort
selector:
app: MyApp
ports:
- name: http
protocol: TCP
port: 80
targetPort: 9376ACKContainerLimits
Deskripsi aturan: Mengharuskan pod aplikasi dalam cakupan tertentu di kluster memiliki resource limits yang dikonfigurasi.
Tingkat keparahan: low.
Parameter: Tidak ada.
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKContainerLimits
metadata:
name: container-must-have-limits
spec:
match:
kinds:
- apiGroups: [""]
kinds: ["Pod"]
namespaces:
- "test-gatekeeper"
parameters:
cpu: "1000m"
memory: "1Gi"Diizinkan:
apiVersion: v1
kind: Pod
metadata:
name: pod-1
namespace: test-gatekeeper
spec:
containers:
- image: openpolicyagent/test-webserver
name: test-container
resources:
limits:
memory: "100Mi"
cpu: "500m"Dilarang:
apiVersion: v1
kind: Pod
metadata:
name: pod-2
namespace: non-test-gatekeeper
spec:
containers:
- image: openpolicyagent/test-webserver
name: test-container
resources:
limits:
memory: "100Gi"
cpu: "2000m"ACKExternalIPs
Deskripsi aturan: Mengharuskan instance Service dalam cakupan tertentu di kluster hanya menggunakan externalIPs dari daftar putih.
Tingkat keparahan: high.
Parameter:
Nama Parameter | Jenis parameter | Deskripsi |
| array | Daftar putih |
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKExternalIPs
metadata:
name: external-ips
spec:
match:
kinds:
- apiGroups: [""]
kinds: ["Service"]
namespaces:
- "test-gatekeeper"
parameters:
allowedIPs:
- "192.168.0.5"Diizinkan:
apiVersion: v1
kind: Service
metadata:
name: my-service-3
namespace: test-gatekeeper
spec:
selector:
app: MyApp
ports:
- name: http
protocol: TCP
port: 80
targetPort: 9376Dilarang:
apiVersion: v1
kind: Service
metadata:
name: my-service
namespace: test-gatekeeper
spec:
selector:
app: MyApp
ports:
- name: http
protocol: TCP
port: 80
targetPort: 9376
externalIPs:
- 80.11.XX.XXACKImageDigests
Deskripsi aturan: Mengharuskan citra yang diterapkan dalam cakupan tertentu di kluster menggunakan format digest.
Tingkat keparahan: low.
Parameter: Tidak ada.
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKImageDigests
metadata:
name: container-image-must-have-digest
spec:
match:
kinds:
- apiGroups: [""]
kinds: ["Pod"]
namespaces:
- "test-gatekeeper"Diizinkan:
apiVersion: v1
kind: Pod
metadata:
name: pod-0
namespace: test-gatekeeper
spec:
containers:
- image: openpolicyagent/test-webserver@sha256:12e469267d21d66ac9dcae33a4d3d202ccb2591869270b95d0aad7516c7d075b
name: test-containerDilarang:
apiVersion: v1
kind: Pod
metadata:
name: bad-1
namespace: test-gatekeeper
spec:
containers:
- image: k8s.gcr.io/test-webserver
name: test-container
initContainers:
- image: k8s.gcr.io/test-webserver
name: test-container2ACKRequiredLabels
Deskripsi aturan: Memverifikasi bahwa pod berisi label tertentu dan memastikan nilai label sesuai dengan format yang telah ditentukan. Anda dapat menentukan ekspresi reguler untuk setiap kunci label guna memvalidasi nilainya. Anda juga dapat menggunakan parameter optional untuk mengontrol apakah validasi label bersifat wajib.
Tingkat keparahan: low.
Parameter:
Nama Parameter | Tipe | Deskripsi |
| string | Ekspresi reguler untuk daftar putih label. |
| string | Kunci tag yang divalidasi. |
| bool | Menentukan apakah pod boleh tidak memiliki tag ini.
|
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKRequiredLabels
metadata:
name: must-have-label-test
spec:
match:
kinds:
- apiGroups: [""]
kinds: ["Pod"]
namespaces:
- "test-gatekeeper"
parameters:
labels:
- key: test
allowedRegex: "^test.*$"
- key: env
allowedRegex: "^(dev|prod)$"
optional: trueDiizinkan:
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
name: test
namespace: test-gatekeeper
labels:
'test': 'test_233'
spec:
containers:
- name: mycontainer
image: redisDilarang:
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
name: bad2
namespace: test-gatekeeper
labels:
'test': '233'
'env': 'invalid'
spec:
containers:
- name: mycontainer
image: redisACKRequiredProbes
Deskripsi aturan: Mengharuskan pod yang diterapkan dalam cakupan tertentu di kluster dikonfigurasi dengan jenis readinessProbe dan livenessProbe tertentu.
Tingkat keparahan: medium.
Parameter:
Nama Parameter | Jenis Parameter | Deskripsi |
| array | Probe yang harus dikonfigurasi dalam pod. Misalnya, readinessProbe dan livenessProbe. |
| array | Jenis probe yang harus dikonfigurasi dalam pod. Misalnya, tcpSocket, httpGet, dan exec. |
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKRequiredProbes
metadata:
name: must-have-probes
spec:
match:
kinds:
- apiGroups: [""]
kinds: ["Pod"]
namespaces:
- "test-gatekeeper"
parameters:
probes: ["readinessProbe", "livenessProbe"]
probeTypes: ["tcpSocket", "httpGet", "exec"]Diizinkan:
apiVersion: v1
kind: Pod
metadata:
name: p4
namespace: test-gatekeeper
spec:
containers:
- name: liveness
image: k8s.gcr.io/busybox
readinessProbe:
exec:
command:
- cat
- /tmp/healthy
initialDelaySeconds: 5
periodSeconds: 5
livenessProbe:
exec:
command:
- cat
- /tmp/healthy
initialDelaySeconds: 5
periodSeconds: 5Dilarang:
apiVersion: v1
kind: Pod
metadata:
name: p1
namespace: test-gatekeeper
spec:
containers:
- name: liveness
image: k8s.gcr.io/busyboxACKCheckNginxPath
Mencegah konfigurasi berbahaya dalam bidang spec.rules[].http.paths[].path instance Ingress. Anda harus mengaktifkan kebijakan ini untuk versi Ingress-nginx sebelum 1.2.1.
Tingkat keparahan: high.
Parameter: Tidak ada.
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKCheckNginxPath
metadata:
name: block-nginx-path
spec:
enforcementAction: deny
match:
kinds:
- apiGroups: ["extensions", "networking.k8s.io"]
kinds: ["Ingress"]
namespaces:
- "test-gatekeeper"Diizinkan:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: good-paths
namespace: test-gatekeeper
spec:
rules:
- host: cafe.example.com
http:
paths:
- path: /tea
pathType: Prefix
backend:
service:
name: tea-svc
port:
number: 80
- path: /coffee
pathType: Prefix
backend:
service:
name: coffee-svc
port:
number: 80Dilarang:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: bad-path-secrets
namespace: test-gatekeeper
spec:
rules:
- host: cafe.example.com
http:
paths:
- path: /var/run/secrets
pathType: Prefix
backend:
service:
name: tea-svc
port:
number: 80ACKCheckNginxAnnotation
Mencegah konfigurasi berbahaya dalam bidang metadata.annotations instance Ingress. Anda harus mengaktifkan kebijakan ini untuk versi Ingress-nginx sebelum 1.2.1.
Tingkat keparahan: high.
Parameter: Tidak ada.
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKCheckNginxAnnotation
metadata:
name: block-nginx-annotation
spec:
match:
kinds:
- apiGroups: ["extensions", "networking.k8s.io"]
kinds: ["Ingress"]
namespaces:
- "test-gatekeeper"Diizinkan:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: good-annotations
namespace: test-gatekeeper
annotations:
nginx.org/good: "value"
spec:
rules:
- host: cafe.example.com
http:
paths:
- path: /tea
pathType: Prefix
backend:
service:
name: tea-svc
port:
number: 80
- path: /coffee
pathType: Prefix
backend:
service:
name: coffee-svc
port:
number: 80Dilarang:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: var-run-secrets
namespace: test-gatekeeper
annotations:
nginx.org/bad: "/var/run/secrets"
spec:
rules:
- host: cafe.example.com
http:
paths:
- path: /tea
pathType: Prefix
backend:
service:
name: tea-svc
port:
number: 80
- path: /coffee
pathType: Prefix
backend:
service:
name: coffee-svc
port:
number: 80ACKBlockInternetLoadBalancer
Deskripsi aturan: Mencegah pembuatan layanan LoadBalancer yang menghadap Internet.
Tingkat keparahan: high.
Parameter: Tidak ada.
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKBlockInternetLoadBalancer
metadata:
name: block-internet-load-balancer
spec:
match:
kinds:
- apiGroups: [""]
kinds: ["Service"]
namespaces: ["test-gatekeeper"]Diizinkan:
apiVersion: v1
kind: Service
metadata:
name: my-service
namespace: non-test-gatekeeper
annotations:
'service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type': 'intranet'
spec:
selector:
app: MyApp
ports:
- name: http
protocol: TCP
port: 80
targetPort: 9376
type: LoadBalancerDilarang:
apiVersion: v1
kind: Service
metadata:
name: bad-service-2
namespace: test-gatekeeper
annotations:
'service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type': 'internet'
spec:
type: LoadBalancer
selector:
app: MyApp
ports:
- name: http
protocol: TCP
port: 80
targetPort: 9376RatifyVerification
Deskripsi aturan: Setelah Anda menginstal komponen Ratify dari pasar di kluster, Anda dapat menggunakan kebijakan ini untuk memverifikasi metadata keamanan, seperti signature atau bill of materials (BOM), untuk citra pod yang diterapkan dalam cakupan tertentu.
Tingkat keparahan: high.
Parameter: Tidak ada.
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: RatifyVerification
metadata:
name: ratify-constraint
spec:
enforcementAction: deny
match:
kinds:
- apiGroups: [""]
kinds: ["Pod"]
namespaces: ["default"]Diizinkan:
apiVersion: v1
kind: Pod
metadata:
name: pod-1
namespace: test-gatekeeper
spec:
containers:
- image: registry.cn-hangzhou.aliyuncs.com/acs/signed # Deploy an image with a valid signature.
name: test-containerDilarang:
apiVersion: v1
kind: Pod
metadata:
name: bad-1
namespace: test-gatekeeper
spec:
containers:
- image: registry.cn-hangzhou.aliyuncs.com/acs/unsigned # Deploy an invalid image that fails the Ratify signature verification.
name: test-containerPSP
ACKPSPAllowedUsers
Deskripsi aturan: Membatasi user, group, supplementalGroups, dan fsGroup saat startup untuk pod yang diterapkan dalam cakupan tertentu di kluster.
Tingkat keparahan: medium.
Parameter:
Parameter | Jenis parameter | Deskripsi |
| object | Untuk deskripsi detail parameter ini, lihat konfigurasi User dalam aturan PSP asli. Mendukung konfigurasi jenis aturan serta UID minimum dan maksimum. Untuk informasi selengkapnya, lihat Users and groups. |
| object | Untuk deskripsi detail parameter ini, lihat konfigurasi Group dalam aturan PSP asli. Mendukung konfigurasi jenis aturan serta UID minimum dan maksimum. Untuk informasi selengkapnya, lihat Users and groups. |
| object | Untuk deskripsi detail parameter ini, lihat konfigurasi SupplementalGroups dalam aturan PSP asli. Mendukung konfigurasi jenis aturan serta UID minimum dan maksimum. Untuk informasi selengkapnya, lihat Users and groups. |
| object | Untuk deskripsi detail parameter ini, lihat konfigurasi fsGroup dalam aturan PSP asli. Mendukung konfigurasi jenis aturan serta UID minimum dan maksimum. Untuk informasi selengkapnya, lihat Users and groups. |
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKPSPAllowedUsers
metadata:
name: psp-pods-allowed-user-ranges
spec:
match:
kinds:
- apiGroups: [""]
kinds: ["Pod"]
namespaces:
- "test-gatekeeper"
parameters:
runAsUser:
rule: MustRunAs # MustRunAsNonRoot # RunAsAny
ranges:
- min: 100
max: 200
runAsGroup:
rule: MustRunAs # MayRunAs # RunAsAny
ranges:
- min: 100
max: 200
supplementalGroups:
rule: MustRunAs # MayRunAs # RunAsAny
ranges:
- min: 100
max: 200
fsGroup:
rule: MustRunAs # MayRunAs # RunAsAny
ranges:
- min: 100
max: 200Diizinkan:
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: test
name: good2
namespace: test-gatekeeper
spec:
securityContext:
fsGroup: 150
supplementalGroups:
- 150
containers:
- image: test
name: test
securityContext:
runAsUser: 150
runAsGroup: 150Dilarang:
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: test
name: bad
namespace: test-gatekeeper
spec:
containers:
- image: test
name: testACKPSPAllowPrivilegeEscalationContainer
Deskripsi aturan: Membatasi konfigurasi parameter allowPrivilegeEscalation untuk pod yang diterapkan dalam cakupan tertentu di kluster.
Tingkat keparahan: medium.
Parameter: Tidak ada.
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKPSPAllowPrivilegeEscalationContainer
metadata:
name: psp-allow-privilege-escalation-container
spec:
match:
kinds:
- apiGroups: [""]
kinds: ["Pod"]
namespaces:
- "test-gatekeeper"Diizinkan:
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: test
name: good
namespace: test-gatekeeper
spec:
containers:
- image: test
name: test
securityContext:
allowPrivilegeEscalation: false
initContainers:
- image: test
name: test2
securityContext:
allowPrivilegeEscalation: falseDilarang:
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: test
name: bad
namespace: test-gatekeeper
spec:
containers:
- image: test
name: testACKPSPAppArmor
Deskripsi aturan: Membatasi konfigurasi AppArmor untuk pod yang diterapkan dalam cakupan tertentu di kluster.
Tingkat keparahan: low.
Parameter:
Nama parameter | Jenis parameter | Deskripsi |
| array | Probe yang harus dikonfigurasi dalam pod. Misalnya, readinessProbe dan livenessProbe. |
| array | Jenis probe yang harus dikonfigurasi dalam pod. Misalnya, tcpSocket, httpGet, dan exec. |
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKPSPAppArmor
metadata:
name: psp-apparmor
spec:
match:
kinds:
- apiGroups: [""]
kinds: ["Pod"]
namespaces:
- "test-gatekeeper"
parameters:
allowedProfiles:
- runtime/defaultDiizinkan:
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: test
name: good
namespace: test-gatekeeper
annotations:
'container.apparmor.security.beta.kubernetes.io/test': 'runtime/default'
'container.apparmor.security.beta.kubernetes.io/test2': 'runtime/default'
spec:
containers:
- image: test
name: test
initContainers:
- image: test
name: test2Dilarang:
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: test
name: bad
namespace: test-gatekeeper
spec:
containers:
- image: test
name: testACKPSPCapabilities
Deskripsi aturan: Membatasi konfigurasi Linux Capabilities untuk pod yang diterapkan dalam cakupan tertentu di kluster.
Tingkat keparahan: high.
Parameter:
Nama Parameter | Jenis parameter | Deskripsi |
| array | Daftar putih capabilities yang diizinkan. |
| array | capabilities yang harus di-drop. |
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKPSPCapabilities
metadata:
name: psp-capabilities
spec:
match:
kinds:
- apiGroups: [""]
kinds: ["Pod"]
namespaces:
- "test-gatekeeper"
parameters:
allowedCapabilities: ["CHOWN"]
requiredDropCapabilities: ["NET_ADMIN", "SYS_ADMIN", "NET_RAW"]Diizinkan:
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: test
name: good-4
namespace: test-gatekeeper
spec:
containers:
- image: test
name: test
securityContext:
capabilities:
add:
- CHOWN
drop:
- "NET_ADMIN"
- "SYS_ADMIN"
- "NET_RAW"Dilarang:
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: test
name: bad-1
namespace: test-gatekeeper
spec:
containers:
- image: test
name: testACKPSPFlexVolumes
Deskripsi aturan: Membatasi konfigurasi driver FlexVolume untuk pod yang diterapkan dalam cakupan tertentu di kluster.
Tingkat keparahan: medium.
Parameter:
Nama parameter | Jenis parameter | Deskripsi |
| array | Daftar driver FlexVolume yang diizinkan. |
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKPSPFlexVolumes
metadata:
name: psp-flexvolume-drivers
spec:
match:
kinds:
- apiGroups: [""]
kinds: ["Pod", "PersistentVolume"]
namespaces:
- "test-gatekeeper"
parameters:
allowedFlexVolumes: #[]
- driver: "alicloud/disk"
- driver: "alicloud/nas"
- driver: "alicloud/oss"
- driver: "alicloud/cpfs"Diizinkan:
apiVersion: v1
kind: Pod
metadata:
name: pv-nas
namespace: test-gatekeeper
spec:
containers:
- name: test
image: test
volumes:
- name: test
flexVolume:
driver: "alicloud/nas"Dilarang:
apiVersion: v1
kind: Pod
metadata:
name: pv-oss-flexvolume
namespace: test-gatekeeper
spec:
containers:
- name: test
image: test
volumes:
- name: test
flexVolume:
driver: "alicloud/ossxx"ACKPSPForbiddenSysctls
Deskripsi aturan: Membatasi rentang sysctls terlarang untuk pod yang diterapkan dalam cakupan tertentu di kluster.
Tingkat Keparahan: Tinggi.
Parameter:
Nama Parameter | Jenis parameter | Deskripsi |
| array | Daftar sysctls terlarang di pod. |
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKPSPForbiddenSysctls
metadata:
name: psp-forbidden-sysctls
spec:
match:
kinds:
- apiGroups: [""]
kinds: ["Pod"]
namespaces:
- "test-gatekeeper"
parameters:
forbiddenSysctls:
# - "*" # * may be used to forbid all sysctls
- "kernel.*"Diizinkan:
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: test
name: good-2
namespace: test-gatekeeper
spec:
securityContext:
sysctls:
- name: 'net.ipv4.tcp_syncookies'
value: "65536"
containers:
- image: test
name: testDilarang:
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: test
name: bad-1
namespace: test-gatekeeper
spec:
securityContext:
sysctls:
- name: 'kernel.shm_rmid_forced'
value: '1024'
containers:
- image: test
name: testACKPSPFSGroup
Deskripsi aturan: Membatasi konfigurasi fsGroup untuk pod yang diterapkan dalam cakupan tertentu di kluster.
Tingkat keparahan: medium.
Parameter:
Nama Parameter | Jenis Parameter | Deskripsi |
| string | Untuk deskripsi detail parameter ini, lihat konfigurasi fsGroup dalam aturan PSP asli. Nilai yang didukung adalah MustRunAs, MayRunAs, dan RunAsAny. Untuk informasi selengkapnya, lihat Volumes and file systems. |
| object | Berisi nilai berikut:
|
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKPSPFSGroup
metadata:
name: psp-fsgroup
spec:
match:
kinds:
- apiGroups: [""]
kinds: ["Pod"]
namespaces:
- "test-gatekeeper"
parameters:
rule: "MayRunAs" #"MustRunAs" #"MayRunAs", "RunAsAny"
ranges:
- min: 1
max: 1000Diizinkan:
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: test
name: good
namespace: test-gatekeeper
spec:
securityContext:
fsGroup: 100
containers:
- image: test
name: testDilarang:
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: test
name: bad-1
namespace: non-test-gatekeeper
spec:
securityContext:
fsGroup: 0
shareProcessNamespace: true
containers:
- image: test
name: testACKPSPHostFilesystem
Deskripsi aturan: Membatasi rentang direktori host yang dapat dipasang oleh pod yang diterapkan dalam cakupan tertentu di kluster.
Tingkat keparahan: high.
Parameter:
Nama parameter | Jenis parameter | Deskripsi |
| object | Konfigurasi daftar putih path host. |
| boolean | Menentukan apakah path bersifat read-only. |
| string | Awalan path. |
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKPSPHostFilesystem
metadata:
name: psp-host-filesystem
spec:
match:
kinds:
- apiGroups: [""]
kinds: ["Pod"]
namespaces:
- "test-gatekeeper"
parameters:
allowedHostPaths:
- readOnly: true
pathPrefix: "/foo"Diizinkan:
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: test
name: good1
namespace: test-gatekeeper
spec:
containers:
- image: test
name: test
volumeMounts:
- name: test-volume
mountPath: "/projected-volume"
readOnly: true
volumes:
- name: test-volume
hostPath:
path: /fooDilarang:
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: test
name: bad
namespace: test-gatekeeper
spec:
containers:
- image: test
name: test
volumes:
- name: test-volume
hostPath:
path: /data
type: FileACKPSPHostNamespace
Deskripsi aturan: Membatasi apakah pod yang diterapkan dalam cakupan tertentu di kluster boleh berbagi namespace host.
Tingkat keparahan: high.
Parameter: Tidak ada.
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKPSPHostNamespace
metadata:
name: psp-host-namespace
spec:
match:
kinds:
- apiGroups: [""]
kinds: ["Pod"]
namespaces:
- "test-gatekeeper"Diizinkan:
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: test
name: good
namespace: test-gatekeeper
spec:
containers:
- image: test
name: test
resources: {}
dnsPolicy: ClusterFirst
restartPolicy: Never
status: {}Dilarang:
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: test
name: bad
namespace: test-gatekeeper
spec:
hostPID: true
containers:
- image: test
name: test
resources: {}
dnsPolicy: ClusterFirst
restartPolicy: Never
status: {}ACKPSPHostNetworkingPorts
Deskripsi aturan: Membatasi penggunaan jaringan host dan port tertentu oleh pod yang diterapkan dalam cakupan tertentu di kluster.
Tingkat Keparahan: Tinggi.
Parameter:
Nama Parameter | Tipe | Deskripsi |
| boolean | Menentukan apakah pod diizinkan berbagi jaringan host. |
| int | Nilai minimum hostPort. |
| int | Nilai maksimum hostPort. |
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKPSPHostNetworkingPorts
metadata:
name: psp-host-network-ports
spec:
match:
kinds:
- apiGroups: [""]
kinds: ["Pod"]
namespaces:
- "test-gatekeeper"
parameters:
hostNetwork: true
min: 80
max: 9000Diizinkan:
apiVersion: v1
kind: Pod
metadata:
name: good-2
namespace: test-gatekeeper
spec:
hostNetwork: true
containers:
- image: k8s.gcr.io/test-webserver
name: test-container
ports:
- hostPort: 80
containerPort: 80
initContainers:
- image: k8s.gcr.io/test-webserver
name: test-container2
ports:
- hostPort: 8080
containerPort: 8080Dilarang:
apiVersion: v1
kind: Pod
metadata:
name: bad-1
namespace: non-test-gatekeeper
spec:
hostNetwork: true
containers:
- image: k8s.gcr.io/test-webserver
name: test-container
ports:
- hostPort: 22
containerPort: 22ACKPSPPrivilegedContainer
Deskripsi aturan: Mencegah startup kontainer istimewa dalam pod yang diterapkan dalam cakupan tertentu di kluster.
Tingkat keparahan: high.
Parameter: Tidak ada.
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKPSPPrivilegedContainer
metadata:
name: psp-privileged-container
spec:
match:
kinds:
- apiGroups: [""]
kinds: ["Pod"]
namespaces:
- "test-gatekeeper"Diizinkan:
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: test
name: good1
namespace: test-gatekeeper
spec:
containers:
- image: test
name: testDilarang:
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: test
name: bad
namespace: test-gatekeeper
spec:
containers:
- image: test
name: test
securityContext:
privileged: true
dnsPolicy: ClusterFirst
restartPolicy: NeverACKPSPProcMount
Deskripsi aturan: Membatasi jenis pemasangan proc yang diizinkan untuk pod yang diterapkan dalam cakupan tertentu di kluster.
Tingkat keparahan: high.
Parameter:
Nama Parameter | Tipe | Deskripsi |
| string | Jenis pemasangan proc. Jenis berikut diizinkan:
Untuk informasi selengkapnya tentang pengaturan parameter, lihat AllowedProcMountTypes. |
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKPSPProcMount
metadata:
name: psp-proc-mount
spec:
match:
kinds:
- apiGroups: [""]
kinds: ["Pod"]
namespaces:
- "test-gatekeeper"
parameters:
procMount: Default # Default or UnmaskedDiizinkan:
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: test
name: good1
namespace: test-gatekeeper
spec:
containers:
- image: test
name: test
securityContext:
procMount: "Default"Dilarang:
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: test
name: bad3
namespace: test-gatekeeper
spec:
hostUsers: false
containers:
- image: test
name: test
securityContext:
procMount: "Unmasked"
initContainers:
- image: test
name: test2ACKPSPReadOnlyRootFilesystem
Deskripsi aturan: Mengharuskan pod yang diterapkan dalam cakupan tertentu di kluster menggunakan sistem file root read-only.
Tingkat keparahan: medium.
Parameter: Tidak ada.
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKPSPReadOnlyRootFilesystem
metadata:
name: psp-readonlyrootfilesystem
spec:
match:
kinds:
- apiGroups: [""]
kinds: ["Pod"]
namespaces:
- "test-gatekeeper"Diizinkan:
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: test
name: good1
namespace: test-gatekeeper
spec:
containers:
- image: test
name: test
securityContext:
readOnlyRootFilesystem: trueDilarang:
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: test
name: bad2
namespace: non-test-gatekeeper
spec:
containers:
- image: test
name: test
securityContext:
readOnlyRootFilesystem: false
initContainers:
- image: test
name: test2ACKPSPSeccomp
Deskripsi aturan: Membatasi pod yang diterapkan dalam cakupan tertentu di kluster agar hanya menggunakan profil Seccomp tertentu.
Tingkat Kepentingan: Rendah
Parameter:
Nama Parameter | Jenis parameter | Deskripsi metrik |
| array | Daftar putih tipe profil Seccomp yang diizinkan. |
| array | Profil Seccomp yang diizinkan. |
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKPSPSeccomp
metadata:
name: psp-seccomp
spec:
match:
kinds:
- apiGroups: [""]
kinds: ["Pod"]
namespaces:
- "test-gatekeeper"
parameters:
allowedProfileTypes:
# - Unconfined
- RuntimeDefault
- Localhost
allowedProfiles:
- runtime/default
- docker/default
- localhost/profiles/audit.jsonDiizinkan:
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: test
name: good
namespace: test-gatekeeper
spec:
containers:
- image: test
name: test
securityContext:
seccompProfile:
type: Localhost
localhostProfile: profiles/audit.json
initContainers:
- image: test
name: test2
securityContext:
seccompProfile:
type: Localhost
localhostProfile: profiles/audit.jsonDilarang:
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: test
echo-k8s-webhook-enabled: 'true'
name: bad
namespace: test-gatekeeper
spec:
containers:
- image: test
name: testACKPSPSELinuxV2
Deskripsi aturan: Mengharuskan pod yang diterapkan dalam cakupan tertentu di kluster menggunakan konfigurasi SELinux yang ditentukan dalam parameter allowedSELinuxOptions.
Tingkat keparahan: low.
Parameter:
Nama parameter | Jenis parameter | Deskripsi |
| object | Daftar putih konfigurasi SELinux yang diizinkan. Untuk informasi selengkapnya, lihat SELinuxOptions v1 core. |
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKPSPSELinuxV2
metadata:
name: psp-selinux-v2
spec:
match:
kinds:
- apiGroups: [""]
kinds: ["Pod"]
namespaces:
- "test-gatekeeper"
parameters:
allowedSELinuxOptions:
- level: s0:c123,c456
role: object_r
type: svirt_sandbox_file_t
user: system_uDiizinkan:
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: test
name: good
namespace: test-gatekeeper
spec:
securityContext:
seLinuxOptions:
level: "s0:c123,c456"
containers:
- image: test
name: testDilarang:
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: test
name: bad
namespace: test-gatekeeper
spec:
containers:
- image: test
name: test
securityContext:
seLinuxOptions:
level: "s0:c123,c455"ACKPSPVolumeTypes
Deskripsi aturan: Membatasi pod yang diterapkan dalam cakupan tertentu di kluster agar hanya menggunakan jenis pemasangan volume tertentu.
Tingkat keparahan: low.
Parameter:
Nama Parameter | Type | Deskripsi |
volumes | array | Daftar jenis pemasangan volume yang diizinkan. |
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKPSPVolumeTypes
metadata:
name: psp-volume-types
spec:
match:
kinds:
- apiGroups: [""]
kinds: ["Pod"]
namespaces:
- "test-gatekeeper"
parameters:
volumes:
# - "*" # * may be used to allow all volume types
- configMap
# - emptyDir
- projected
- secret
- downwardAPI
- persistentVolumeClaim
# - hostPath #required for allowedHostPaths
- flexVolume #required for allowedFlexVolumesDiizinkan:
apiVersion: v1
kind: Pod
metadata:
name: pv-oss
namespace: test-gatekeeper
spec:
containers:
- name: test
image: test
volumes:
- name: test
flexVolume:
driver: "alicloud/oss"Dilarang:
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: test
name: bad-1
namespace: test-gatekeeper
spec:
containers:
- image: test
name: test
volumes:
- name: test-volume
hostPath:
path: /dataFinOps
ACKContainerRequests
Deskripsi aturan: Mengharuskan pod aplikasi tertentu dalam kluster mendeklarasikan resource requests.
Tingkat keparahan: low.
Parameter:
Parameter | Jenis parameter | Deskripsi |
| string | Nilai maksimum untuk |
| string | Nilai maksimum untuk |
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKContainerRequests
metadata:
name: container-must-have-requests
spec:
enforcementAction: deny
match:
kinds:
- apiGroups: [""]
kinds: ["Pod"]
namespaces:
- "test-gatekeeper"
parameters:
cpu: "1000m"
memory: "1Gi"Diizinkan:
apiVersion: v1
kind: Pod
metadata:
name: pod-1
namespace: test-gatekeeper
spec:
containers:
- image: openpolicyagent/test-webserver
name: test-container
resources:
requests:
memory: "100Mi"
cpu: "500m"Dilarang:
apiVersion: v1
kind: Pod
metadata:
name: pod-0
namespace: test-gatekeeper
spec:
containers:
- image: openpolicyagent/test-webserver
name: test-containerACKContainerResourcesWhitelist
Deskripsi aturan: Mengharuskan konfigurasi resource CPU dan memori pod aplikasi tertentu dalam kluster dipilih dari daftar opsi yang telah ditentukan.
Tingkat keparahan: low.
Parameter:
Parameter | Jenis Parameter | Deskripsi |
| array | Daftar putih |
| array | Daftar putih |
| array | Daftar putih |
| array | Daftar putih |
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKContainerResourcesWhitelist
metadata:
name: container-resources-whitelist
spec:
enforcementAction: deny
match:
kinds:
- apiGroups: [ "" ]
kinds: [ "Pod" ]
namespaces:
- "test-gatekeeper"
parameters:
cpuRequests:
- "100m"
- "500m"
- "1"
cpuLimits:
- "2"
- "4000m"
memoryRequests:
- "256Mi"
- "512Mi"
memoryLimits:
- "1Gi"
- "2048Mi"Diizinkan:
apiVersion: v1
kind: Pod
metadata:
name: pod-0
namespace: test-gatekeeper
spec:
containers:
- image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
name: test-container
resources:
requests:
cpu: 100m
memory: 512Mi
limits:
cpu: "2"
memory: 1GiDilarang:
apiVersion: v1
kind: Pod
metadata:
name: pod-0
namespace: test-gatekeeper
spec:
containers:
- image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
name: test-container
resources:
requests:
cpu: 10m
memory: 512Mi
limits:
cpu: "1"
memory: 1GiACKContainerResourcesRange
Deskripsi aturan: Membatasi konfigurasi resource pod aplikasi tertentu dalam kluster ke rentang tertentu.
Tingkat keparahan: low.
Parameter:
Nama parameter | Jenis Parameter | Deskripsi |
| object | Berisi nilai berikut:
|
| object | Berisi nilai berikut:
|
| object | Berisi nilai berikut:
|
| object | Berisi nilai berikut:
|
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKContainerResourcesRange
metadata:
name: container-resources-range
spec:
enforcementAction: deny
match:
kinds:
- apiGroups: [ "" ]
kinds: [ "Pod" ]
namespaces:
- "test-gatekeeper"
parameters:
cpuRequests:
min: "100m"
max: "1"
cpuLimits:
min: "500m"
max: "2"
memoryRequests:
min: "256Mi"
max: "512Mi"
memoryLimits:
min: "1Gi"
max: "2048Mi"Diizinkan:
apiVersion: v1
kind: Pod
metadata:
name: pod-0
namespace: test-gatekeeper
spec:
containers:
- image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
name: test-container
resources:
requests:
cpu: 100m
memory: 512Mi
limits:
cpu: "2"
memory: 2GiDilarang:
apiVersion: v1
kind: Pod
metadata:
name: pod-0
namespace: test-gatekeeper
spec:
containers:
- image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
name: test-container
resources:
requests:
cpu: 10m
memory: 5Mi
limits:
cpu: "3"
memory: 128MiACKRequiredNodeSelector
Deskripsi aturan: Mengharuskan pod aplikasi tertentu dalam kluster memiliki label nodeSelector yang dikonfigurasi.
Tingkat keparahan: low.
Parameter:
Nama Parameter | Jenis parameter | Deskripsi |
| array | Berisi nilai berikut:
|
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKRequiredNodeSelector
metadata:
name: must-have-nodeselector
spec:
enforcementAction: deny
match:
kinds:
- apiGroups: [""]
kinds: ["Pod"]
namespaces:
- "test-gatekeeper"
parameters:
nodeSelector:
- key: "node.alibabacloud.com/nodepool-id"
allowedRegex: "^np.*$"
- key: "kubernetes.io/os"
allowedRegex: "^linux$"Diizinkan:
apiVersion: v1
kind: Pod
metadata:
name: pod-0
namespace: test-gatekeeper
spec:
containers:
- image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
name: test-container
resources:
requests:
cpu: 100m
memory: 512Mi
limits:
cpu: "2"
memory: 1Gi
nodeSelector:
node.alibabacloud.com/nodepool-id: npd37f0e64410c41328a6282dbe5d35cae
kubernetes.io/os: linuxDilarang:
apiVersion: v1
kind: Pod
metadata:
name: pod-0
namespace: test-gatekeeper
spec:
containers:
- image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
name: test-container
resources:
requests:
cpu: 100m
memory: 512Mi
limits:
cpu: "2"
memory: 1Gi
nodeSelector:
node.alibabacloud.com/nodepool-id: npd37f0e64410c41328a6282dbe5d35cae
kubernetes.io/os: windowsACKWorkloadReplicasRange
Deskripsi aturan: Membatasi jumlah replika aplikasi ke rentang minimum dan maksimum tertentu.
Tingkat keparahan: low.
Parameter:
Parameter | Jenis parameter | Deskripsi |
| int | Jumlah minimum replika untuk aplikasi. |
| int | Jumlah maksimum replika untuk aplikasi. |
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKWorkloadReplicasRange
metadata:
name: replica-limiter
spec:
enforcementAction: deny
match:
kinds:
- apiGroups: ["*"]
kinds: ["Deployment", "StatefulSet", "ReplicaSet", "Scale"]
namespaces:
- "test-gatekeeper"
parameters:
minReplicas: 2
maxReplicas: 3Diizinkan:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment-basic
namespace: test-gatekeeper
labels:
app: nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
ports:
- containerPort: 80
resources:
limits:
cpu: "500m"Dilarang:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment-basic-0
namespace: test-gatekeeper
labels:
app: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
ports:
- containerPort: 80
resources:
limits:
cpu: "500m"
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment-basic-1
namespace: test-gatekeeper
labels:
app: nginx
spec:
replicas: 4
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
ports:
- containerPort: 80
resources:
limits:
cpu: "500m"ACKRestrictALBCreation
Deskripsi aturan: Mewajibkan penggunaan ulang instance Application Load Balancer (ALB) yang sudah ada dan melarang pembuatan instance ALB baru melalui AlbConfig.
Tingkat keparahan: low.
Parameter: Tidak ada.
Contoh:
Constraint:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ACKRestrictALBCreation
metadata:
name: restrict-alb-creation
spec:
enforcementAction: deny
match:
kinds:
- apiGroups: ["alibabacloud.com"]
kinds: ["AlbConfig"]Diizinkan:
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: reuse-alb
spec:
config:
id: 'abcdefghijklmnopqrstuvwxyz'
forceOverride: false
listenerForceOverride: falseDilarang:
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: alb
spec:
config:
name: alb
addressType: Internet
zoneMappings:
- vSwitchId: vsw-uf6ccg2a9g71hx8go**** # Replace with the vSwitch IDs of at least two vSwitches in different zones within the VPC where the cluster resides.
allocationId: eip-asdfas**** # Replace with the EIP ID. The default option is to automatically assign a public IP address.
- vSwitchId: vsw-uf6nun9tql5t8nh15**** # Replace with the vSwitch IDs of at least two vSwitches in different zones within the VPC where the cluster resides.
allocationId: eip-dpfmss**** # Replace with the EIP ID.
listeners:
- port: 80
protocol: HTTP