授予和撤消访问权限

每个正文(用户或群组)都遵循一个两步流程来获取对全局 API 服务器的访问权限。使用 IAMRoleBinding 将全局 API 服务器中具有权限的正文授予预定义的 IAMRole。所有角色和角色绑定都是全局性的。

本页面适用于平台管理员群组中负责管理组织内权限的受众群体。如需了解详情,请参阅 GDC 网闸隔离配置文档的受众群体

准备工作

在管理角色绑定或撤消访问权限之前,您必须请求必要的权限并准备好环境。所需的具体角色取决于您是要管理角色绑定还是要撤消用户访问权限。

申请 IAM 角色

请与贵组织的 IAM 管理员联系,根据您需要执行的任务申请相应角色:

  • Organization IAM Admin (organization-iam-admin):在组织级层和项目级层创建、更新和删除角色绑定。
  • 组织会话管理员 (org-session-admin):撤消用户在特定区域内的有效会话和访问权限。

准备环境

如需使用命令行工具管理角色绑定或撤消访问权限,请完成以下设置。

设置角色绑定

您可以设置角色绑定,以便团队成员在组织级或项目级层访问资源。

向已获授权的成员分配角色:

控制台

  1. 登录 GDC 控制台。
  2. 从范围选择器中选择组织或项目。
    • 如需为组织设置角色绑定,请选择一个组织。
    • 如需为项目设置角色绑定,请选择一个项目。
  3. 在导航菜单中,依次点击身份和访问权限 > 访问权限
  4. 点击添加成员
  5. 选择要添加单个用户还是群组。
  6. 身份提供方列表中,选择一个身份提供方。
  7. 用户名或群组别名字段中,输入用户名、电子邮件地址或别名。
  8. 角色列表中,选择要分配给用户或群组的角色,例如组织级Organization Viewer或项目级Project Creator
  9. 点击 Add(添加)。

相应成员会显示在授权成员列表中。

gdcloud

  1. 确保您已安装 gdcloud CLI

  2. 使用 gdcloud auth login 命令登录,以通过身份提供方进行身份验证。如需了解详情,请参阅 gdcloud CLI 身份验证

  3. 设置角色绑定。

    • 为组织设置角色绑定:

      gdcloud organizations add-iam-policy-binding ORGANIZATION \
        --member=USER_ACCOUNT \
        --role=ROLE
      

      执行以下变量替换操作:

      • ORGANIZATION:您要为其设置角色绑定的组织的名称。
      • USER_ACCOUNT:您要向其授予角色的用户账号。此标志接受带有身份提供方前缀 (user:idpprefix-user@example.com) 的用户电子邮件地址,或带有服务账号项目 (serviceAccount:projectName:serviceAccountName) 的服务账号名称。
      • ROLE:您要向用户分配的预定义角色或自定义角色的名称。
    • 为项目设置角色绑定:

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

      执行以下变量替换操作:

      • PROJECT:您要为其设置角色绑定的项目的名称。
      • USER_ACCOUNT:您要向其授予角色的用户账号。此标志接受带有身份提供方前缀 (user:idpprefix-user@example.com) 的用户电子邮件地址,或带有服务账号项目 (serviceAccount:projectName:serviceAccountName) 的服务账号名称。
      • ROLE:您要向用户分配的预定义角色或自定义角色的名称。

API

  1. 导出您使用的用户凭据:

    export GLOBAL_API_SERVER_KUBECONFIG=GLOBAL_API_SERVER_KUBECONFIG
    
  2. 导出要为其分配角色的用户账号,包括身份提供方前缀(例如 idpprefix-paul@example.com):

    export USERNAME=IDP_PREFIX-USER_EMAIL
    
  3. 导出用户需要的角色名称,例如 project-creator。请参阅角色定义,找到相应的角色。

    export ROLE_NAME=ROLE_NAME
    
  4. 导出必须创建绑定的命名空间:

    export BINDING_NAMESPACE=BINDING_NAMESPACE
    

    对于组织级角色,请将 BINDING_NAMESPACE 替换为 platform;对于项目级角色,请将 BINDING_NAMESPACE 替换为目标项目的命名空间名称。

    如需查看角色及其范围的列表,请参阅角色定义

  5. 创建和应用 IAMRoleBinding 自定义资源:

    cat <<EOF | kubectl --kubeconfig ${GLOBAL_API_SERVER_KUBECONFIG} apply -f -
    apiVersion: iam.global.gdc.goog/v1
    kind: IAMRoleBinding
    metadata:
      name: ${USERNAME}-${ROLE_NAME}-binding
      namespace: ${BINDING_NAMESPACE}
    spec:
      roleRef:
        apiGroup: iam.global.gdc.goog
        kind: IAMRole
        name: ${ROLE_NAME}
      subjects:
      - apiGroup: rbac.authorization.k8s.io
        kind: User
        name: ${USERNAME}
    EOF
    

