2

我终生无法找到所有 Kubernetes RBAC 动词作用的详细表格。我看到人们推荐的唯一资源是这个资源,这是严重不足的。

所以我一直在通过实验来解决它。

到目前为止,大多数都相当简单,除了UPDATE. 这似乎无法做任何我期望的事情。

权限我给了我的别名:命名空间中的 [ ]上的 [ GET, ] 。UPDATEdeploymentsdefault

我尝试过的事情:

  • kubectl set image deployment/hello-node echoserver=digitalocean/flask-helloworld --as user
  • kubectl edit deploy hello-node --as user
  • kubectl apply -f hello-node.yaml --as eks-user

这些都因错误而失败:deployments.apps "hello-node" is forbidden: User "user" cannot patch resource "deployments" in API group "apps" in the namespace "default"

然后我尝试了一些推出命令,例如:

  • k rollout undo deploy hello-node --as user

但他们失败了,因为我没有副本集访问权限。


TLDR: Kubernetes RBACupdate动词的意义何在?

就此而言,是否有人拥有所有 RBAC 动词的更详细列表?

4

1 回答 1

3

在此之后,我访问了 Kubernetes REST API 文档,其中有一长串您可以对 REST 服务器进行的所有 HTTP API 调用。

我认为这会有所帮助,因为通过将它们与 HTTP 动词进行比较来描述不同动词可以做什么的一 (1) 表可用。所以计划是:

  1. update查看权限等同于哪个 HTTP 动词。
  2. 转到参考并查找在部署中使用该 HTTP 动词的示例。
  3. 测试kubectl等效项。

所以。

什么 HTTP 动词等于update权限?

PUT.

PUT用于部署的示例?

Replace Scale:替换指定Deployment的scale

HTTP 请求 PUT /apis/apps/v1/namespaces/{namespace}/deployments/{name}/scale

等效的kubectl命令是什么?

好吧,我们正在扩展部署,所以我要说:

kubectl scale deployment hello-node --replicas=2

我可以运行这个命令吗?

我将权限扩展到deployment/scale第一个,然后运行它。

Error from server (Forbidden): deployments.apps "hello-node" is forbidden: User "user" cannot patch resource "deployments/scale" in API group "apps" in the namespace "default"

出色地。这也需要patch权限,它会出现。

尽管使用的 HTTP 动词是PUT根据 API 文档,并且PUT相当于update根据这些 RBAC 动词的任何信息的一 (1) 来源。

反正。

我的结论:update至少对于部署而言,这似乎确实毫无用处。

RBAC 设置起初看起来很有希望,但老实说,随着我发现越来越多的边缘情况和未记录的谜团,它开始失去光彩。访问权限似乎是最糟糕的事情,或者您的安全性最终更多的是通过默默无闻而不是确定性。

于 2020-11-09T16:19:48.523 回答