授予和撤消访问权限

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

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

准备工作

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

申请 IAM 角色

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

  • IAM Org Admin (organization-iam-admin):在组织和项目级层创建、更新和删除角色绑定。
  • Org Session 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
    export USERNAME=IDP_PREFIX-USERNAME
    export ROLE_NAME=ROLE_NAME
    export BINDING_NAMESPACE=BINDING_NAMESPACE
    export USER_EMAIL=IDP_PREFIX-USER_EMAIL
    

    替换以下内容:

    • GLOBAL_API_SERVER_KUBECONFIG:全局 API 服务器的 kubeconfig 文件的路径。
    • IDP_PREFIX:身份提供方前缀。
    • USERNAME:用户邮箱中 @ 符号前面的用户名部分(例如 paul@example.com 中的 paul)。
    • ROLE_NAME:用户所需的角色名称(例如 project-creator)。如需查看角色及其范围的列表,请参阅角色定义。
    • BINDING_NAMESPACE:对于组织级范围的角色,为 platform;对于项目级范围的角色,为目标项目的命名空间的名称。
    • USER_EMAIL:您要为其分配角色的用户账号的邮箱(例如 paul@example.com)。
  2. 创建并应用 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: ${USER_EMAIL}
    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 IDP_PREFIX-USERNAME-ROLE_NAME-binding -n BINDING_NAMESPACE

替换以下内容:

  • GLOBAL_API_SERVER_KUBECONFIG:全局 API 服务器的 kubeconfig 文件的路径。
  • IDP_PREFIX:身份提供方前缀。
  • USERNAME:用户邮箱中 @ 符号前面的用户名部分(例如 paul@example.com 中的 paul)。
  • ROLE_NAME:要移除的角色名称,例如 project-creator。
  • BINDING_NAMESPACE:对于组织级范围的角色,请替换为 platform;对于项目级范围的角色,请替换为目标项目的命名空间名称。

撤消用户访问权限

如果某位成员离开您的组织或团队,您可以撤消其对 Google Distributed Cloud (GDC) 网闸隔离配置的访问权限。撤消用户的访问权限会将其从 Distributed Cloud 中退出,并移除其角色和权限。您还可以根据用户的活动和会话的开始和结束时间列出这些活动和会话。

如需撤消用户对 GDC Universe 的访问权限,您必须单独撤消对每个可用区的访问权限。对每个可用区完成以下步骤:

  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. 对 Universe 中的每个可用区重复上述步骤。