在单节点 Kubernetes 集群上工作,我希望将限制性 pod 安全策略应用于通过 openid 进行身份验证的一组用户。所以步骤顺序是这样的。
- 初始化集群,并创建 Pod 安全策略。
- 在 API 服务器中应用准入控制器
PodSecurityPolicy
(这会导致 API 服务器重新启动) - 为用户创建一个
ClusterRole
和RoleBinding
。
通过 openid 对用户进行身份验证并获取他们的组效果很好,但是,限制PodSecurityPolicy
到这个组不起作用。示例ClusterRole
并RoleBinding
在下面给出。如果我使用system:authenticated
而不是mygroup
策略来创建新的 pod。
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: psp:restricted
rules:
- apiGroups:
- extensions
resources:
- podsecuritypolicies
resourceNames:
- restricted # the psp we are giving access to
verbs:
- use
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: psp:restricted
subjects:
- kind: Group
name: mygroup # My group from openid, DOESN'T WORK.
# name: system:authenticated # all authenticated users, WORKS.
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: ClusterRole
name: psp:restricted # A references to the role above
apiGroup: rbac.authorization.k8s.io