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

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

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

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

授予访问权限

Cloud Console

  1. 在 Cloud Console 中,转到项目的 Endpoints > 服务页面。

    转到“Endpoints 服务”页面

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

    如需了解此角色,请参阅 Service Management API 访问权限控制主题。尽管 Cloud Console 允许您选择其他角色,但这些角色对管理您的 API 没有帮助。

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

gcloud

  1. 打开 Cloud Shell;如果已安装 Cloud SDK,则打开终端窗口。
  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 角色不允许用户访问 Cloud Console 中的 Endpoints > 服务页面。如果您希望用户能够访问 Endpoints > 服务页面,则必须授予他们 Project Viewer 角色或具有更高权限的项目角色。如需了解详情,请参阅授予、更改和撤消对资源的访问权限

撤消访问权限

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

Cloud Console

  1. 在 Cloud Console 中,转到项目的 Endpoints > 服务页面。

    转到“Endpoints 服务”页面

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

gcloud

  1. 打开 Cloud Shell;如果已安装 Cloud SDK,则打开终端窗口。
  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 项目的访问权限,请参阅授予、更改和撤消对资源的访问权限了解详情。

后续步骤

了解以下内容: