我有一个Kubernetes集群,其中已部署了我的应用程序。还有一些其他用户,他们只能将文件复制到Pod中或从Pod中复制文件。使用kubectl cp命令。该用户上下文不应允许用户对群集执行除kubectl cp之外的任何其他操作。
kubectl cp
内部使用exec
。无法提供仅复制的权限,但是您只能提供exec
权限。
创建具有pods/exec
权限的角色
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: default
name: pod-exec
rules:
- apiGroups: [""]
resources: ["pods/exec"]
verbs: ["create"]
创建角色绑定以将上述角色分配给user
。
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: pod-exec-binding
namespace: default
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: pod-exec
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: User
name: user
而不是使用kubectl cp,而是使用sftp或rsync服务器运行sidecar容器。这样可以更好地控制所有级别。