kubernetes - RBAC 与 Kubernetes API Server 基于 URL 的访问
问题描述
我正在通过 HTTP 客户端访问 Kubernetes API。我希望能够访问一些资源。例如,我应该能够列出作业,但不能列出 pod。
apiVersion: v1
kind: ServiceAccount
metadata:
name: job-runner
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: default
name: job-runner
rules:
- apiGroups: ["batch", "extensions"]
resources: ["jobs"]
verbs: ["get", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: job-runner
namespace: default
subjects:
- kind: ServiceAccount
name: job-runner # Name of the ServiceAccount
namespace: default
roleRef:
kind: Role # This must be Role or ClusterRole
name: job-runner # This must match the name of the Role or ClusterRole you wish to bind to
apiGroup: rbac.authorization.k8s.io
我通过执行以下操作获取此服务帐户的令牌:
kubectl get secret `kubectl get sa job-runner -o json | jq -r '.secrets[0].name'` -o json | jq -r '.data.token' | base64 -D
使用这个令牌,我运行这些:
curl https://<k8s master ip>/api/v1/namespaces/default/pods --header "Authorization: Bearer <token>" --insecure
curl https://<k8s master ip>/apis/batch/v1/namespace/default/jobs --header "Authorization: Bearer <token>" --insecure
我希望第一个请求的访问被拒绝,而第二个请求的结果有效。但是,我在这两种情况下都得到了结果。
我在这里错过了什么吗?提前致谢。
解决方案
推荐阅读
- c# - 当鼠标点击弹出窗口的外部时如何防止弹出窗口关闭
- internet-explorer - Kendo UI Jquery Grid 在 IE 8 中不起作用
- environment-variables - 是否可以在“Pipfile”的包部分中使用“.env”中的环境变量
- python - Savitzky-Golay 滤波延迟
- wix - 使用 WiX 将 dll 安装到 gac
- g-code - 布料切割机的Gcode
- node.js - 托管 Reactjs 和 Nodejs 应用程序
- google-chrome-extension - 将浏览器扩展转换为常规网站
- asp.net - asp.net Sendgrid Environment.GetEnvironmentVariable(APIKey) 返回空值/权限被拒绝,凭据错误
- javascript - 将参数从表单发送到 JavaScript 中的函数