top
本文目录
什么是 serviceAccount
serviceAccount 实战
1. 创建账号和角色
2. 创建 pod-reader 的 token
3. 测试权限
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解!邮件:766378891@qq.com

k8s 创建 serviceAccount 并测试其权限


共计 1700 个字符,预计需要花费 5 分钟才能阅读完成。

什么是 serviceAccount

顾名思义,相对于userAccount(比如:kubectl访问APIServer时用的就是userAccount),serviceAccount 就是 Pod 中的 Process 用于访问 Kubernetes API的 account,它为 Pod 中的进程提供了一种身份标识。相比于 userAccount 的全局性权限,serviceAccount 更适合一些轻量级的task,更聚焦于授权给某些特定Pod中的Process所使用。

serviceAccount 并不复杂,只是关联了一个 Secret 资源作为 token,该token也叫service-account-token。

任意一个 pod 如果在不指定 serviceAccount 的情况下,都是用的默认的 serviceAccount。相关内容在容器的 /run/secrets/kubernetes.io/serviceaccount 目录下。该目录下有三个文件:ca.crt,namespace,token。

  • ca.crt 用来验证 APIServer 的证书,因为证书都是自己生成的,所以需要创建集群 CA 证书进行验证。
  • namespace 是该 pod 所在命名空间。
  • token 是容器访问 APIServer 认证和授权所使用的内容,请求时放在 Authorization。

接下来创建 serviceAccount 并进行权限的测试。

serviceAccount 实战

1. 创建账号和角色

sa-pod-reader.yaml

apiVersion: v1
kind: ServiceAccount
metadata:
  name: pod-reader
  namespace: dev

---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: pod-role
  namespace: dev
rules:
  - apiGroups: [""] # 支持的API组列表,""空字符串,表示核心API群
    resources: ["pods"] # 支持的资源对象列表
    verbs: ["get","watch","list"]

---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: authorization-role-binding
  namespace: dev
subjects:
  - kind: ServiceAccount
    name: pod-reader
roleRef:
  kind: Role
  name: pod-role
  apiGroup: rbac.authorization.k8s.io
# 创建用户和角色
kubectl apply -f sa-pod-reader.yaml

创建一个 pod-reader 的角色并和账号 pod-reader 进行绑定,pod-reader 的权限仅限于 dev 命名空间下 pod 的查询。

2. 创建 pod-reader 的 token

在以前版本的 kubernetes 中,进行了创建 serviceaccount 会自动生成一个 Secret 里面存放 token 值,但是新版本不会这样做了。可以参考之前的文章 k8s 手动管理 ServiceAccount 的 Secret

pod-reader-token.yaml

apiVersion: v1
kind: Secret
metadata:
  name: pod-reader
  namespace: dev
  annotations:
    kubernetes.io/service-account.name: pod-reader
type: kubernetes.io/service-account-token
# 创建 secret
kubectl apply -f pod-reader-token.yaml

3. 测试权限

kubectl describe secret pod-reader -n dev

获取到 token 以后,使用 postman 进行测试。

设置 token。

k8s 创建 serviceAccount 并测试其权限

/>

3.1 获取 dev 下的 pod

k8s 创建 serviceAccount 并测试其权限

/>

可以看见能够进行获取。

3.2 获取 default 下的 pod

k8s 创建 serviceAccount 并测试其权限

/>

提示没有权限,至此,测试完毕。

提醒:本文发布于795天前,文中所关联的信息可能已发生改变,请知悉!

Tips:清朝云网络工作室

阅读剩余
THE END
icon
0
icon
分享
icon
二维码
icon
海报
发表评论
评论列表

赶快来坐沙发

晚上好👋, 在属于自己的时间好好放松😌~