Google Cloud Armor 自动调节式保护可帮助保护您的 Google Cloud 应用、网站和服务免受 L7 分布式拒绝服务 (DDoS) 攻击,例如 HTTP 洪水和其他高频第 7 层(应用级)恶意行为。自动调节式保护可构建执行以下操作的机器学习模型:
- 检测异常活动并发出提醒
- 生成描述潜在攻击的特征
- 生成自定义 Google Cloud Armor WAF 规则以阻止特征
您可以根据安全政策启用或停用自动调节式保护。
有关异常流量(潜在攻击,包括攻击特征)的提醒与发送到 Cloud Logging 的事件日志显示在自动调节式保护事件信息中心中,在其中,您可以直接进行分析,或转发到下游日志或安全事件监控工作流。此外,针对潜在探测的提醒会作为发现结果在 Security Command Center 中生成。
自动调节式保护的可用性
只有当您订阅 Google Cloud Armor Enterprise 时,才能使用完整的自动调节式保护提醒。否则,您只会收到基本提醒,没有攻击签名或部署建议的规则的能力。
如果您的项目尚未注册 Cloud Armor Enterprise,请参阅使用 Cloud Armor Enterprise,了解如何注册。
Cloud Logging 和 Cloud Monitoring
由于有效使用自动调节式保护措施要求您了解 Google Cloud 中的日志记录和提醒的工作原理,因此我们建议您熟悉 Cloud Logging、提醒和提醒政策。
- 如需了解一般日志记录信息,请参阅 Cloud Logging 文档。
- 如需了解提醒,请参阅 Cloud Monitoring 文档。
- 如需了解特定于 Google Cloud Armor 的日志记录,请参阅使用请求日志记录。
配置和调整提醒
您可以在 Google Cloud Armor 安全政策保护应用的项目中启用自动调节式保护。在您为特定安全政策启用自动调节式保护后,自动调节式保护将对所有与安全政策关联的后端服务有效。
启用自动调节式保护后,至少经过一小时的训练期,自动调节式保护才会制定可靠基准,开始监控流量并生成提醒。在训练期间,自动调节式保护会对传入流量和特定于每个后端服务的使用模式进行建模,以便为每个后端服务制定基准。训练期结束后,如果自动调节式保护在定向到任何与相应安全政策关联的后端服务的流量中识别出高频异常或大量异常,则您会收到实时提醒。
您可以根据多个指标调整自动调节式保护提醒。发送到 Cloud Logging 的提醒包括置信度,攻击签名,建议的规则,以及估算的受影响的基准速率。
- 置信度水平表示自动调节式保护模型预测流量模式中实测变化为异常情况所依据的置信度。
- 与建议的规则关联的受影响基准费率表示规则捕获的现有基准流量所占的百分比。提供两个费率。第一个百分比是相对于受到攻击的特定后端服务的流量的百分比。第二个百分比是相对于通过安全政策的所有流量(包括所有已配置的后端服务目标,而不仅仅是受攻击的目标)的百分比。
您可以根据置信度和/或受影响的基准速率在 Cloud Logging 中过滤提醒。如需详细了解如何调整提醒,请参阅管理提醒政策。
自动调节式保护旨在保护后端服务免遭大量第 7 层 DDoS 攻击。在以下情况下,请求不会计入自动调节式保护:
- 直接从 Cloud CDN 传送的请求
- Google Cloud Armor 安全政策拒绝的请求
精细模型
默认情况下,自动调节式保护会根据指向每个后端服务的典型流量检测攻击并建议缓解措施。这意味着,后端服务背后的后端可能会出现过载,但自动调节式保护不会采取任何措施,因为攻击流量对后端服务而言并非异常。
借助精细模型功能,您可以将特定主机或路径配置为 Adaptive Protection 分析的精细单元。使用精细模型时,自适应保护功能建议的缓解措施会根据匹配的主机或网址路径前缀过滤流量,有助于减少误报。这些主机或路径中的每一个都称为精细流量单位。
识别出的攻击签名仅定位到进入精细流量单元的攻击流量;不过,过滤操作仍会应用于部署的规则匹配的所有请求,就像没有精细配置时一样。例如,如果您希望自动部署的规则仅与特定的流量精细化单位匹配,不妨考虑使用 evaluateAdaptiveProtectionAutoDeploy() && request.headers['host'] == ... && request.path == ...
等匹配条件。
除了主机和网址路径前缀之外,您还可以根据以下部分或全部选项配置提醒阈值。您可以将这些阈值应用于精细流量单元或整个后端服务,但负载阈值只能应用于后端服务:
- 负载:后端服务的最大负载,根据配置的应用负载平衡器确定。此选项不适用于精细的流量单位,也不适用于 Cloud Run、Cloud Run 函数或外部源后端等无服务器后端。
- 绝对每秒查询次数 (QPS):后端服务或流量单元收到的峰值流量(以每秒查询次数为单位)。
- 相对于基准 QPS:平均长期基准流量的倍数。例如,值
2
表示 QPS 是基准流量量的两倍。
如需详细了解如何配置精细模型,请参阅配置 Google Cloud Armor 自动调节式保护。
使用和解读提醒
自动调节式保护检测到可疑攻击后,它会立即在自动调节式保护事件信息中心中生成一个事件,并在 Cloud Logging 中生成一个日志项。提醒位于日志项的 JSON 载荷中。日志项在 Cloud Logging 中的网络安全政策资源下生成。日志消息会识别被攻击的后端服务,并包含置信度分数,指示强大的自动调节式保护功能如何将识别的流量模式更改评定为异常。日志消息还包含攻击特征,描述了攻击流量的特征,以及建议的可能适用于缓解攻击的 Google Cloud Armor 规则。
了解攻击签名
自动调节式保护提醒包括攻击特征,即对潜在攻击的流量特性的说明。您可以使用特征来识别和阻止(可能情况下)攻击。该特征采用两种形式:用户可读表和预构建的 Google Cloud Armor WAF 规则,您可以在相关安全政策中进行部署。 如果您没有订阅 Cloud Armor Enterprise,则基本攻击中不包含攻击签名。
特征由一组特性组成,例如来源 IP 地址、地理区域、Cookie、用户代理、引荐来源和其他 HTTP 请求标头,以及被认为与潜在攻击流量关联的特性的一组值。用户无法对这组特性进行配置。特性值取决于发送到后端服务的传入流量的值。
对于自动调节式保护认为指示潜在攻击的每个特性值,自动调节式保护会列出以下内容:
- 是攻击的可能性
- 特性在攻击中所占比例,即在检测到攻击时,具有该值的潜在攻击流量所占的百分比
- 特性在基准中所占比例,即在检测到攻击时,具有该特性值的基准流量所占的百分比
Cloud Logging 条目规范包含有关每条提醒中的信息的详情。
下面是一个包含潜在攻击特征的用户可读表示例:
特性名称 | 值 | 匹配类型 | 是攻击的可能性 | 攻击比例 | 基准比例 |
---|---|---|---|---|---|
UserAgent |
"foo" | 完全匹配 | 0.7 | 0.85 | 0.12 |
UserAgent |
"bar" | 完全匹配 | 0.6 | 0.7 | 0.4 |
来源 IP | "a.b.c.d" | 完全匹配 | 0.95 | 0.1 | 0.01 |
来源 IP | a.b.c.e | 完全匹配 | 0.95 | 0.1 | 0.01 |
来源 IP | a.b.c.f | 完全匹配 | 0.05 | 0.1 | 0.1 |
RegionCode |
英国 | 完全匹配 | 0.64 | 0.3 | 0.1 |
RegionCode |
IN | 完全匹配 | 0.25 | 0.2 | 0.3 |
RequestUri |
/urlpart | 子字符串 | 0.7 | 0.85 | 0.12 |
自动调节式保护提醒和相关 Cloud Logging 事件日志包含以下内容:
- 唯一提醒 ID 或
alertID
,它用于在报告用户反馈时引用特定提醒(详情请参阅下文) - 被攻击的后端服务或
backendService
- 置信度分数或
confidence
,即 0 到 1 之间的数字,表示强大的自动调节式保护系统如何将检测到的事件评定为恶意攻击
您还会收到一组特征和规则,用于描述检测到的攻击的特征。具体来说,该组特征会提供一个 headerSignatures
列表,每个特征对应一个 HTTP 标头,并包含该特定标头的 significantValues
列表。 每个显著值都是观察到的标头值或其子字符串。
下面是一个特征示例:
... headerSignatures: [ 0: { name: "Referer" significantValues: [ 0: { attackLikelihood: 0.95 matchType: "MATCH_TYPE_EQUALS" proportionInAttack: 0.6 proportionInBaseline: 0.01 value: "foo.attacker.com" } ] } ...
提醒表示标头 Referer
中的 foo.attacker.com
值对描述攻击特征很重要。更具体地说,在全部流量中,60% 的攻击流量 (proportionInAttack
) 具有此 Referer
值,只有 1% 的基准流量 (proportionInBaseline
) 具有相同的 Referer
值。此外,在与此 Referer
值匹配的所有流量中,95% 的流量为攻击流量 (attackLikelihood
)。
这些值表明,如果您要阻止 Referer
标头字段中包含 foo.attacker.com
的所有请求,则将成功阻止 60% 的攻击以及 1% 的基准流量。
属性 matchType
指定攻击流量中的特性与重要值之间的关系。它可为 MATCH_TYPE_CONTAINS
或 MATCH_TYPE_EQUALS
。
下一个签名与请求 URI 中包含子字符串 /api?
的流量相匹配:
... headerSignatures: [ 0: { name: "RequestUri" significantValues: [ 0: { attackLikelihood: 0.95 matchType: "MATCH_TYPE_CONTAINS" proportionInAttack: 0.9 proportionInBaseline: 0.01 value: "/api?" } ] } ...
部署建议的规则
自动调节式保护提醒还会提供建议的 Google Cloud Armor 规则,这些规则采用自定义规则语言表示。此规则可用于在 Google Cloud Armor 安全政策中创建规则来减少攻击。除了特征之外,提醒还包括受影响的基准流量率,帮助您评估部署规则的影响。受影响的基准流量率是指与自动调节式保护识别的攻击特征匹配的预计基准流量比例。如果您未订阅 Cloud Armor Enterprise,则 自动调节式保护发送的基本提醒不包含可应用的建议的 Google Cloud Armor 规则。
您可以在发送到 Cloud Logging 的日志消息中找到部分提醒特征以及受影响的基准率。以下示例是示例提醒的 JSON 载荷以及您可以据以过滤日志的资源标签。
... jsonPayload: { alertId: "11275630857957031521" backendService: "test-service" confidence: 0.71828485 headerSignatures: [ 0: { name: "RequestUri" significantValues: [ 0: { attackLikelihood: 0.88 matchType: "MATCH_TYPE_EQUALS" proportionInAttack: 0.85 proportionInBaseline: 0.01 value: "/" } ] } 1: { name: "RegionCode" significantValues: [ 0: { attackLikelihood: 0.08 matchType: "MATCH_TYPE_EQUALS" proportionInAttack: 0.17 proportionInBaseline: 0.28 value: "US" } 1: { attackLikelihood: 0.68 matchType: "MATCH_TYPE_EQUALS" proportionInAttack: 0.09 proportionInBaseline: 0.01 value: "DE" } 2: { attackLikelihood: 0.74 matchType: "MATCH_TYPE_EQUALS" proportionInAttack: 0.05 proportionInBaseline: 0 value: "MD" } ] } 2: { name: "UserAgent" significantValues: [ 0: { attackLikelihood: 0.92 matchType: "MATCH_TYPE_EQUALS" proportionInAttack: 0.85 proportionInBaseline: 0 value: "Unusual browser" } 1: { attackLikelihood: 0.87 proportionInAttack: 0.7 proportionInBaseline: 0.1 missing: true } ] } ] suggestedRule: [ 0: { action: "DENY" evaluation: { impactedAttackProportion: 0.95 impactedBaselineProportion: 0.001 impactedBaselinePolicyProportion: 0.001 } expression: "evaluateAdaptiveProtection('11275630857957031521')" } ] ruleStatus: RULE_GENERATED attackSize: 5000 } resource: { type: "network_security_policy", labels: { project_id: "your-project", policy_name: "your-security-policy-name" } }, } } ...
如需部署建议的规则,您可以从规则特征中复制 CEL 表达式,然后将该表达式粘贴到新创建的规则的匹配条件中,或点击 Google Cloud Armor 界面中自动调节式保护信息中心上的应用按钮。
如需部署规则,您需要在保护由提醒识别的目标后端服务的 Google Cloud Armor 安全政策中创建一条新规则。接下来,在规则配置期间,将提醒中的 CEL 表达式复制并粘贴到规则的匹配条件字段中,并将规则操作设置为 deny
。在上面的示例中,您从提醒的 suggestedRule
部分复制了表达式 evaluateAdaptiveProtection('11275630857957031521')
。
我们强烈建议您先在预览模式下部署规则,以便评估规则对生产流量的影响。执行此操作后,每当规则被触发时,Google Cloud Armor 都会记录操作和关联的流量,但不会对匹配的流量执行任何操作。
此外,如果您的安全政策关联到多个后端服务,请注意新规则的效果是否会对任何后端服务产生不良影响。如果产生不良影响,请配置新的安全政策以缓解不良影响,并将该政策关联到正确的后端服务。
我们建议您将新规则的优先级设置为高于操作设置为“允许”的规则。这是因为,为了产生预计的影响并最大限度地减少攻击,该规则应部署在最高逻辑优先级位置,以确保所有匹配的流量都被该规则阻止。Google Cloud Armor 安全政策中的规则按优先级顺序进行评估,并且会在触发第一个匹配规则并且执行关联的规则操作后终止评估。如果您需要为此规则授予某些流量或特定客户端的异常,则可以创建优先级更高的规则(即优先级值较低的规则)。如需详细了解规则优先级,请参阅规则评估顺序。
自动部署建议的规则
您还可以将自动调节式保护配置为自动部署建议的规则。如需启用自动规则部署,您需要在匹配条件中使用表达式 evaluateAdaptiveProtectionAutoDeploy()
创建具有您选择的优先级和操作的占位符规则。对于自动调节式保护识别为攻击流量的请求,此规则的求值结果为 true
,Google Cloud Armor 将对攻击请求应用操作。 支持所有 Google Cloud Armor 操作类型,例如 allow
、deny
、throttle
和 redirect
。此外,您还可以使用预览模式来记录规则是否已触发,而无需执行配置的操作。
如果您在外部应用负载平衡器前端使用上游代理(例如第三方 CDN),我们建议您将 userIpRequestHeaders
字段配置为将提供商的 IP 地址(或 IP 地址范围)添加到许可名单。这样可以防止自动调节式保护错误地将代理的来源 IP 地址错误识别为参与攻击。相反,它会在流量到达代理之前查看流量的来源 IP 地址。
如需详细了解如何配置自动规则部署,请参阅自动部署自动调节式保护建议的规则。
规则状态
如果您尝试部署建议的规则时未显示任何规则,则可以使用 ruleStatus
字段来确定原因。
] ruleStatus: RULE_GENERATED attackSize: 5000 }
下表介绍了该字段的可能值及其含义。
规则状态 | 说明 |
---|---|
RULE_GENERATED | 已正常生成可用规则。 |
BASELINE_TOO_RECENT | 没有足够的时间累积可靠的基准流量。生成规则需要长达一个小时。 |
NO_SIGNIFICANT_VALUE_DETECTED | 任何标头都没有与攻击流量关联的重要值,因此无法生成任何规则。 |
NO_USABLE_RULE_FOUND | 无法创建可用规则。 |
错误 | 创建规则时发生未知错误。 |
监控、反馈和报告事件错误
您需要具备以下权限才能查看自动调节式保护信息中心或与之交互。
compute.securityPolicies.list
compute.backendServices.list
logging.logEntries.list
对任何 Google Cloud Armor 安全政策启用自适应保护后,您可以在网络安全 > Google Cloud Armor 面板下查看以下页面。它会显示所选安全政策和后端服务以及一段时间内的流量。图表上注释了由 Adaptive Protection 提醒的任何潜在攻击实例,并列在图表下方。当您点击特定攻击事件时,系统将显示一个侧边窗口,其中包含以表格格式显示的攻击签名和建议规则。这些信息与 Cloud Logging 条目规范中所述的 Cloud Logging 日志条目中的信息相同。点击应用按钮,将建议的规则添加到同一安全政策。
考虑到受保护后端服务的唯一上下文和环境因素,并非每个自动调节式保护发现结果都被视为攻击。如果您确定提醒所描述的潜在攻击是正常或可接受的行为,则可以报告事件错误,以帮助训练自动调节式保护模型。图表下方列出的每个攻击事件的旁边是一个按钮,可弹出一个交互式窗口,以允许您使用一些可选上下文报告事件错误。报告事件错误有助于降低将来出现类似错误的可能性。随着时间的推移,报告事件错误会提高自动调节式保护的准确度。
监控、提醒和日志记录
自动调节式保护遥测数据会发送到 Cloud Logging 和 Security Command Center。本文档前面的部分介绍了发送到 Cloud Logging 的自动调节式保护日志消息。每当自动调节式保护检测到潜在攻击时,系统都会生成日志条目,并且每个条目都包含置信度分数,用于描述模型对于实测流量为异常的置信度。如需微调提醒,您可以在 Cloud Logging 中将提醒政策配置为只有在自动调节式保护日志消息具有的置信度分数高于用户指定的阈值时才触发提醒。我们建议您开始设置置信度大于 0.5 的低阈值,以避免缺少潜在攻击警告。如果提醒具有不可接受的受影响基准率,则随着时间的推移提醒政策中的置信度阈值可能会增加。
Security Command Center 信息中心还包含来自自动调节式保护的发现结果。这些发现结果位于应用 DDoS 攻击类别下的 Google Cloud Armor 卡片中。每个发现结果都包含服务的详细信息、攻击置信度、与攻击关联的特征,以及指向自动调节式保护信息中心上的特定提醒的链接。以下屏幕截图显示了应用 DDoS 攻击尝试检测结果示例:
Cloud Logging 条目规范
发送到 Cloud Logging 的自动调节式保护提醒由包含以下元素的日志条目组成:
- 提醒置信度:自动调节式保护对于实测事件是一种攻击的置信度。
- 自动部署:布尔值,表示是否触发了自动防御。
- 攻击特征
- 特性名称:与下面的
Value
匹配的特性的名称,例如特定的请求标头名称或地理位置来源。 - 值:恶意流量中的特性所匹配的值。
- 匹配类型:
Value
与攻击流量中的特性的关系。该值等于攻击流量中的特性或其子字符串。 - 攻击可能性:给定请求是恶意请求的可能性,假设此请求的相关特性匹配
Value
。 - 攻击的比例:与
Value
匹配的潜在攻击流量所占的百分比。 - 基准比例:与
Value
匹配的正常基准流量所占的百分比。
- 特性名称:与下面的
- 建议的规则
- 匹配条件:规则匹配条件中用于识别恶意流量的表达式。
- 受影响的基准率:建议规则捕获的正被攻击的特定后端服务的预计流量百分比。
- 各政策影响的基准率:建议安全政策所捕获的同一安全政策中所有后端服务的预计良好流量百分比。
- 受影响的攻击率:由建议规则捕获的预计攻击流量百分比。
- 规则状态:有关规则生成的其他详细信息。
机器学习概览和隐私权
- 训练数据和检测数据
- 自动调节式保护可构建多个模型来检测潜在攻击并识别其特征。这些模型确定攻击是否正在发生所使用的信号是由来自项目的传入请求流量的实测元数据派生的。此类元数据包括来源 IP 地址、来源地理位置以及一些 HTTP 请求标头的值。
- 模型使用的实际特性是上述信号派生的统计属性。也就是说,模型的训练数据不包含任何元数据的实际值,例如 IP 地址和/或请求标头值。
- 所有客户共享一组通用检测模型(仅使用人工数据训练),以确定第一次启用自动调节式保护时是否发生攻击。如果您报告了任何假攻击事件,并且模型使用项目特定的流量信号进行更新,则这些模型位于项目本地,不会用于任何其他客户。
- 特征生成数据
- 在自动调节式保护确定发生潜在攻击后,会生成一个有效的攻击特征,有助于目标快速缓解攻击。为了实现上述目标,在您针对安全政策启用自动调节式保护后,系统会持续记录后端服务(与安全政策相关联)的流量指标和请求元数据,以获知基准流量特征。
- 由于自动调节式保护需要了解基准流量,因此自动调节式保护可能需要长达一小时的时间才会生成规则来缓解潜在攻击。