授予和撤消对 API 的访问权限

控制谁有权访问 API 是开发工作不可或缺的一部分。例如,在测试 API 时,您可能希望使用具备相应权限的服务账号来自动重新部署更新的 Cloud Endpoints 配置。默认情况下,只有项目所有者才能管理对 API 的访问权限。本页面介绍如何使用 Google Cloud 控制台或 Google Cloud CLI 授予和撤消对 API 的访问权限。

Endpoints 使用 Identity and Access Management 角色在 API 级别授予和撤消访问权限。您可以授予和撤消对用户、服务账号或 Google 群组的访问权限。

Google 群组是授予或撤销一组用户访问权限的一种便捷方式。您可以一次授予或撤消整个组的访问权限,而不是一次授予或撤消单个用户或服务账号的访问权限。您还可以轻松地向 Google 群组中添加成员以及从中移除成员,而不是为每一个成员授予或撤消 IAM 角色。

授予访问权限

Google Cloud 控制台

  1. 在 Google Cloud 控制台中,转到项目的 端点 > 服务页面。

    转到“Endpoints 服务”页面

  2. 如果您有多个 API,请点击相应 API 的名称。
  3. 如果权限侧边栏未打开,请点击 权限
  4. 添加成员框中,输入用户、服务帐号或 Google 群组的电子邮件地址。
  5. 选择角色下拉列表中,点击 Service Management,然后选择以下某一角色:
    • Service Consumer:此角色包含供非项目成员在自己的项目中查看和启用 API 的权限。如果您已为 API 创建门户,则获授这一角色的 API 用户可以访问此门户。
    • Service Controller:此角色包含在运行时调用 Service Infrastructure API 中的 check report 方法的权限。
    • 服务配置编辑者:此角色包含 Service Management 将 Endpoints 配置部署到现有服务所需的最低权限。
    • Service Management Administrator:此角色包含 Service Config Editor、Service Consumer 和 Service Controller 角色中的权限,以及通过使用 gcloud授予、更改和撤消对资源的访问权限中描述的编程方法来授予对该 API 的访问权限所需的权限。

    如需了解此角色,请参阅 Service Management API 访问权限控制主题。虽然 Google Cloud 控制台允许您选择其他角色,但这些角色对于管理您的 API 并无帮助。

  6. 如需将成员添加到指定的 IAM 角色,请点击添加
  7. 根据需要重复添加成员并选择角色。
  8. Service Management 角色不允许用户访问 Google Cloud 控制台中的 端点 > 服务页面。如果您希望用户能够访问 Endpoints > 服务页面,则必须授予他们 Project Viewer 角色或具有更高权限的项目角色。如需了解详情,请参阅授予、更改和撤消对资源的访问权限

gcloud

  1. 打开 Cloud Shell;如果已安装 Google Cloud CLI,则打开终端窗口。
  2. 输入适用的 gcloud 命令:
    • 如果要向用户授予访问权限,请运行以下命令:
      gcloud endpoints services add-iam-policy-binding [SERVICE-NAME] \
        --member='user:[EMAIL-ADDRESS]' \
        --role='[ROLE]'

      对于 role,请指定以下某一 IAM 角色:

      • roles/servicemanagement.configEditor:此角色包含 Service Management 将 Endpoints 配置部署到现有服务所需的最低权限。
      • roles/servicemanagement.admin:此角色包含 roles/servicemanagement.configEditorroles/servicemanagement.serviceConsumerroles/servicemanagement.serviceController 中的权限,以及通过使用 gcloud授予、更改和撤消对资源的访问权限中描述的编程方法来授予对该 API 的访问权限所需的权限。

      例如:

      gcloud endpoints services add-iam-policy-binding example-service-name \
        --member='user:example-user@gmail.com' \
        --role='roles/servicemanagement.admin'

    • 如果您要向某个服务帐号授予访问权限,请运行以下命令:
      gcloud endpoints services add-iam-policy-binding [SERVICE-NAME] \
        --member='serviceAccount:[EMAIL-ADDRESS]' \
        --role='[ROLE]'

      例如:

      gcloud endpoints services add-iam-policy-binding example-service-name \
        --member='serviceAccount:example-service-account@example-project.iam.gserviceaccount.com' \
        --role='roles/servicemanagement.configEditor'

    • 如果您要向某个 Google 群组授予访问权限,请运行以下命令:
      gcloud endpoints services add-iam-policy-binding [SERVICE-NAME] \
        --member='group:[GROUP-NAME]@googlegroups.com' \
        --role='[ROLE]'

      例如:

      gcloud endpoints services add-iam-policy-binding example-service-name \
        --member='group:example-group@googlegroups.com' \
        --role='roles/servicemanagement.configEditor'

  3. Service Management 角色不允许用户访问 Google Cloud 控制台中的 端点 > 服务页面。如果您希望用户能够访问 Endpoints > 服务页面,则必须授予他们 Project Viewer 角色或具有更高权限的项目角色。如需了解详情,请参阅授予、更改和撤消对资源的访问权限

撤消访问权限

如需撤消对 API 的访问权限,请从之前具有 IAM 角色的成员中移除该角色。

Google Cloud 控制台

  1. 在 Google Cloud 控制台中,转到项目的 Endpoints > 服务页面。

    转到“Endpoints 服务”页面

  2. 如果您有多个 API,请点击相应 API 的名称。
  3. 如果权限侧边栏未打开,请点击 权限
  4. 找到要撤消其访问权限的成员。您可以点击适用的角色卡以查看成员列表,也可以在搜索成员框中输入名称或角色。
  5. 点击删除
  6. 如果您还想撤消用户对 Google Cloud 项目的访问权限,请参阅授予、更改和撤消对资源的访问权限了解详情。

gcloud

  1. 打开 Cloud Shell;如果已安装 gcloud CLI,则打开终端窗口。
  2. 输入适用的 gcloud 命令:
    • 如果要撤消某个用户的访问权限,请运行以下命令:
      gcloud endpoints services remove-iam-policy-binding [SERVICE-NAME] \
        --member='user:[EMAIL-ADDRESS]' \
        --role='[ROLE-NAME]'

      例如:

      gcloud endpoints services remove-iam-policy-binding example-service-name \
        --member='user:example-user@gmail.com' \
        --role='roles/editor'
    • 如果要撤消服务帐号的访问权限,请运行以下命令:
      gcloud endpoints services remove-iam-policy-binding [SERVICE-NAME] \
        --member='serviceAccount:[EMAIL-ADDRESS]' \
        --role='[ROLE-NAME]'

      例如:

      gcloud endpoints services remove-iam-policy-binding example-service-name \
        --member='serviceAccount:example-service-account@example-project.iam.gserviceaccount.com' \
        --role='roles/servicemanagement.configEditor'
    • 如果要撤消某个 Google 群组的访问权限,请运行以下命令:
      gcloud endpoints services remove-iam-policy-binding [SERVICE-NAME] \
            --member='group:[GROUP-NAME]@googlegroups.com' \
            --role='[ROLE-NAME]'

      例如:

      gcloud endpoints services remove-iam-policy-binding example-service-name \
            --member='group:example-group@googlegroups.com' \
            --role='roles/viewer'
  3. 如果您还想撤消用户对 Google Cloud 项目的访问权限,请参阅授予、更改和撤消对资源的访问权限了解详情。

后续步骤

了解: