由于 PHP 5.5 版不再受社区支持,我们强烈建议新应用使用 PHP 7 运行时

应用安全概览

地区 ID

REGION_ID 是 Google 根据您在创建应用时选择的地区分配的缩写代码。此代码不对应于国家/地区或省,尽管某些地区 ID 可能类似于常用国家/地区代码和省代码。在 App Engine 网址中包含 REGION_ID.r 对于现有应用是可选项,但在不久后将成为所有新应用的必要项。

为了确保顺利过渡,我们正在逐步更新 App Engine 以使用地区 ID。如果我们尚未更新您的 Google Cloud 项目,则您不会看到应用的区域 ID。由于该 ID 对于现有应用是可选的,因此您在现有应用可以使用区域 ID 后无需更新网址或进行其他更改。

详细了解区域 ID

安全性是 Google Cloud 的核心功能,但您仍需采取一些措施来保护 App Engine 应用并识别漏洞。

您可以借助以下功能来确保 App Engine 应用的安全。如需详细了解 Google 安全模型以及可以采取哪些措施来保护 Cloud 项目,请参阅 Google Cloud Platform 安全性

HTTPS 请求

使用 HTTPS 请求安全访问 App Engine 应用。您可以使用以下选项,具体取决于应用的配置方式:

appspot.com网域
  • 使用 https 网址前缀向您的 Cloud 项目的 default 服务发送 HTTPS 请求,例如:
    https://PROJECT_ID.REGION_ID.r.appspot.com
  • 如需定位 App Engine 应用中的特定资源,请使用 -dot- 语法分隔您要定位的各资源,例如:
    https://VERSION_ID-dot-SERVICE_ID-dot-PROJECT_ID.REGION_ID.r.appspot.com

  • 如需将 HTTP 网址转换为 HTTPS 网址,请将各资源之间的英文句点替换为 -dot-,例如:
    http://SERVICE_ID.PROJECT_ID.REGION_ID.r.appspot.com
    https://SERVICE_ID-dot-PROJECT_ID.REGION_ID.r.appspot.com

如需详细了解 HTTPS 网址以及如何针对资源,请参阅请求的路由方式

自定义网域

如需使用自定义网域发送 HTTPS 请求,可使用由 App Engine 预配的托管式 SSL 证书。如需了解详情,请参阅使用 SSL 保护自定义网域

访问权限控制

在每个 Cloud 项目中,设置访问权限控制以确定哪些人可以访问项目中的服务(包括 App Engine)。您可以为不同的帐号分配不同的角色,以确保每个帐号仅具有支持您的应用所需的权限。如需了解详情,请参阅设置访问权限控制

App Engine 防火墙

借助 App Engine 防火墙,您可以通过一组规则来允许或拒绝来自指定 IP 地址范围的请求,从而控制对 App Engine 应用的访问。您不需要为防火墙所屏蔽的流量或带宽付费。您可以按以下方式创建防火墙:

仅允许来自特定网络的流量
确保只有特定网络中的特定 IP 地址范围才能访问您的应用。例如,通过创建规则,您可在应用的测试阶段仅允许公司专用网络中的 IP 地址范围访问您的应用。然后,您可以创建和修改防火墙规则,以此控制整个发布流程的访问范围,使您的应用在公开发布之前仅可供公司内部或外部的特定组织进行访问。
仅允许来自特定服务的流量
确保发送到 App Engine 应用的所有流量都先通过特定服务进行代理。例如,如果您使用第三方 Web 应用防火墙 (WAF) 来代理定向到您的应用的请求,则可以创建防火墙规则,拒绝 WAF 转发的请求之外的所有请求。
屏蔽存在滥用行为的 IP 地址
虽然 Google Cloud 实施了许多机制来防止攻击,您仍然可以使用 App Engine 防火墙来阻止从存在恶意企图的 IP 地址发送到您的应用的流量,或者保护您的应用免遭拒绝服务攻击和类似形式的滥用。您可以将某些 IP 地址或子网列入拒绝名单,这样,从这些地址和子网路由的请求会被拒绝,无法到达您的 App Engine 应用。

如需详细了解如何创建规则和配置防火墙,请参阅使用防火墙控制应用访问权限

入站流量控制

默认情况下,您的 App Engine 应用会接收发送至其 appspot 网址或您已为应用配置的自定义网域的所有 HTTP 请求。

您可以使用网络入站流量控制来限制流量,使应用仅接收来自特定来源的 HTTP 请求:

  • 全部:(默认)应用将接收所有流量,包括从互联网发送的直接请求。

  • 内部和 Cloud Load Balancing:应用将只接收通过 Cloud Load Balancing 路由的请求或来自同一项目中 VPC 网络的请求。所有其他请求会被拒绝并显示 403 错误。

  • 仅限内部:应用将仅接收来自同一项目中 VPC 网络的请求。所有其他请求会被拒绝并显示 403 错误。

查看入站流量设置

控制台

  1. 转到“App Engine 服务”页面。

    转到“服务”页面

  2. 找到入站流量列。对于每项服务,此列中的值会将入站流量设置显示为以下项之一:全部(默认)、内部 + 负载平衡内部

gcloud

如需使用 gcloud 工具查看服务的入站流量设置,请执行以下操作:

gcloud app services describe SERVICE

SERVICE 替换为服务的名称。

例如,如需查看默认服务运行的入站流量设置和其他信息,请运行以下命令:

gcloud app services describe default

修改入站流量设置

控制台

  1. 转到“App Engine 服务”页面。

    转到“服务”页面

  2. 选择您要修改的服务。

  3. 点击修改入站流量设置

  4. 从菜单中选择所需的入站流量设置,然后点击保存

gcloud

如需使用 gcloud 工具更新服务的入站流量设置,请执行以下操作:

gcloud app services update SERVICE --ingress=INGRESS

替换以下内容:

  • SERVICE:您的服务的名称。
  • INGRESS:要应用的入站流量控制。allinternal-onlyinternal-and-cloud-load-balancing 之一。

例如:

  • 如需更新 App Engine 应用的默认服务,以仅接受来自 Cloud Load Balancing 和来自同一项目的 VPC 网络的流量:

    gcloud app services update default --ingress=internal-and-cloud-load-balancing
  • 如需更新名为“internal-requests”的服务以仅接受来自同一项目中的 VPC 网络的流量:

    gcloud app services update internal-requests --ingress=internal-only

Security Scanner

为了发现漏洞,Google Cloud Web Security Scanner 会抓取您的 App Engine 应用,追踪从起始网址可达的所有链接,并尝试执行尽可能多的用户输入和事件处理程序。

您必须是 GCP 项目的所有者,才能使用 Cloud Scanner。如需详细了解如何分配角色,请参阅设置访问权限控制

您可以从 Google Cloud Console 运行安全扫描,以识别 App Engine 应用中的安全漏洞。如需详细了解如何运行 Security Scanner,请参阅 Security Scanner 快速入门