本页面介绍了如何使用入站流量设置来限制对 Cloud Run 服务的网络访问。在网络级层,默认情况下,互联网上的任何资源都可通过 run.app
网址或在 Cloud Run 中设置的自定义网域来访问 Cloud Run 服务。您可以通过为入站流量指定不同的设置来更改此默认设置。所有入站流量路径(包括默认 run.app
网址)都受入站流量设置的约束。入站流量是在服务级层设置的。
入站流量设置和 IAM 身份验证方法是两种用于管理服务访问权限的方法。它们彼此独立。如需采用分层方法来管理访问权限,请同时使用这两种方法。
可用的入站流量设置
您可以使用以下设置:
设置 | 说明 |
---|---|
内部 |
限制性最高。允许来自以下来源的请求:
run.app 网址访问您的服务也是如此。来自其他来源(包括互联网)的请求无法通过 run.app 网址或自定义网域访问您的服务。从 Cloud Run、Cloud Functions 或 App Engine 发送到 Cloud Run 的请求必须进入 VPC 网络才能被视为内部请求。如需将请求路由到 VPC 网络,请使用直接 VPC 出站流量或无服务器 VPC 访问通道连接器,并在与直接 VPC 出站流量或连接器关联的子网上启用专用 Google 访问通道。 不支持多租户,即同一项目中的多个信任网域。 |
内部和 Cloud Load Balancing | 允许来自以下资源的请求:
|
全部 |
限制性最低允许所有请求,包括直接从互联网发送到 run.app 网址的请求。 |
访问内部服务
需额外注意以下事项:
访问内部服务时,请像平常一样使用它们的公开网址(即默认
run.app
网址或 Cloud Run 中设置的自定义网域)来调用它们。对于来自 Compute Engine 虚拟机实例的请求,具有公共 IP 地址或使用 Cloud NAT 的机器无需进一步设置。否则,请参阅接收来自 VPC 网络的请求。
对于其他 Cloud Run 服务或同一项目中的 Cloud Functions 函数发出的请求,请将服务或函数连接到 VPC 网络,并通过连接器路由所有出站流量,如使用连接器的 VPC 中所述。请注意,系统仍会强制执行 IAM 调用方权限。
来自同一项目中 VPC 网络内资源的请求将归类为“内部”请求,即使这些资源具有公共 IP 地址也是如此。
如果您将 Cloud Run Admin API 配置为服务边界中的受限服务,则来自同一 VPC Service Controls 边界内的单独项目中的资源的请求只能调用内部服务。
如需了解共享 VPC 流量何时被识别为“内部”,请参阅共享 VPC 的特殊注意事项。
来自通过 Cloud VPN 和 Cloud Interconnect 连接到 VPC 网络的本地资源的请求被视为“内部”。
对于从 Cloud Scheduler、Cloud Tasks、Eventarc、Pub/Sub、BigQuery 和 Workflows 发送到内部服务的请求,需要注意以下事项:
- 您必须为该服务使用 Cloud Run 默认
run.app
网址,而不是任何自定义网域。 - 作业、任务、Pub/Sub 订阅、事件、工作流或 BigQuery 远程函数必须与 Cloud Run 服务位于同一项目或 VPC Service Controls 边界中。
- 您必须为该服务使用 Cloud Run 默认
您可以使用来自同一项目或 VPC Service Controls 边界内的 Cloud Scheduler、Cloud Tasks、Pub/Sub、Eventarc、Workflows 或 BigQuery,从 VPC 网络之外的流量来源调用内部服务。
设置入站流量
您可以使用标签页中的任何受支持的方法来设置入站流量:
控制台
如果您要配置新服务,请点击创建服务,然后根据需要填写初始服务设置页面。
如果您要配置现有服务,请点击该服务,然后点击网络标签页。
选择您要允许的入站流量:
点击创建或保存。
命令行
如果要部署新服务,请使用
--ingress
标志部署您的服务:gcloud run deploy SERVICE --image IMAGE_URL --ingress INGRESS
替换
如果要更改现有服务入站流量,请执行以下操作:
gcloud run services update SERVICE --ingress INGRESS
替换
- 将
INGRESS
替换为可用入站流量设置之一:all
internal
internal-and-cloud-load-balancing
- 将
SERVICE
替换为您的服务名称
- 将
YAML
您可以使用 gcloud run services describe --format export
命令下载并查看现有服务配置,该命令会生成清理后的 YAML 格式的结果。然后按照后续说明修改字段,最后使用 gcloud run services replace
命令上传修改后的 YAML。请务必严格按照说明修改字段。
要查看和下载配置,请运行以下命令:
gcloud run services describe SERVICE --format export > service.yaml
更新
run.googleapis.com/ingress:
注释:apiVersion: serving.knative.dev/v1 kind: Service metadata: annotations: run.googleapis.com/ingress: INGRESS name: SERVICE spec: template: metadata: name: REVISION
替换
- 将 SERVICE 替换为您的 Cloud Run 的名称
- 将 INGRESS 替换为可用入站流量设置之一:
all
internal
internal-and-cloud-load-balancing
- 将 REVISION 替换为新的修订版本名称或者将其删除(如果存在)。如果您提供新的修订版本名称,则该名称必须满足以下条件:
- 开头为
SERVICE-
- 仅包含小写字母、数字和
-
- 不以
-
结尾 - 不超过 63 个字符
- 开头为
使用以下命令将服务替换为其新配置:
gcloud run services replace service.yaml
Terraform
如需了解如何应用或移除 Terraform 配置,请参阅基本 Terraform 命令。
请将以下内容添加到 main.tf
文件: