概述目标:以OPA Gatekeeper在集群内实施安全与规范策略,阻止不合规资源进入并进行审计报告。适用:生产集群的安全基线与规范治理、命名约束、权限限制。核心与实战ConstraintTemplate(禁止特权容器):apiVersion: templates.gatekeeper.sh/v1beta1 kind: ConstraintTemplate metadata: name: k8sforbidprivileged spec: crd: spec: names: kind: K8sForbidPrivileged validation: openAPIV3Schema: type: object targets: - target: admission.k8s.gatekeeper.sh rego: | package k8sforbidprivileged violation[{ "msg": msg, "details": {}}] { input.review.kind.kind == "Pod" c := input.review.object.spec.containers[_] c.securityContext.privileged == true msg := "privileged containers are not allowed" } Constraint应用到命名空间:apiVersion: constraints.gatekeeper.sh/v1beta1 kind: K8sForbidPrivileged metadata: name: forbid-privileged-pods spec: match: namespaces: ["prod"] kinds: - apiGroups: [""] kinds: ["Pod"] 示例不合规资源被拒:apiVersion: v1 kind: Pod metadata: name: bad namespace: prod spec: containers: - name: c image: alpine securityContext: privileged: true 审计结果查看:kubectl get k8sforbidprivileged -o yaml kubectl -n gatekeeper-system logs deploy/gatekeeper-audit 验证与监控安装与健康:kubectl get pods -n gatekeeper-system kubectl get constraints,constrainttemplates 例外与豁免:使用`match.excludedNamespaces`或`namespaceSelector`进行例外处理。版本治理:在GitOps中版本化模板与约束,审计变更与影响面。常见误区仅编写ConstraintTemplate而未创建Constraint导致策略未生效;需绑定约束。审计未启用或未查看审计日志;需关注`gatekeeper-audit`输出。过于宽泛的匹配导致误拒;应精准限定命名空间与资源类型。结语Gatekeeper以策略即代码实现准入控制与审计,配合GitOps可持续治理K8s资源合规与安全。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部
1.491709s