我正在运行 gke 1.8.4 集群,并且发现访问资源的请求被允许的问题,即使 RBAC 拒绝它们
来自logs/kube-apiserver.log(我已经替换了我的用户名和我模拟的用户名,以<斜体>表示):
I1218 13:30:38.644205 5 httplog.go:64] &{<my_user> [system:authenticated] map[]} is acting as &{<other_user> [system:authenticated] map[]}
I1218 13:30:38.644297 5 rbac.go:116] RBAC DENY: user "<other_user>" groups ["system:authenticated"] cannot "list" resource "secrets" in namespace "prod"
I1218 13:30:38.676079 5 wrap.go:42] GET /api/v1/namespaces/prod/secrets: (32.043196ms) 200 [[kubectl/v1.8.4 (linux/amd64) kubernetes/9befc2b]
为什么 API 在 RBAC DENY 之后继续执行 GET(并最终返回 secret 以响应我的 kubectl cmd)?
fwiw 我的 kubectl cmd 是:kubectl get secrets --namespace prod --as <other_user>
我怀疑有另一个授权者允许它,尽管我已尽我所知确保没有(ABAC 应该被禁用,因为我在 1.8 上,谷歌云控制台显示它已被禁用,我在 gcloud beta 容器集群描述的响应中看到“legacyAbac: {}”)
最佳答案
GKE 同时启用 RBAC 授权方和咨询 GKE IAM 的 Webhook 授权方。指定的用户名是否具有 GKE 的权限?
关于kubernetes RBAC DENY 不阻止访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47870211/