使用命名空间服务账号进行访问权限控制

本页面介绍了如何配置 Identity and Access Management (IAM) 服务 账号。

Cloud Data Fusion 中的命名空间简介

命名空间是应用程序、数据以及 Cloud Data Fusion 实例中的元数据。您可以将命名空间视为 对实例进行分区此处称为 entity 可以独立存在于多个命名空间中。在单个实例中 一个命名空间单独存储实体的数据和元数据 另一个命名空间。

使用命名空间服务账号进行访问权限控制

为了控制对 Google Cloud 资源的访问权限,Cloud Data Fusion 中的命名空间可使用 Cloud Data Fusion API 服务代理 默认情况。

为了更好地隔离数据 一个服务账号(称为每个命名空间服务账号)与每个 命名空间。自定义的 IAM 服务账号 会因命名空间而异 各命名空间之间的 Google Cloud 资源(在流水线设计期间) Cloud Data Fusion 中的操作,例如流水线预览、Wrangler 和 流水线验证。

准备工作

  • 启用了 RBAC 的实例支持每个命名空间的服务账号 。
  • 每个命名空间的服务账号用于控制和管理 对 Google Cloud 资源的访问权限。

所需的角色和权限

如需获取自定义命名空间服务账号所需的权限,以及授予命名空间中的用户权限, 请让管理员授予您 项目中 Cloud Data Fusion 实例的 Cloud Data Fusion Admin (roles/datafusion.admin) IAM 角色。 如需详细了解如何授予角色,请参阅管理访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

管理命名空间中用户的权限

要在命名空间中为用户提供所需的权限,请授予预定义的 向其授予 Cloud Data Fusion 角色。有关详情,请参阅 预定义的 Cloud Data Fusion 角色 在启用了 RBAC 的实例中可供用户使用。

配置命名空间服务账号

控制台

如需为命名空间配置服务账号,请按以下步骤操作:

  1. 如果您目前没有为命名空间创建服务账号 创建一个
  2. 在 Google Cloud 控制台中,前往 Cloud Data Fusion 实例 页面,然后在 Cloud Data Fusion Web 中打开实例 界面。

    转到实例

  3. 点击 System admin > Configuration >(系统管理员) 命名空间

  4. 点击您要配置的命名空间。

  5. 点击服务账号标签页,然后点击添加服务 账号。

    “添加服务账号”按钮。

  6. 授予 Workload Identity User 角色 (roles/iam.workloadIdentityUser).

    如需授予该角色,请按以下步骤操作:

    1. Pipeline Design service account 字段中,输入服务 账号电子邮件地址,例如 SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
    2. 按照显示的对话框中的说明操作。
  7. 如需完成服务账号配置,请返回到命名空间 ,然后点击Cloud Data Fusion

  8. 重复上述步骤,为每个命名空间配置服务账号。

REST API

  1. 授予 Workload Identity User 角色 (roles/iam.workloadIdentityUser).

    如需授予该角色,请按以下步骤操作:

    1. 设置以下环境变量:

      export TENANT_PROJECT_ID=TENANT_PROJECT
      export GSA_PROJECT_ID=SERVICE_ACCOUNT_PROJECT
      

      替换以下内容:

      • TENANT_PROJECT:租户项目 ID。接收者 找到该实例,请转到实例页面并点击该实例 名称。此 ID 会显示在实例详情页面上。

        转到实例

      • SERVICE_ACCOUNT_PROJECT: IAM 所在的 Google Cloud 项目的 ID 服务账号。

    2. 授予 Workload Identity User 角色:

      gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser
          --member "serviceAccount:${TENANT_PROJECT_ID}.svc.id.goog[default/NAMESPACE_IDENTITY]" SERVICE_ACCOUNT_EMAIL \
          --project ${GSA_PROJECT_ID}
      

      替换以下内容:

      • NAMESPACE_IDENTITY: 命名空间。有关详情,请参阅 命名空间

      • SERVICE_ACCOUNT_EMAIL: 服务账号 - 例如 SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

  2. 验证上一步中的命名空间服务账号电子邮件地址。设置 environment variables,则 运行以下命令:

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" ${CDAP_ENDPOINT}/v3/namespaces/NAMESPACE_NAME/credentials/workloadIdentity/validate -X POST -d '{"serviceAccount":"SERVICE_ACCOUNT_EMAIL"}'
    

    替换以下内容:

    • NAMESPACE_NAME:命名空间的 ID。
    • SERVICE_ACCOUNT_EMAIL:IAM 服务账号电子邮件地址。
  3. 设置命名空间服务账号。设置 environment variables,然后运行以下命令 命令:

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"
     ${CDAP_ENDPOINT}/v3/namespaces/NAMESPACE_NAME/credentials/workloadIdentity -X PUT -d '{"serviceAccount":"SERVICE_ACCOUNT_EMAIL"}'
    

修改命名空间服务账号

控制台

如需修改命名空间服务账号,请按以下步骤操作:

  1. 在您的 Cloud Data Fusion 实例中,点击系统管理员 > 配置 > 命名空间
  2. 点击包含您要修改的服务账号的命名空间。
  3. 要修改服务账号,请转到服务账号标签页。在以下地点旁边: 服务账号的名称,点击 菜单 > 修改
  4. 请按照相应步骤配置命名空间服务账号

REST API

如需修改命名空间服务账号,请按以下步骤操作:

  1. 设置 environment variables, 然后运行以下命令:

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"
     ${CDAP_ENDPOINT}/v3/namespaces/NAMESPACE_NAME/credentials/workloadIdentity -X PUT -d '{"serviceAccount":"SERVICE_ACCOUNT_EMAIL"}'
    

    替换以下内容:

    • NAMESPACE_NAME:命名空间的 ID。
    • SERVICE_ACCOUNT_EMAIL:IAM 服务账号电子邮件地址。

删除命名空间服务账号

控制台

如需从命名空间中删除命名空间服务账号,请按以下步骤操作:

  1. 在您的 Cloud Data Fusion 实例中,点击系统管理员 > 配置 > 命名空间
  2. 点击包含您要删除的服务账号的命名空间。
  3. 要移除服务账号,请转到服务账号标签页。下一步 依次点击 服务账号 > 删除

REST API

如需从命名空间中删除命名空间服务账号,请按以下步骤操作:

  1. 设置 environment variables, 然后运行以下命令:

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" ${CDAP_ENDPOINT}/v3/namespaces/NAMESPACE_NAME/credentials/workloadIdentity -X DELETE
    

    替换以下内容:

    • NAMESPACE_NAME:命名空间的 ID。

获取命名空间服务账号

控制台

如需获取命名空间的服务账号信息,请按照以下说明操作 步骤:

  1. 在 Google Cloud 控制台中,前往 Cloud Data Fusion 实例 页面,然后在 Cloud Data Fusion Web 中打开实例 界面。

    转到实例

  2. 点击 System admin > Configuration >(系统管理员) 命名空间

  3. 点击命名空间名称以查看服务账号详情。

REST API

如需获取命名空间服务账号名称,请按以下步骤操作:

  1. 设置 environment variables, 然后运行以下命令:

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" ${CDAP_ENDPOINT}/v3/namespaces/NAMESPACE_NAME/credentials/workloadIdentity -X GET
    

    替换以下内容:

    • NAMESPACE_NAME:命名空间的 ID。

    如果成功,您将获得如下格式的服务账号电子邮件 回答:

    Response: {"serviceAccount":"SERVICE_ACCOUNT_EMAIL"}
    

后续步骤