“更新”Kubernetes RBAC 权限有什么作用?

Heb*_*rst 4 updates rbac kubernetes kubernetes-rbac

我怎么也找不到所有 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 RBAC 动词的意义是什么update

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

Heb*_*rst 6

接下来,我访问了 Kubernetes REST API 文档,其中有一长串可以对 REST 服务器进行的所有 HTTP API 调用的列表。

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

  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
Run Code Online (Sandbox Code Playgroud)

我可以运行这个命令吗?

我将权限扩展到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"
Run Code Online (Sandbox Code Playgroud)

出色地。patch看来这也需要权限。

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

反正。

我的结论:看起来update确实没什么用,至少对于部署来说是这样。

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