本文档介绍如何配置 API Gateway 开发环境。
前提条件
在 API Gateway 上创建 API 之前,请确保您已经:
创建一个 Google Cloud 项目,并且您在该项目中拥有 Editor 或 Owner 角色。在初次部署之后,您可以向用户、组或服务帐号授予具有更多限制的服务配置编辑者角色。
如下文所述,启用必需 Google 服务。
如下文所述,配置用于创建 API 配置的服务帐号。
准备 Cloud SDK 以进行部署
如需为部署准备 gcloud
,请执行以下操作:
- 安装并初始化 Cloud SDK。
- 更新 Cloud SDK:
gcloud components update
- 确保 Cloud SDK 有权访问您的数据和服务:
gcloud auth login
您的浏览器会打开一个新标签页,并提示您选择一个帐号。
- 设置默认项目。将 PROJECT_ID 替换为您的 Google Cloud 项目 ID:
gcloud config set project PROJECT_ID
启用必需服务
API Gateway 要求您启用以下 Google 服务:
名称 | 标题 |
---|---|
apigateway.googleapis.com |
API Gateway API |
servicemanagement.googleapis.com |
Service Management API |
servicecontrol.googleapis.com |
Service Control API |
如需确认已启用必需的服务,请运行以下命令:
gcloud services list
如果您没有看到列出的必需服务,请启用它们:
gcloud services enable apigateway.googleapis.comgcloud services enable servicemanagement.googleapis.com
gcloud services enable servicecontrol.googleapis.com
如需详细了解 gcloud
服务,请参阅 gcloud
服务。
配置服务帐号
在网关上部署的 API 配置使用与网关服务帐号关联的权限执行。
最佳做法是,在用于 API Gateway 的同一项目中创建一个单独的服务帐号。然后,只向该服务帐号分配访问后端服务所需的权限。这样,您可以限制与 API 配置关联的权限。
对于 API Gateway,创建或更新 API 配置或网关的用户需要对服务帐号对象拥有 iam.serviceAccounts.actAs
权限。此权限包含在 Service Account User 角色中。
您可以使用以下命令将角色和权限添加到用户的服务帐号:
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT \ --member user:USER_EMAIL \ --role roles/iam.serviceAccountUser
此外,网关服务帐号需要具备访问后端服务所需的权限。例如,如果您的后端作为 Cloud Functions 函数实现,则至少应该为服务帐号分配 Cloud Functions Invoker 角色。对于 Cloud Run 后端,角色为 Cloud Run Invoker。通过限制与 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 --project=PROJECT_ID \ --backend-auth-service-account=SERVICE_ACCOUNT_EMAIL
如需详细了解如何创建 API 配置,请参阅创建 API。
使用默认服务帐号
某些 GCP 产品定义了默认服务帐号。例如,如果您使用 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 --project=PROJECT_ID
如需了解详情,请参阅使用 Compute Engine 默认服务帐号。
使用 OpenID Connect
从 API Gateway 到后端服务的请求可能会使用身份验证。这些请求使用由网关的服务帐号签名的 OpenID Connect (OIDC) 令牌进行保护。您应确认您的后端服务已正确配置为接受使用 OIDC 令牌进行身份验证和授权。Cloud Functions、Cloud Run 和 Identity Aware Proxy (IAP) 提供此选项。