是否可以使用serviceaccount令牌获得k8s群集访问权限?
我的脚本无法访问kubeconfig文件,但是它可以访问/var/run/secrets/kubernetes.io/serviceaccount/token中的服务帐户令牌。
以下是我尝试的步骤,但它不起作用。
- kubectl config set-credentials sa-user --token=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)
- kubectl config set-context sa-context --user=sa-user
但是当脚本运行“kubectl get rolebindings”时,我得到以下错误:Error from server(Forbidden):rolebindings.rbac.authorization.k8s.io is forbidden:用户“system:serviceaccount:test:default”无法列出命名空间“test”中API组“rbac.authorization.k8s.io”中的资源“rolebindings”
3条答案
按热度按时间qvk1mo1f1#
是否可以使用serviceaccount令牌获得k8s群集访问权限?
当然,这就是ServiceAccount令牌的意义所在。您似乎要问的问题是“为什么我的
default
ServiceAccount没有我想要的所有特权”,这是另一个问题。阅读有关此主题的详细手册将使您受益匪浅如果希望
test
NS中的default
SA具有读取其NS中内容的权限,则必须创建作用域为该NS的角色,然后显式声明关系。SA不会自动具有这些权限字符串
但是当脚本运行“kubectl get pods”时,我得到以下错误:服务器错误(禁止):rolebindings.rbac.authorization.k8s.io被禁止:用户“system:serviceaccount:test:default”无法列出命名空间“test”中API组“rbac.authorization.k8s.io”中的资源“rolebindings”
假设您的意思是可以使用
kubectl get rolebindings
,因为我不希望运行kubectl get pods
时发出该错误vmjh9lq92#
是的,这是可能的。例如,如果您通过令牌登录K8S Jmeter 板,它确实使用相同的方式。
遵循这些步骤;
创建服务帐户
字符串
角色绑定将角色中定义的权限授予一个用户或一组用户。您可以使用预定义的角色,也可以创建自己的角色。有关详细信息,请查看此链接。https://kubernetes.io/docs/reference/access-authn-authz/rbac/#rolebinding-example
型
获取令牌名称
型
最后,获取令牌并设置凭据
型
如果你仔细遵循这些步骤,你的问题就会得到解决。
idv4meu83#
请确保您选择正确的秘密,因为每个sa有两种不同的类型:
你要找的东西就在后面。