如何防止用户在 Rancher 端创建 Kubernetes Secret

How to prevent a user from creating a Kubernetes secret in the Rancher side

提问人:k0chan 提问时间:11/7/2023 最后编辑:k0chan 更新时间:11/13/2023 访问量:72

问:

长话短说。我有一个 Rancher 集群。集群中有一个 foo 项目,foo 项目中有一个 bar 命名空间。我为具有项目成员角色的 foo 项目分配了一个用户。rancher cluster -> foo project -> bar namespace

我的问题是,如何防止用户创建 Kubernetes 密钥对象?我想离开项目成员角色,但创建秘密权限除外,我想在 Rancher 端实现这一点。

到目前为止,我发现了什么?

  1. 我向 ChatGTP 询问了它,它给了我以下解决方案:“创建一个 RBAC 对象:角色和角色绑定,其中包含机密资源的 get、list 和 watch 谓词。我不想在我的情况下创建 RBAC。
  2. 牧场主的项目成员角色不包含秘密资源,所以我甚至不知道具有项目成员角色的用户如何能够创建秘密。谁能给我解释一下?

更新 #1

默认情况下,project-member 的 Rancher 角色继承自 Kubernetes-edit 角色,project-owner 角色继承自 Kubernetes-admin 角色。因此,项目成员和项目所有者角色都将允许命名空间管理,包括创建和删除命名空间的能力。

有一个编辑 ClusterRole 对象,其中包含用于创建机密的权限。

更新 #2

我可以创建一个自定义项目角色,该角色将从只读角色继承,然后我可以添加所需的权限和角色。我认为这可能是我的最佳选择。我不会将问题标记为已回答。

谢谢你的提前!

Kubernetes 牧场主

评论


答:

0赞 k0chan 11/13/2023 #1

这是我为实现目标所做的:

  1. 我创建了一个名为 restricted-project-member 的项目/命名空间角色
  2. restricted-project-member 角色继承自只读角色。
  3. 我从名为 edit 的 Kubernetes ClusterRole 获得了权限。
  4. 我直接将权限粘贴到 restricted-project-member,除了允许创建机密的权限。