Kubernetes访问控制与控制器模式详解
1. Kubernetes访问控制要点
在Kubernetes集群中,访问控制是保障系统安全和稳定运行的关键。以下是一些重要的访问控制原则和建议:
- 避免通配符权限 :在定义Kubernetes集群的细粒度访问控制时,应遵循最小权限原则。定义Role和ClusterRoles时,要避免使用通配符权限,以防止意外操作。虽然在极少数情况下,使用通配符(如保护API组的所有资源)可能有意义,但建立一个通用的“无通配符”策略是个好做法,对于有充分理由的例外情况可以放宽。
- 避免使用cluster - admin ClusterRole :具有高权限的ServiceAccount可以对任何资源执行操作,如修改权限或查看任何命名空间中的机密信息,这可能会导致严重的安全问题。因此,绝对不要将cluster - admin ClusterRole分配给Pod。
- 不自动挂载ServiceAccount令牌 :默认情况下,ServiceAccount的令牌会挂载在容器文件系统的 /var/run/secrets/kubernetes.io/serviceaccount/token
路径下。如果Pod被攻破,攻击者可以使用该Pod关联的ServiceAccount权限与API服务器进行通信。然而,许多应用程序在业务操作中并不需要该令牌。对于这种情况,可以通过将ServiceAccount的 automountServiceAccountToken
字段设置为 false <