【发布时间】:2020-09-14 04:26:00
【问题描述】:
我有一个部署了我的应用程序的 Kubernetes 集群。 还有一些其他用户,他们应该只能将文件复制到 pod 中和从 pod 中复制。使用 kubectl cp 命令。 此用户上下文不应允许用户在集群上执行除 kubectl cp 之外的任何其他操作。
【问题讨论】:
标签: kubernetes kubectl rbac kubernetes-pod kubeconfig
我有一个部署了我的应用程序的 Kubernetes 集群。 还有一些其他用户,他们应该只能将文件复制到 pod 中和从 pod 中复制。使用 kubectl cp 命令。 此用户上下文不应允许用户在集群上执行除 kubectl cp 之外的任何其他操作。
【问题讨论】:
标签: kubernetes kubectl rbac kubernetes-pod kubeconfig
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 容器。这将使您在各个层面都能获得更好的控制。
【讨论】:
你可以使用 opa 和准入控制器,它只允许运行 api manifest 有一个特定的标签,如“cp”或“用户名”等,也可以从网守中受益
【讨论】: