基于角色的访问控制

Kf 提供了一组 Kubernetes 角色,可让多个团队共享一个 Kf 集群。本页面介绍了使用角色时应遵循的角色和最佳做法。

何时使用 Kf 角色

Kf 角色可让多个团队与安装了 Kf 的 Kubernetes 集群共享。这些角色提供对单个 Kf 空间的访问权限。

如果满足以下条件,请使用 Kf 角色共享对集群的访问权限:

  • 此集群由可信团队使用。
  • 集群上的工作负载对环境提供的安全性级别具有相同的假设。
  • 集群存在于严格控制的 Google Cloud 项目中。

Kf 角色不具有以下权限:

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-auditorspace-developerspace-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/container.admin 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/iam.serviceAccountUser) on the user-managed service account that your nodes will use.

  • Project
roles/container.cloudKmsKeyUser Kubernetes Engine KMS Crypto Key User Allow the Kubernetes Engine service agent in the cluster project to call KMS with user provided crypto keys to sign payloads.
roles/container.clusterAdmin 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/iam.serviceAccountUser) on the user-managed service account that your nodes will use.

  • Project
roles/container.clusterViewer Kubernetes Engine Cluster Viewer

Provides access to get and list GKE clusters.

roles/container.defaultNodeServiceAccount Kubernetes Engine Default Node Service Account Least privilege role to use as the default service account for GKE Nodes.
roles/container.developer Kubernetes Engine Developer

Provides access to Kubernetes API objects inside clusters.

  • Project
roles/container.hostServiceAgentUser 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/container.viewer Kubernetes Engine Viewer

Provides read-only access to resources within GKE clusters, such as nodes, pods, and GKE API objects.

  • Project

将 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 角色最相似。

后续步骤