管理对标准集群的访问权限

本文档介绍了如何使用 gdcloud CLI 管理 Google Distributed Cloud (GDC) 空气隔离环境中标准集群的权限。标准集群是项目级、可配置的 Kubernetes 环境,具有最少的默认服务,可为自定义工作负载提供更高的灵活性和控制力。

如需详细了解标准集群和其他集群类型,请参阅 Kubernetes 集群配置

本页面适用于应用运维人员群组(例如开发者运维人员或数据科学家)中的受众群体,他们需要管理和保护 GDC 项目中的资源。如需了解详情,请参阅 GDC 气隙环境文档的受众群体

准备工作

  • 请让您的组织 IAM 管理员向您授予 Project IAM Admin (project-iam-admin) 角色。如需详细了解角色,请参阅角色定义
  • 安装 gdcloud CLI(如果尚未安装)。

授予标准集群访问权限

具有 Project IAM Admin (project-iam-admin) 角色的用户执行以下步骤,以向其他用户授予在标准集群中管理访问权限所需的角色:

  1. 使用 gdcloud CLI 通过已配置的身份提供方登录

  2. 为用户授予项目的 Cluster Admin (cluster-admin) 角色。 此命令会将用户绑定到角色,从而允许用户管理标准集群内的访问权限。

    如需详细了解这些角色,请参阅预定义角色说明项目的角色定义

    gdcloud projects add-iam-policy-binding PROJECT \
      --role=ROLE \
      --member=user:USER_ACCOUNT
    

    执行以下变量替换操作:

    • PROJECT:标准集群所在项目的名称。
    • ROLE:您要授予的角色的名称(例如 cluster-admincluster-developer)。
    • USER_ACCOUNT:您要授予角色的用户账号,包括与您组织关联的身份提供方前缀(例如 idpprefix-user@example.com)。所用的具体前缀取决于您组织的 IdP 配置。如需了解详情,请参阅连接到身份提供方

    以下示例会向 user@example.com 授予 Cluster Admin 角色,假设项目 foo 的身份提供商前缀为 fop-

    gdcloud projects add-iam-policy-binding foo \
      --role=cluster-admin \
      --member=user:fop-user@example.com
    

管理标准集群中的访问权限

在上一部分中被授予 cluster-admin 角色的用户执行以下步骤:

  1. 使用 gdcloud CLI 通过已配置的身份提供方登录

  2. 使用 --standard 标志为标准集群生成 kubeconfig 文件。此标志是定位标准集群所必需的。

    export KUBECONFIG=KUBECONFIG_FILE
    gdcloud get-credentials STANDARD_CLUSTER_NAME --standard --project=PROJECT
    

    执行以下变量替换操作:

    • KUBECONFIG_FILE:kubeconfig 文件的路径,例如 standard-cluster-kubeconfig.yaml
    • STANDARD_CLUSTER_NAME:标准集群的名称。
    • PROJECT:标准集群所在项目的名称。
  3. 使用 kubectl 在标准集群中定义权限。

    具有 cluster-admin 权限的用户可以创建自定义 RoleClusterRole 对象。如需授予这些权限,他们可以创建相应的 RolebindingClusterRoleBinding 对象,以将角色绑定到特定正文(例如用户或服务账号)。

    以下示例使用 kubectltest 命名空间中创建名为 test-role 的自定义 Role 示例:

    kubectl apply -f - <<EOF
    apiVersion: rbac.authorization.k8s.io/v1
    kind: Role
    metadata:
      name: test-role
      namespace: test
    rules:
    - apiGroups:
      - ""
      resources:
      - configmaps
      verbs:
      - get
    EOF
    

    以下示例在 test 命名空间中为名为 test-roleRole 创建了 RoleBinding。它向身份提供商前缀为 fop- 的用户 alice@example.com 以及 default 命名空间中名为 my-service-accountServiceAccount 授予权限:

    kubectl apply -f - <<EOF
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: test-role-binding
      namespace: test
    subjects:
    - kind: User
      name: fop-alice@example.com
      apiGroup: rbac.authorization.k8s.io
    - kind: ServiceAccount
      name: my-service-account
      namespace: default
    roleRef:
      kind: Role
      name: test-role
      apiGroup: rbac.authorization.k8s.io
    EOF