kubernetes-policy-controller项目之前是在github.com/Azure托管。这里也简单介绍项目背景。
kubernetes-policy-controller
每个组织都有一些规则。其中一些对于满足治理至关重要,法律要求和其他要求是基于对过去经验的学习而不是重复相同的错误。这些决定不能容忍人类响应时间,因为他们需要接近实时行动。提供政策的服务可以使组织变得敏捷,对于长期成功至关重要,因为它们更具适应性,不容易发生人为错误,可以始终如一地发现违规和冲突。
Kubernetes允许通过准入控制器webhook将复杂逻辑(例如政策决策)与API服务器的内部工作分离。无论何时创建,更新或删除资源,都可以执行此webhook,并可用于实现复杂的自定义逻辑。kubernetes-policy-controller是一个变异(mutating)和验证(validating)的webhook,可以通过许可控制器调用Kubernetes API服务器请求。Kubernetes还有一个用于一般授权决策的扩展机制(不一定与资源相关),称为授权模块(authorization module)。通常只使用RBAC授权模块,但使用kubernetes-policy-controller,可以在RBAC前面实现黑名单。kubernetes-policy-controller使用Open Policy Agent(OPA),这是由CNCF托管的沙箱级项目,作为云原生环境的政策引擎。
Kubernetes合规性通过网络政策和pod安全政策等工具在“运行时(runtime)”实施。kubernetes-policy-controller在“创建(create)”事件中扩展合规执行,而不是在“运行(run)”事件中。 例如,kubernetes服务可以回答以下问题:
- 我们可以将注册表(registry)列入白名单/黑名单。
- 不允许冲突的主机进入(ingress)。
- 根据部门中的用户标记对象。
除了录取(admission)场景之外,它还有助于回答审核(audit)问题,例如:
- 我的群集违反了哪些政策。
在授权(authorization)场景中,可以阻止kubectl get、kubectl port-forward,甚至非资源请求(所有授权请求都可以被阻止)。
新的家园?
恭喜Azure和Open Policy Agent项目团队。