登录
首页 >  Golang >  Go问答

需要哪些权限来访问服务帐户(包括集群管理员绑定帐户)?

来源:stackoverflow

时间:2024-03-19 22:45:33 210浏览 收藏

在 Kubernetes 中,要访问具有集群管理员权限的服务帐户(包括绑定了集群管理员角色的帐户),需要授予正确的权限。本文探讨了在 minikube 中配置服务帐户时遇到的问题,即无法获取特定服务帐户的信息。通过分析错误消息和检查授予的角色和权限,本文确定了权限配置中的错误,并提供了正确的权限设置,使应用程序能够成功获取服务帐户信息。

问题内容

我在 minikube 中有一个 k8s 集群,使用 cluster-admin 角色配置了服务帐户 admin-user ,并配置了下面的 serviceaccount 以在我自己的应用程序中使用。所有内容都应用在同一个 namespace 中,我的规范使用 me serviceaccountname。

apiVersion: v1
kind: ServiceAccount
metadata:
  name: me

---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: myRole
rules:
  - apiGroups: [""]
    resources: ["serviceaccounts, secrets"]
    verbs: ["get"]

---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: myRoleBinding
subjects:
  - kind: ServiceAccount
    name: me
    namespace: namespace
roleRef:
  kind: Role
  name: myRole
  apiGroup: rbac.authorization.k8s.io

我的应用程序使用 rest.inclusterconfig

执行 client.corev1().serviceaccounts("namespace").get(ctx, "admin-user", meta.getoptions{}) 时出现此错误:

serviceaccounts“admin-user”被禁止:用户“system:serviceaccount:namespace:me”无法获取命名空间“namespace”中api组“”中的资源“serviceaccounts”

当我将 me serviceaccount 绑定到默认 view clusterrole 而不是 myrole 时,我的客户端调用即可工作。据我所知,与 view 相比,我为 myrole 中的服务帐户授予了相同的权限。

看来我没有授予正确的权限,但我不知道需要什么。


正确答案


resources 中的拼写错误:[“serviceaccounts,secrets”]

应该是 resources: ["serviceaccounts", "secrets"]

今天关于《需要哪些权限来访问服务帐户(包括集群管理员绑定帐户)?》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>