【发布时间】:2020-12-04 17:05:32
【问题描述】:
我在 minikube 中启用了 podsecuritypolicy。默认情况下,它创建了两个 psp - 特权和受限。
NAME PRIV CAPS SELINUX RUNASUSER FSGROUP SUPGROUP READONLYROOTFS VOLUMES
privileged true * RunAsAny RunAsAny RunAsAny RunAsAny false *
restricted false RunAsAny MustRunAsNonRoot MustRunAs MustRunAs false configMap,emptyDir,projected,secret,downwardAPI,persistentVolumeClaim
我还创建了一个 linux 用户 - kubexz,为此我创建了 ClusterRole 和 RoleBinding 来限制只管理 kubexz 命名空间上的 pod,并使用受限 psp。
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: only-edit
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["create", "delete", "deletecollection", "patch", "update", "get", "list", "watch"]
- apiGroups: ["policy"]
resources: ["podsecuritypolicies"]
resourceNames: ["restricted"]
verbs: ["use"]
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: RoleBinding
metadata:
name: kubexz-rolebinding
namespace: kubexz
subjects:
- kind: User
name: kubexz
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: only-edit
我已经在我的 kubexz 用户 $HOME/.kube 中设置了 kubeconfig 文件。 RBAC 工作正常 - 对于 kubexz 用户,我只能按预期在 kubexz 命名空间中创建和管理 pod 资源。
但是,当我使用 securityContext.privileged: true 发布 pod 清单时,受限的 podsecuritypolicy 并没有阻止我创建该 pod。我应该无法创建具有特权容器的 pod。但是 pod 正在创建中。不知道我错过了什么
apiVersion: v1
kind: Pod
metadata:
name: new-pod
spec:
hostPID: true
containers:
- name: justsleep
image: alpine
command: ["/bin/sleep", "999999"]
securityContext:
privileged: true
【问题讨论】:
-
请解释这两个语句:1.我还创建了一个linux用户-kubexz,我为此创建了ClusterRole和RoleBinding,2.我在我的kubexz用户$HOME/中设置了kubeconfig文件.kube 3. 您使用了哪些命令来创建这些设置并验证您的配置?
-
@Hanx 创建了一个 linux 用户 - useradd kubexz。然后使用 openssl 命令创建密钥、csr 和证书(由 ca.cert 签名)。然后设置 kubeconfig 文件清单。为集群角色和角色绑定编写清单(查看我的问题描述)。
标签: kubernetes minikube rbac kubernetes-rbac podsecuritypolicy