本页面介绍如何使用入站流量设置来限制对 Cloud Run 服务的网络访问。
在网络级层,可以从以下网络入站流量路径访问 Cloud Run 服务的端点:
所有网络入站流量路径都受服务的入站流量设置约束。默认的入站流量路径和入站流量设置允许互联网上的任何资源访问您的 Cloud Run 服务。您可以使用自定义限制条件来限制组织或一组项目的入站流量设置。IAM 身份验证仍然适用于从上述任何网络入站流量路径到达服务端点的请求。如需采用分层方法来管理访问权限,请同时使用网络入站流量设置和 IAM 身份验证。
可用的网络入站流量设置
您可以使用以下设置:
设置 | 说明 |
---|---|
内部 |
限制性最高。允许来自以下来源的请求:
run.app 网址访问您的服务也是如此。来自其他来源(包括互联网)的请求无法通过 run.app 网址或自定义网域访问您的服务。 |
内部和 Cloud Load Balancing | 此设置允许来自以下资源的请求:
注意:如需在 gcloud CLI 中启用此设置,请使用 internal-and-cloud-load-balancing 。
如需在 Google Cloud 控制台中启用此设置,请选择内部 > 允许来自外部应用负载均衡器的流量。 |
全部 |
限制性最低允许所有请求,包括直接从互联网发送到 run.app 网址的请求。 |
访问内部服务
需额外注意以下事项:
访问内部服务时,请像平常一样使用其网址(即默认
run.app
网址或 Cloud Run 中设置的自定义网域)来调用它们。对于来自 Compute Engine 虚拟机实例的请求,具有外部 IP 地址或使用 Cloud NAT 的机器无需进一步设置。否则,请参阅接收来自 VPC 网络的请求。
从 Cloud Run、App Engine 或 Cloud Run functions 调用设置为“内部”或“内部和 Cloud Load Balancing”的 Cloud Run 服务时,流量必须通过被视为内部资源的 VPC 网络路由。请参阅接收来自其他 Cloud Run 服务、App Engine 和 Cloud Run functions 的请求。
来自同一项目中 VPC 网络内资源的请求属于“内部”请求,即使这些资源具有外部 IP 地址也是如此。
来自通过 Cloud VPN 和 Cloud Interconnect 连接到 VPC 网络的本地资源的请求是“内部”请求。
设置入站流量
您可以使用标签页中的任何受支持的方法来设置入站流量:
控制台
在 Google Cloud 控制台中,转到 Cloud Run 页面。
如果您要配置新服务,请点击部署容器,然后选择服务以显示创建服务表单。填写初始服务设置页面。
如果您要配置现有服务,请点击该服务,然后点击网络标签页。
选择要允许的入站流量:
点击创建或保存。
gcloud
如果要部署新服务,请使用
--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
如果您要创建新的服务,请跳过此步骤。如果您要更新现有服务,请下载其 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
文件:
停用默认网址
停用 Cloud Run 服务的默认 run.app
网址,以便仅允许来自服务的其他入站流量路径(Cloud Load Balancing 和任何已配置的网域映射)的流量。
如需停用默认网址,请执行以下步骤:
命令行
如需停用服务的
run.app
网址,请运行带有--no-default-url
标志的gcloud beta run deploy
或gcloud beta run services update
命令:gcloud beta run deploy SERVICE_NAME --no-default-url
其中,SERVICE_NAME 是您的 Cloud Run 服务的名称。
在输出中,网址显示为 None
。
如需恢复默认网址,请使用 --default-url
标志。
YAML
如果您要创建新的服务,请跳过此步骤。如果您要更新现有服务,请下载其 YAML 配置:
gcloud run services describe SERVICE --format export > service.yaml
如需停用
run.app
网址,请使用run.googleapis.com/default-url-disabled
注解:apiVersion: serving.knative.dev/v1 kind: Service metadata: annotations: run.googleapis.com/default-url-disabled: true run.googleapis.com/launch-stage: BETA name: SERVICE spec: template: metadata: name: REVISION
您需要进行如下替换
- 将 SERVICE 替换为您的 Cloud Run 服务的名称。
- 将 REVISION 替换为新的修订版本名称或者将其删除(如果存在)。如果您提供新的修订版本名称,则该名称必须满足以下条件:
- 开头为
SERVICE-
- 仅包含小写字母、数字和
-
- 不以
-
结尾 - 不超过 63 个字符
- 开头为
使用以下命令创建或更新服务:
gcloud run services replace service.yaml
如需恢复默认网址,请移除 run.googleapis.com/default-url-disabled
注解。
以下 Google Cloud 服务使用默认 run.app
网址调用 Cloud Run。停用默认 run.app
网址会阻止这些服务按预期运行:
- 基于 Cloud Run 服务的 Cloud Run functions (第 2 代) 的
cloudfunctions.net
网址。 - Cloud Scheduler
- Cloud Service Mesh
- Cloud Tasks
- Eventarc
- Firebase App Hosting
- Firebase 托管
- Pub/Sub
- 合成监控工具和拨测
- Workflows