diff --git a/content/zh/docs/reference/access-authn-authz/rbac.md b/content/zh/docs/reference/access-authn-authz/rbac.md
index c01c5a93c1..73cf3c1b36 100644
--- a/content/zh/docs/reference/access-authn-authz/rbac.md
+++ b/content/zh/docs/reference/access-authn-authz/rbac.md
@@ -657,7 +657,7 @@ so that authentication produces usernames in the format you want.
RoleBinding 或者 ClusterRoleBinding 可绑定角色到某 *主体(Subject)*上。
主体可以是组,用户或者
-{{< glossary_tooltip text="服务账号" term_id="service-account" >}}。
+{{< glossary_tooltip text="服务账户" term_id="service-account" >}}。
Kubernetes 用字符串来表示用户名。
用户名可以是普通的用户名,像 "alice";或者是邮件风格的名称,如 "bob@example.com",
@@ -692,7 +692,7 @@ to groups with the `system:serviceaccounts:` prefix.
与用户名一样,用户组名也用字符串来表示,而且对该字符串没有格式要求,
只是不能使用保留的前缀 `system:`。
-[服务账号](/zh/docs/tasks/configure-pod-container/configure-service-account/)
+[服务账户](/zh/docs/tasks/configure-pod-container/configure-service-account/)
的用户名前缀为 `system:serviceaccount:`,属于前缀为 `system:serviceaccounts:`
的用户组。
@@ -701,8 +701,8 @@ to groups with the `system:serviceaccounts:` prefix.
- `system:serviceaccount:` (singular) is the prefix for service account usernames.
- `system:serviceaccounts:` (plural) is the prefix for service account groups.
-->
-- `system:serviceaccount:` (单数)是用于服务账号用户名的前缀;
-- `system:serviceaccounts:` (复数)是用于服务账号组名的前缀。
+- `system:serviceaccount:` (单数)是用于服务账户用户名的前缀;
+- `system:serviceaccounts:` (复数)是用于服务账户组名的前缀。
{{< /note >}}
-对于 `kube-system` 名字空间中的默认服务账号:
+对于 `kube-system` 名字空间中的默认服务账户:
```yaml
subjects:
@@ -751,9 +751,9 @@ subjects:
```
-对于 "qa" 名字空间中所有的服务账号:
+对于任何名称空间中的 "qa" 组中所有的服务账户:
```yaml
subjects:
@@ -762,10 +762,23 @@ subjects:
apiGroup: rbac.authorization.k8s.io
```
+
+对于 "dev" 名称空间中 "development" 组中的所有服务帐户:
+
+```yaml
+subjects:
+- kind: Group
+ name: system:serviceaccounts:dev
+ apiGroup: rbac.authorization.k8s.io
+ namespace: development
+```
+
-对于在任何名字空间中的服务账号:
+对于在任何名字空间中的服务账户:
```yaml
subjects:
@@ -899,51 +912,69 @@ either do not manually edit the role, or disable auto-reconciliation.
{{< /note >}}
-
-Kubernetes RBAC API 发现角色
-
+
+Kubernetes RBAC API 发现角色
+
+
+
+
| 默认 ClusterRole |
默认 ClusterRoleBinding |
描述 |
+
+
| system:basic-user |
+
system:authenticated 组 |
-允许用户以只读的方式去访问他们自己的基本信息。在 1.14 版本之前,这个角色在
-默认情况下也绑定在 system:unauthenticated 上。 |
+
+
+允许用户以只读的方式去访问他们自己的基本信息。在 1.14 版本之前,这个角色在默认情况下也绑定在 system:unauthenticated 上。
+ |
| system:discovery |
+
system:authenticated 组 |
-允许以只读方式访问 API 发现端点,这些端点用来发现和协商 API 级别。
-在 1.14 版本之前,这个角色在默认情况下绑定在 system:unauthenticated 上。 |
+
+
+允许以只读方式访问 API 发现端点,这些端点用来发现和协商 API 级别。
+在 1.14 版本之前,这个角色在默认情况下绑定在 system:unauthenticated 上。
+ |
| system:public-info-viewer |
+
system:authenticated 和 system:unauthenticated 组 |
-允许对集群的非敏感信息进行只读访问,它是在 1.14 版本中引入的。 |
+
+
+允许对集群的非敏感信息进行只读访问,它是在 1.14 版本中引入的。
+ |
+
默认 ClusterRole |
默认 ClusterRoleBinding |
描述 |
+
+
+
| cluster-admin |
-
+
system:masters 组 |
-
-允许超级用户在平台上的任何资源上执行所有操作。
+When used in a RoleBinding, it gives full control over every resource in the rolebinding's namespace, including the namespace itself.
+-->
+允许超级用户在平台上的任何资源上执行所有操作。
当在 ClusterRoleBinding 中使用时,可以授权对集群中以及所有名字空间中的全部资源进行完全控制。
-当在 RoleBinding 中使用时,可以授权控制 RoleBinding 所在名字空间中的所有资源,包括名字空间本身。 |
+当在 RoleBinding 中使用时,可以授权控制 RoleBinding 所在名字空间中的所有资源,包括名字空间本身。
+
| admin |
-
+
无 |
-
-允许管理员访问权限,旨在使用 RoleBinding 在名字空间内执行授权。
+It does not allow write access to resource quota or to the namespace itself.
+-->
+允许管理员访问权限,旨在使用 RoleBinding 在名字空间内执行授权。
如果在 RoleBinding 中使用,则可授予对名字空间中的大多数资源的读/写权限,
包括创建角色和角色绑定的能力。
-但是它不允许对资源配额或者名字空间本身进行写操作。 |
+但是它不允许对资源配额或者名字空间本身进行写操作。
+
| edit |
-
+
无 |
-
-允许对名字空间的大多数对象进行读/写操作。
+the namespace.
+-->
+允许对名字空间的大多数对象进行读/写操作。
它不允许查看或者修改角色或者角色绑定。
不过,此角色可以访问 Secret,以名字空间中任何 ServiceAccount 的身份运行 Pods,
-所以可以用来了解名字空间内所有服务账号的 API 访问级别。
+所以可以用来了解名字空间内所有服务账户的 API 访问级别。
|
-
| view |
-
+
无 |
-
+允许对名字空间的大多数对象有只读权限。
+它不允许查看角色或角色绑定。
+
-允许对名字空间的大多数对象有只读权限。
-它不允许查看角色或角色绑定。
-
+in the namespace (a form of privilege escalation).
+-->
此角色不允许查看 Secrets,因为读取 Secret 的内容意味着可以访问名字空间中
ServiceAccount 的凭据信息,进而允许利用名字空间中任何 ServiceAccount 的
-身份访问 API(这是一种特权提升)。 |
+身份访问 API(这是一种特权提升)。
+
+
+默认 ClusterRole |
+默认 ClusterRoleBinding |
+描述 |
+
+
| system:kube-scheduler |
-system:kube-scheduler user |
-
-允许访问 {{< glossary_tooltip term_id="kube-scheduler" text="scheduler" >}}
-组件所需要的资源。 |
+
+system:kube-scheduler 用户 |
+
+
+允许访问 {{< glossary_tooltip term_id="kube-scheduler" text="scheduler" >}}
+组件所需要的资源。
+ |
| system:volume-scheduler |
-system:kube-scheduler user |
-
-允许访问 kube-scheduler 组件所需要的卷资源。 |
+
+system:kube-scheduler 用户 |
+
+
+允许访问 kube-scheduler 组件所需要的卷资源。
+ |
| system:kube-controller-manager |
-system:kube-controller-manager user |
-
-允许访问{{< glossary_tooltip term_id="kube-controller-manager" text="控制器管理器" >}}
+
+ | system:kube-controller-manager 用户 |
+
+
+允许访问{{< glossary_tooltip term_id="kube-controller-manager" text="控制器管理器" >}}
组件所需要的资源。
-各个控制回路所需要的权限在控制器角色 详述。 |
+各个控制回路所需要的权限在控制器角色 详述。
+
| system:node |
-
+
无 |
+
+
+允许访问 kubelet 所需要的资源,包括对所有 Secret 的读操作和对所有 Pod 状态对象的写操作。
-
- | 允许访问 kubelet 所需要的资源,包括对所有 Secret 的读操作和对所有 Pod 状态对象的写操作。
-
+
你应该使用 Node 鉴权组件 和
NodeRestriction 准入插件
而不是 system:node 角色。同时基于 kubelet 上调度执行的 Pod 来授权
kubelet 对 API 的访问。
+
+
system:node 角色的意义仅是为了与从 v1.8 之前版本升级而来的集群兼容。
|
| system:node-proxier |
-system:kube-proxy user |
+
+system:kube-proxy 用户 |
允许访问 {{< glossary_tooltip term_id="kube-proxy" text="kube-proxy" >}}
组件所需要的资源。 |
+
+Description |
+-->
默认 ClusterRole |
默认 ClusterRoleBinding |
描述 |
+
+
| system:auth-delegator |
-
+
无 |
-
-允许将身份认证和鉴权检查操作外包出去。
-这种角色通常用在插件式 API 服务器上,以实现统一的身份认证和鉴权。 |
+
+
+允许将身份认证和鉴权检查操作外包出去。
+这种角色通常用在插件式 API 服务器上,以实现统一的身份认证和鉴权。
+ |
| system:heapster |
-
+
无 |
-
-为 Heapster 组件(已弃用)定义的角色。 |
+
+
+为 Heapster 组件(已弃用)定义的角色。
+ |
| system:kube-aggregator |
-
+
无 |
为 kube-aggregator 组件定义的角色。 |
| system:kube-dns |
-
-在 kube-system 名字空间中的 kube-dns 服务账号 |
+
+
+在 kube-system 名字空间中的 kube-dns 服务账户 |
-为 kube-dns 组件定义的角色。 |
+为 kube-dns 组件定义的角色。
+ |
| system:kubelet-api-admin |
-
+
无 |
-
-允许 kubelet API 的完全访问权限。 |
+
+
+允许 kubelet API 的完全访问权限。
+ |
| system:node-bootstrapper |
-
+
无 |
-
-允许访问执行
+ |
+
+允许访问执行
kubelet TLS 启动引导
-所需要的资源。 |
+所需要的资源。
+
| system:node-problem-detector |
-
+
无 |
-
-为 node-problem-detector 组件定义的角色。 |
+
+
+为 node-problem-detector 组件定义的角色。
+ |
| system:persistent-volume-provisioner |
-
+
无 |
-
-允许访问大部分
-动态卷驱动
+ |
+
+允许访问大部分
+动态卷驱动
+
所需要的资源。 |
+
+| system:monitoring |
+
+system:monitoring 组 |
+
+
+允许对控制平面监控端点的读取访问(例如:{{< glossary_tooltip term_id="kube-apiserver" text="kube-apiserver" >}}
+存活和就绪端点(/healthz、/livez、/readyz),
+各个健康检查端点(/healthz/*、/livez/*、/readyz/*)和 /metrics)。
+请注意,各个运行状况检查端点和度量标准端点可能会公开敏感信息。
+ |
+
+
* 在名字空间 "acme" 中,将名为 `view` 的 ClusterRole 中的权限授予名字空间 "acme"
- 中名为 `myapp` 的服务账号:
+ 中名为 `myapp` 的服务账户:
```shell
kubectl create rolebinding myapp-view-binding --clusterrole=view --serviceaccount=acme:myapp --namespace=acme
@@ -1520,7 +1683,7 @@ Grants a Role or ClusterRole within a specific namespace. Examples:
* Within the namespace "acme", grant the permissions in the "view" ClusterRole to a service account in the namespace "myappnamespace" named "myapp":
-->
* 在名字空间 "acme" 中,将名为 `view` 的 ClusterRole 对象中的权限授予名字空间
- "myappnamespace" 中名称为 `myapp` 的服务账号:
+ "myappnamespace" 中名称为 `myapp` 的服务账户:
```shell
kubectl create rolebinding myappnamespace-myapp-view-binding --clusterrole=view --serviceaccount=myappnamespace:myapp --namespace=acme
@@ -1556,7 +1719,7 @@ Grants a ClusterRole across the entire cluster (all namespaces). Examples:
* Across the entire cluster, grant the permissions in the "view" ClusterRole to a service account named "myapp" in the namespace "acme":
-->
* 在整个集群范围内,将名为 `view` 的 ClusterRole 中定义的权限授予 "acme" 名字空间中
- 名为 "myapp" 的服务账号:
+ 名为 "myapp" 的服务账户:
```shell
kubectl create clusterrolebinding myapp-view-binding --clusterrole=view --serviceaccount=acme:myapp
@@ -1631,15 +1794,15 @@ This allows you to grant particular roles to particular service accounts as need
Fine-grained role bindings provide greater security, but require more effort to administrate.
Broader grants can give unnecessary (and potentially escalating) API access to service accounts, but are easier to administrate.
-->
-## 服务账号权限 {#service-account-permissions}
+## 服务账户权限 {#service-account-permissions}
默认的 RBAC 策略为控制面组件、节点和控制器授予权限。
-但是不会对 `kube-system` 名字空间之外的服务账号授予权限。
+但是不会对 `kube-system` 名字空间之外的服务账户授予权限。
(除了授予所有已认证用户的发现权限)
-这使得你可以根据需要向特定服务账号授予特定权限。
+这使得你可以根据需要向特定服务账户授予特定权限。
细粒度的角色绑定可带来更好的安全性,但需要更多精力管理。
-粗粒度的授权可能导致服务账号被授予不必要的 API 访问权限(甚至导致潜在的权限提升),
+粗粒度的授权可能导致服务账户被授予不必要的 API 访问权限(甚至导致潜在的权限提升),
但更易于管理。
这要求应用在其 Pod 规约中指定 `serviceAccountName`,
- 并额外创建服务账号(包括通过 API、应用程序清单、`kubectl create serviceaccount` 等)。
+ 并额外创建服务账户(包括通过 API、应用程序清单、`kubectl create serviceaccount` 等)。
- 例如,在名字空间 "my-namespace" 中授予服务账号 "my-sa" 只读权限:
+ 例如,在名字空间 "my-namespace" 中授予服务账户 "my-sa" 只读权限:
```shell
kubectl create rolebinding my-sa-view \
@@ -1672,7 +1835,7 @@ In order from most secure to least secure, the approaches are:
-2. 将角色授予某名字空间中的 "default" 服务账号
+2. 将角色授予某名字空间中的 "default" 服务账户
- 如果某应用没有指定 `serviceAccountName`,那么它将使用 "default" 服务账号。
+ 如果某应用没有指定 `serviceAccountName`,那么它将使用 "default" 服务账户。
{{< note >}}
- "default" 服务账号所具有的权限会被授予给名字空间中所有未指定
+ "default" 服务账户所具有的权限会被授予给名字空间中所有未指定
`serviceAccountName` 的 Pod。
{{< /note >}}
- 例如,在名字空间 "my-namespace" 中授予服务账号 "default" 只读权限:
+ 例如,在名字空间 "my-namespace" 中授予服务账户 "default" 只读权限:
```shell
kubectl create rolebinding default-view \
@@ -1712,9 +1875,9 @@ In order from most secure to least secure, the approaches are:
{{< /note >}}
-->
许多[插件组件](/zh/docs/concepts/cluster-administration/addons/) 在 `kube-system`
- 名字空间以 "default" 服务账号运行。
+ 名字空间以 "default" 服务账户运行。
要允许这些插件组件以超级用户权限运行,需要将集群的 `cluster-admin` 权限授予
- `kube-system` 名字空间中的 "default" 服务账号。
+ `kube-system` 名字空间中的 "default" 服务账户。
{{< note >}}
启用这一配置意味着在 `kube-system` 名字空间中包含以超级用户账号来访问 API
@@ -1734,12 +1897,12 @@ In order from most secure to least secure, the approaches are:
For example, grant read-only permission within "my-namespace" to all service accounts in that namespace:
-->
-3. 将角色授予名字空间中所有服务账号
+3. 将角色授予名字空间中所有服务账户
- 如果你想要名字空间中所有应用都具有某角色,无论它们使用的什么服务账号,
- 可以将角色授予该名字空间的服务账号组。
+ 如果你想要名字空间中所有应用都具有某角色,无论它们使用的什么服务账户,
+ 可以将角色授予该名字空间的服务账户组。
- 例如,在名字空间 "my-namespace" 中的只读权限授予该名字空间中的所有服务账号:
+ 例如,在名字空间 "my-namespace" 中的只读权限授予该名字空间中的所有服务账户:
```shell
kubectl create rolebinding serviceaccounts-view \
@@ -1757,9 +1920,9 @@ In order from most secure to least secure, the approaches are:
-->
4. 在集群范围内为所有服务账户授予一个受限角色(不鼓励)
- 如果你不想管理每一个名字空间的权限,你可以向所有的服务账号授予集群范围的角色。
+ 如果你不想管理每一个名字空间的权限,你可以向所有的服务账户授予集群范围的角色。
- 例如,为集群范围的所有服务账号授予跨所有名字空间的只读权限:
+ 例如,为集群范围的所有服务账户授予跨所有名字空间的只读权限:
```shell
@@ -1781,7 +1944,7 @@ In order from most secure to least secure, the approaches are:
-->
5. 授予超级用户访问权限给集群范围内的所有服务帐户(强烈不鼓励)
- 如果你不关心如何区分权限,你可以将超级用户访问权限授予所有服务账号。
+ 如果你不关心如何区分权限,你可以将超级用户访问权限授予所有服务账户。
{{< warning >}}
这样做会允许所有应用都对你的集群拥有完全的访问权限,并将允许所有能够读取
@@ -1814,7 +1977,7 @@ Here are two approaches for managing this transition:
包括授予所有服务帐户全权访问 API 的能力。
默认的 RBAC 策略为控制面组件、节点和控制器等授予有限的权限,但不会为
-`kube-system` 名字空间外的服务账号授权
+`kube-system` 名字空间外的服务账户授权
(除了授予所有认证用户的发现权限之外)。
这样做虽然安全得多,但可能会干扰期望自动获得 API 权限的现有工作负载。
@@ -1860,7 +2023,7 @@ You can use that information to determine which roles need to be granted to whic
Once you have [granted roles to service accounts](#service-account-permissions) and workloads
are running with no RBAC denial messages in the server logs, you can remove the ABAC authorizer.
-->
-一旦你[将角色授予服务账号](#service-account-permissions) ,工作负载运行时
+一旦你[将角色授予服务账户](#service-account-permissions) ,工作负载运行时
在服务器日志中没有出现 RBAC 拒绝消息,就可以删除 ABAC 鉴权器。