移除角色绑定

如果不再需要访问权限,请移除相应成员及其关联的角色、权限和访问权限。

如需移除会员,请按以下步骤操作:

控制台

  1. 登录 GDC 控制台。
  2. 在导航菜单中,依次点击身份和访问权限 > 访问权限
  3. 授权成员列表中,选择一个成员。
  4. 点击移除成员
  5. 出现提示时,点击移除成员进行确认。

gdcloud

  1. 确保您已安装 gdcloud CLI

  2. 使用 gdcloud auth login 命令登录,以通过身份提供方进行身份验证。如需了解详情,请参阅 gdcloud CLI 身份验证

  3. 移除角色绑定。

    • 移除组织的角色绑定:

      gdcloud organizations remove-iam-policy-binding ORGANIZATION \
        --member=USER_ACCOUNT \
        --role=ROLE
      

      执行以下变量替换操作:

      • ORGANIZATION:要从中移除角色绑定的组织的名称。
      • USER_ACCOUNT:您要从中移除角色的用户账号。此标志接受带有身份提供方前缀 (user:idpprefix-user@example.com) 的用户电子邮件地址,或带有服务账号项目 (serviceAccount:projectName:serviceAccountName) 的服务账号名称。
      • ROLE:您要从用户账号中移除的预定义角色或自定义角色的名称。
    • 移除项目的角色绑定:

      gdcloud projects remove-iam-policy-binding PROJECT \
        --member=USER_ACCOUNT \
        --role=ROLE
      

      执行以下变量替换操作:

      • PROJECT:您要从中移除角色绑定的项目的名称。
      • USER_ACCOUNT:您要从中移除角色的用户账号。此标志接受带有身份提供方前缀 (user:idpprefix-user@example.com) 的用户电子邮件地址,或带有服务账号项目 (serviceAccount:projectName:serviceAccountName) 的服务账号名称。
      • ROLE:您要从用户账号中移除的预定义角色或自定义角色的名称。

kubectl

删除 IAMRoleBinding 以撤消授予 PA 账号的权限:

kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG \
delete iamrolebinding USERNAME-ROLE_NAME-binding -n BINDING_NAMESPACE

替换以下内容:

  • GLOBAL_API_SERVER_KUBECONFIG:用于访问全局 API 服务器的 kubeconfig 文件的路径。
  • USERNAME:您要移除相应角色的用户账号,包括身份提供方前缀(例如 idpprefix-paul@example.com)。
  • ROLE_NAME:要移除的角色的名称,例如 project-creator
  • BINDING_NAMESPACE:对于组织范围的角色,请替换为 platform;对于项目范围的角色,请替换为目标项目的命名空间名称。

撤消用户访问权限

如果某位成员离开您的组织或团队,您可以撤消其对 Google Distributed Cloud (GDC) air-gapped 的访问权限。撤消用户的访问权限后,系统会将其从 Distributed Cloud 中退出,并移除其角色和权限。您还可以列出用户从开始时间和结束时间起的活动和会话。

如需撤消用户在整个 GDC 宇宙中的访问权限,您必须分别撤消用户在每个单独区域中的访问权限。针对每个可用区,完成以下步骤:

  1. 确保您已登录要撤消访问权限的区域。例如,为 gdcloud CLI 设置区域网址配置,然后登录:

    gdcloud config set organization_console_url ZONE_URL
    gdcloud auth login
    

    ZONE_URL 替换为要撤消用户访问权限的可用区的 GDC 控制台网址,该网址类似于 https://console.ORG_NAME.ZONE_NAME.ORG_SUFFIX

    如需详细了解如何切换可用区上下文,请参阅使用工具访问可用区

  2. 撤消用户对相应区域的访问权限:

    gdcloud admin auth revoke --accounts USER_EMAIL
    

    USER_EMAIL 替换为要撤消访问权限的用户的电子邮件地址。

    运行该命令后,您会看到类似于以下内容的输出。以下示例撤消了用户 ariel@example.com 的访问权限:

    Success: NUMBER of sessions revoked for user ariel@example.com
    

    在此示例中,变量 NUMBER 指的是用户拥有的有效会话数。

  3. 再次运行 gdcloud admin auth revoke 命令,确认您已撤消用户的访问权限。如果成功,您会看到以下内容:

    No sessions found for account: ariel@example.com
    
  4. 针对您的全宇宙中的每个时区重复执行上述步骤。