Kf 提供了一组 Kubernetes 角色,可让多个团队共享一个 Kf 集群。本页面介绍了使用角色时应遵循的角色和最佳做法。
何时使用 Kf 角色
Kf 角色可让多个团队与安装了 Kf 的 Kubernetes 集群共享。这些角色提供对单个 Kf 空间的访问权限。
如果满足以下条件,请使用 Kf 角色共享对集群的访问权限:
- 此集群由可信团队使用。
- 集群上的工作负载对环境提供的安全性级别具有相同的假设。
- 集群存在于严格控制的 Google Cloud 项目中。
Kf 角色不具有以下权限:
- 保护您的集群免受不受信任的开发者或工作负载的影响。如需了解详情,请参阅 GKE 共享责任模型。
- 为您的工作负载提供隔离。如需了解详情,请参阅强化集群安全指南。
- 防止定义与 Kf 交互的其他 Kubernetes 角色。
- 禁止有权访问 Google Cloud 项目或集群的管理员进行访问。
Kf 角色
以下部分介绍了 Kf 提供的 Kubernetes RBAC 角色及其如何与 Google Kubernetes Engine (GKE) IAM 进行互动。
预定义角色
Kf 提供了多个预定义 Kubernetes 角色,可帮助您提供对执行不同角色的不同主题的访问权限。每个预定义角色都可以绑定到由 Kf Space 管理的 Kubernetes Namespace 中的正文。
如果主题与 Kubernetes Namespace 中的角色绑定,则其访问权限仅限于该命名空间中与角色中列出的授权匹配的对象。在 Kf 中,某些资源在集群范围内定义。Kf 会在命名空间中监控主题更改,并在集群范围内授予其他受限的角色。
角色 | 名称 | 说明 | 范围 |
---|---|---|---|
space-auditor |
Space Auditor | 允许对 Space 进行只读访问。 | 空间 |
space-developer |
Space Developer | 允许应用开发者在 Space 内部署和管理应用。 | 空间 |
space-manager |
Space Manager | 允许管理,且能够管理空间中的审核人员、开发者和管理员。 | 空间 |
SPACE_NAME-manager |
Dynamic Space Manager | 提供对单个 Space 对象的写入权限,自动向指定 Space 内具有 space-manager 角色的所有主题授予该权限。 |
集群 |
kf-cluster-reader |
Cluster Reader | 允许对集群级 Kf 对象进行只读访问,系统会自动向所有 space-auditor 、space-developer 和 space-manager 授予该权限。 |
集群 |
如需了解构成每个预定义角色的政策规则,请参阅 Kf 角色参考文档。
IAM 角色
Kf 角色为 Kubernetes 集群中的对象提供访问权限控制。此外,还必须为主题授予 IAM 角色,以便对集群进行身份验证:
应授予平台管理员
roles/container.admin
IAM 角色。 这将允许他们安装、升级和删除 Kf,以及创建和删除集群限定的 Kf 对象,例如 Spaces 或 ClusterServiceBrokers。Kf end-users 应被授予
roles/container.viewer
IAM 角色。此角色允许他们向具有有限权限的集群进行身份验证,而这些权限可以使用 Kf 角色进行扩展。
IAM 为 GKE 提供了其他预定义角色,以解决更高级的用例:
Role | Title | Description | Lowest resource |
---|---|---|---|
roles/ |
Kubernetes Engine Admin |
Provides access to full management of clusters and their Kubernetes API objects.
To set a service account on nodes, you must also have the Service Account User role
( |
|
roles/ |
Kubernetes Engine Cluster Admin |
Provides access to management of clusters.
To set a service account on nodes, you must also have the Service Account User role
( |
|
roles/ |
Kubernetes Engine Cluster Viewer |
Provides access to get and list GKE clusters. |
|
roles/ |
Kubernetes Engine Default Node Service Account | Least privilege role to use as the default service account for GKE Nodes. | |
roles/ |
Kubernetes Engine Developer |
Provides access to Kubernetes API objects inside clusters. |
|
roles/ |
Kubernetes Engine Host Service Agent User |
Allows the Kubernetes Engine service account in the host project to configure shared network resources for cluster management. Also gives access to inspect the firewall rules in the host project. |
|
roles/ |
Kubernetes Engine Viewer |
Provides read-only access to resources within GKE clusters, such as nodes, pods, and GKE API objects. |
|
将 Cloud Foundry 角色映射到 Kf
Cloud Foundry 提供的角色类似于 Kf 的预定义角色。Cloud Foundry 有两种主要类型的角色:
- 由用户账号和身份验证 (UAA) 子系统分配的角色,提供适用于所有 Cloud Foundry API 端点的粗粒度 OAuth 范围。
- 在 Cloud Controller API (CAPI) 中授予角色,以提供对 API 资源的精细访问权限。
UAA 角色
UAA 提供的角色与项目范围 IAM 角色最相似:
- Cloud Foundry 中的 Admin 用户可为所有 Cloud Foundry 组织和空间执行管理活动。该角色与
roles/container.admin
IAM 角色最相似。 - Cloud Foundry 中的管理员只读用户可以访问所有 Cloud Foundry API 端点。该角色与
roles/container.admin
IAM 角色最相似。 - Cloud Foundry 中的全球审计员用户具有对所有 Cloud Foundry API 端点(机密除外)的读取权限。没有等效的 IAM 角色,但您可以创建具有类似权限的自定义角色。
Cloud Controller API 角色
CAPI 提供的角色与集群中授予主题(拥有自己项目中的 roles/container.viewer
IAM 角色)的 Kf 角色最类似:
- Cloud Foundry 中的空间审计员拥有对 CF 空间中资源的读取权限。
该角色与
space-auditor
Kf 角色最相似。 - Cloud Foundry 中的空间开发者能够在 CF 空间中部署和管理应用。该角色与
space-developer
Kf 角色最相似。 - Cloud Foundry 中的空间管理员可以修改 CF 空间的设置,以及为用户分配角色。该角色与
space-manager
Kf 角色最相似。
后续步骤
- 详细了解“安全概览”中的 GKE 安全。
- 确保您了解 GKE 共享责任模型。
- 详细了解 GKE 中的访问权限控制。
- 阅读 GKE 多租户概览。
- 了解如何强化 GKE 集群的安全性。
- 了解构成每个 Kf 预定义角色的 Kubernetes 权限。