配置开发环境
本文档介绍如何配置 API Gateway 开发环境。
前提条件
在 API Gateway 上创建 API 之前,您必须执行以下操作:
创建一个Google Cloud 项目,并且您在该项目中拥有编辑者或所有者角色。在初次部署之后,您可以向用户、组或服务账号授予具有更多限制的服务配置编辑者角色。
准备 Google Cloud CLI 以进行部署
如需为部署准备 gcloud,请执行以下操作:
- 安装并初始化 gcloud CLI。
- 更新 gcloud CLI:
gcloud components update
- 确保 gcloud CLI 有权访问您的数据和服务:
gcloud auth login
您的浏览器会打开一个新标签页,并提示您选择一个账号。
- 设置默认项目。将 PROJECT_ID 替换为您的 Google Cloud 项目 ID:
gcloud config set project PROJECT_ID
启用所需的 Google 服务
API Gateway 要求您启用以下 Google Cloud 服务:
| 名称 | 服务名称 |
|---|---|
| API Gateway API | apigateway.googleapis.com |
| Service Management API | servicemanagement.googleapis.com |
| Service Control API | servicecontrol.googleapis.com |
如需启用必需的服务,请执行以下操作:
Google Cloud 控制台
在 Google Cloud 控制台中,前往 API 和服务 > API 库页面。
- 在 API 库页面上,在搜索栏中输入所需的 API 名称。
- 在搜索结果中,选择 API 页面。
- 在 API 页面上,点击启用。
- 针对上表中列出的每项服务重复上述步骤。
Google Cloud CLI
使用以下命令启用服务:
gcloud services enable apigateway.googleapis.comgcloud services enable servicemanagement.googleapis.comgcloud services enable servicecontrol.googleapis.com
如需详细了解 gcloud 服务,请参阅 gcloud 服务。
配置用于创建 API 配置的服务账号
在网关上部署的 API 配置使用与网关服务账号关联的权限执行。
最佳做法是,在用于 API Gateway 的同一项目中创建一个单独的服务账号。然后,只向该服务账号分配访问后端服务所需的权限。这样,您可以限制与 API 配置关联的权限。
对于 API Gateway,创建或更新 API 配置或网关的用户需要对服务账号对象拥有 iam.serviceAccounts.actAs 权限。此权限包含在 Service Account User 角色中。
如需向网关服务账号添加所需角色和权限,请执行以下操作:
Google Cloud 控制台
-
在 Google Cloud 控制台中,依次前往 IAM 和管理 > 服务账号页面。
- 选择所需项目或创建新项目。
- 点击所需的服务账号。
- 点击权限标签页。
- 点击管理访问权限。
- 点击 Add role,然后为在创建 API 配置时将引用服务账号的主账号分配
Service Account User角色。 - 点击保存。
Google Cloud CLI
您可以使用以下命令将角色和权限添加到用户的服务账号:
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \ --member user:USER_EMAIL \ --role roles/iam.serviceAccountUser
其中:
- SERVICE_ACCOUNT_EMAIL 是服务账号的电子邮件地址,格式为
SA_NAME@PROJECT_ID.iam.gserviceaccount.com。 - USER_EMAIL 是用户的电子邮件地址。
例如:
gcloud iam service-accounts add-iam-policy-binding my-service-account@my-project.iam.gserviceaccount.com \ --member user:myemail@email.com \ --role roles/iam.serviceAccountUser
此外,网关服务账号需要具备访问后端服务所需的权限。例如:
- 对于 Cloud Function 后端,必须为服务账号分配 Cloud Functions Invoker 角色。
- 对于 Cloud Run 后端,必须为服务账号分配 Cloud Run Invoker 角色。
- 对于 App Engine 后端,您必须按照设置 IAP 访问权限中的步骤,向与您的网关关联的服务账号授予 IAP-secured Web App User 角色。
通过限制与 API 配置关联的权限,您可以更好地保护后端系统。如需了解详情,请参阅 Identity and Access Management (IAM) 文档。
创建服务账号后,请在创建 API 配置时使用 --backend-auth-service-account 选项指定该服务账号的电子邮件地址:
gcloud api-gateway api-configs create CONFIG_ID \ --api=API_ID --openapi-spec=API_DEFINITION \ --backend-auth-service-account=SERVICE_ACCOUNT_EMAIL
如需详细了解如何创建 API 配置,请参阅创建 API 配置。
使用默认服务账号
某些 Google Cloud 产品定义了默认服务账号。例如,如果您使用 Compute Engine 并为项目启用了 Compute Engine API,则系统会为您创建默认 Compute Engine 服务账号。通过电子邮件地址可识别默认服务账号:
PROJECT_NUMBER-compute@developer.gserviceaccount.com
如果您为默认服务账号分配了必要的权限,则可以在创建 API 配置时省略 --backend-auth-service-account 选项:
gcloud api-gateway api-configs create CONFIG_ID \ --api=API_ID --openapi-spec=API_DEFINITION
如需了解详情,请参阅 Compute Engine 默认服务账号。
使用 OpenID Connect
从 API Gateway 到后端服务的请求可能会使用身份验证。这些请求使用由网关的服务账号签名的 OpenID Connect (OIDC) 令牌进行保护。您应确认您的后端服务已正确配置为接受使用 OIDC 令牌进行身份验证和授权。Cloud Run functions、Cloud Run 和 Identity Aware Proxy (IAP) 提供此选项。