Kubernetes 中,认证(Authentication)、授权(Authorization)和准入控制(Admission Control)是三个关键的安全机制,它们共同确保了集群的安全和资源的正确使用。这三者的作用各不相同:
1. 认证(Authentication)
认证是确定用户或进程身份的过程。在 Kubernetes 中,它涉及到确认一个请求是否来自一个有效的用户。这个过程不涉及判断用户能做什么或应该有哪些权限,仅仅是确认其身份。常见的认证方法包括:
- 静态令牌文件: 通过令牌来识别用户。
- 客户端证书认证: 使用 TLS 客户端证书。
- Bearer Token: 提供 OAuth2 令牌。
- HTTP 基本认证: 使用基本的用户名和密码方法。
- 身份验证代理: 使用外部的认证服务。
2. 授权(Authorization)
授权发生在认证之后,是决定一个已认证的用户可以执行哪些操作的过程。它基于用户的身份来决定他们可以访问哪些 Kubernetes 资源以及可以对这些资源执行哪些操作。Kubernetes 提供了多种授权机制,例如:
- Node: 特别为 Kubernetes 节点设计的授权模式。
- ABAC(基于属性的访问控制): 使用属性来定义访问规则。
- RBAC(基于角色的访问控制): 通过角色来定义权限,是最常用的授权方法。
- Webhook: 使用外部的 REST 服务来决定访问权限。
3. 准入控制(Admission Control)
准入控制器在认证和授权之后运行,是一种用于拦截、修改或拒绝对 API 的请求的机制。这些控制器可以在对象被持久化到 Kubernetes 集群的数据库之前修改或验证这些对象。它们用于执行各种策略,如资源配额、安全策略等。常见的准入控制器包括:
- PodSecurityPolicy: 确保 Pod 符合预定义的安全策略。
- ResourceQuota: 管理对资源的使用。
- LimitRanger: 设置资源使用的默认或最大值。
总的来说,这三个机制共同构成了 Kubernetes 的安全架构,确保了只有合法的用户才能以合适的权限访问集群资源,同时对于这些资源的使用和修改提供了额外的策略限制和控制。