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

问题描述

我一生无法找到有关所有Kubernetes RBAC动词做什么的详细表格。我看到人们推荐的唯一资源是this one,这是可悲的不足。

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

到目前为止,除UPDATE之外,大多数内容都非常简单明了。我似乎无法做到这一点。

我给我的别名的权限: [GET命名空间中[{{1}

我尝试过的事情:

  • UPDATE
  • deployments
  • default

所有这些均因错误而失败:kubectl set image deployment/hello-node echoserver=digitalocean/flask-helloworld --as user

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

  • kubectl edit deploy hello-node --as user

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


TLDR :Kubernetes RBAC kubectl apply -f hello-node.yaml --as eks-user动词的意义是什么?

为此,有没有人提供所有RBAC动词的详细列表?

解决方法

紧接着,我去了Kubernetes REST API documentation,其中列出了您可以对REST服务器进行的所有HTTP API调用的一长列。

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

  1. 查看update权限等同于什么HTTP动词。
  2. 转到参考资料,找到在部署中使用该HTTP动词的示例。
  3. 测试等效的kubectl

所以

什么是HTTP动词等同于update权限?

PUT

使用PUT进行部署的示例?

替换规模:替换指定部署的规模

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权限。

尽管根据API文档,所使用的HTTP动词为 PUT ,而根据PUT却等同于update )有关这些RBAC动词的任何信息的来源。

反正。

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

起初,RBAC的设置似乎很有希望,但是老实说,随着我发现越来越多的边缘案例和未记录的谜团,它开始失去光泽。访问权限似乎绝对是最糟糕的事情,否则您的安全性最终将变得更加模糊而不是确定性。