Kubernetes(k8s) 中如何通过 ServiceAccount 管理权限和访问控制?
-
创建ServiceAccount:
kubectl create serviceaccount <service-account-name> -n <namespace>
-
定义RBAC权限:
- 创建Role/ClusterRole(示例Role允许读取Pods):
apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: pod-reader rules: - apiGroups: [""] resources: ["pods"] verbs: ["get", "list"]
kubectl apply -f role.yaml -n <namespace>
- 创建RoleBinding/ClusterRoleBinding(绑定ServiceAccount到Role):
apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: read-pods-binding subjects: - kind: ServiceAccount name: <service-account-name> namespace: <namespace> roleRef: kind: Role name: pod-reader apiGroup: rbac.authorization.k8s.io
kubectl apply -f rolebinding.yaml -n <namespace>
- 创建Role/ClusterRole(示例Role允许读取Pods):
-
在Pod中使用ServiceAccount:
apiVersion: v1 kind: Pod metadata: name: mypod spec: serviceAccountName: <service-account-name> containers: - name: mycontainer image: nginx
-
验证权限:
kubectl auth can-i get pods --as=system:serviceaccount:<namespace>:<service-account-name>
关键点:
- Role作用于单个命名空间,ClusterRole适用于集群范围。
- ServiceAccount需与RoleBinding/ClusterRoleBinding明确关联。
- 最小化权限分配,避免过度授权。
更多回答
推荐
热门问答
部分内容依据人工智能生成,仅供参考,可能有误请注意甄别