AWS WAF 政策 - AWS WAFAWS Firewall Manager、和 AWS Shield Advanced

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

AWS WAF 政策

在 Firew AWS WAF all Manager 策略中,您可以指定要在资源中使用的 AWS WAF 规则组。应用策略时,Firewall Manager 会根据您在策略ACLs中配置 Web 管理的方式,在策略范围内的帐户ACLs中创建 Web。在该策略ACLs创建的网页中,除了您通过 Firewall Manager 定义的规则组外,个人账户管理员还可以添加规则和规则组。

Firewall Manager 如何管理网页 ACLs

Firewall Manager 会ACLs根据您在策略中配置 “管理未关联的网页” ACLs 设置或中SecurityServicePolicyData数据类型的optimizeUnassociatedWebACL设置来创建 Web。API

如果您启用了对未关联网站的管理ACLs,则只有当网络将由至少一个资源使用时,Firewall Manager 才ACLs会在策略范围内的帐户ACLs中创建网页。如果某个账户在任何时候进入策略范围,如果至少有一个资源将使用该网站,Firewall Manager 会自动在该账户ACL中创建一个网页ACL。启用对未关联网站的管理后ACLs,Firewall Manager 会对您账户ACLs中未关联的网页执行一次性清理。在清理过程中,Firewall Manager 会跳过您在创建后修改过的所有网ACLs页,例如,如果您向网页添加了规则组ACL或修改了其设置。清理过程可能需要数小时时间。如果资源在 Firewall Manager 创建网站后离开策略范围ACL,Firewall Manager 将取消该资源与 Web 的关联ACL,但不会清理未关联的 Web。ACLFirewall Manager 只有在策略ACLs中首次启用对未关联网页的管理ACLs时才会清理未关联的网页。

如果您不启用此选项,Firewall Manager 将不管理未关联的网站ACLs,并且防火墙管理器会自动ACL在策略范围内的每个帐户中创建一个网页。

采样和 CloudWatch 指标

AWS Firewall Manager 为其为 AWS WAF 策略创建的 Web ACLs 和规则组启用采样和 Amazon CloudWatch 指标。

网络ACL命名结构

当 Firewall Manager ACL 为策略创建网站时,它会为该网络命名ACLFMManagedWebACLV2-policy name-timestamp。时间戳以UTC毫秒为单位。例如,FMManagedWebACLV2-MyWAFPolicyName-1621880374078

注意

如果配置了高级自动应用层DDoS缓解功能的资源属于 AWS WAF 策略的范围,Firewall Manager 将无法将该 AWS WAF 策略ACL创建的 Web 与该资源相关联。

AWS WAF 策略中的规则组

由 F ACLs irewall Manager AWS WAF 策略管理的网络包含三组规则。这些集合为网络ACL中的规则和规则组提供了更高的优先级:

  • 第一个规则组,由您在 Firewall Manager AWS WAF 策略中定义。 AWS WAF 首先评估这些规则组。

  • 由网络上的客户经理定义的规则和规则组ACLs。 AWS WAF 接下来评估所有账户管理的规则或规则组。

  • 最后一个规则组,由您在 Firewall Manager AWS WAF 策略中定义。 AWS WAF 最后评估这些规则组。

在每组规则中,根据规则集中的优先级设置,照常 AWS WAF 评估规则和规则组。

在策略的“最先运行的规则组”集和“最后运行的规则组”集中,您只能添加规则组。您可以使用托管规则组,由 AWS 托管规则和 AWS Marketplace 卖家为您创建和维护。您也可以管理和使用自己的规则组。有关所有这些操作的更多信息,请参阅AWS WAF 规则组

如果要使用自己的规则组,请在创建 Firewall Manager AWS WAF 策略之前创建这些规则组。有关操作指南,请参阅 管理您自己的规则组。要使用单个自定义规则,您必须定义自己的规则组,再在其中定义您的规则,然后在策略中使用该规则组。

您通过 Firewall Manager 管理的第一个和最后一个 AWS WAF 规则组的名称分别以PREFMManaged-POSTFMManaged-开头,后跟防火墙管理器策略名称和规则组创建时间戳(以UTC毫秒为单位)。例如,PREFMManaged-MyWAFPolicyName-1621880555123

有关如何 AWS WAF 评估 Web 请求的信息,请参阅Web ACL 规则和规则组评估

有关创建 Firewall Manager AWS WAF 策略的过程,请参阅为创建 AWS Firewall Manager 策略 AWS WAF

Firewall Manager 为您为 AWS WAF 策略定义的规则组启用采样和 Amazon CloudWatch 指标。

个人账户所有者可以完全控制他们添加到策略托管网站的任何规则或规则组的指标和采样配置ACLs。

为 AWS WAF 策略配置日志记录

您可以为 AWS WAF 策略启用集中日志记录,以获取有关组织ACL内网络分析的流量的详细信息。日志中的信息包括从您的 AWS 资源 AWS WAF 收到请求的时间、有关该请求的详细信息以及每个请求与所有范围内账户匹配的规则的操作。您可以将日志发送到 Amazon Data Firehose 数据流或亚马逊简单存储服务 (S3) 存储桶。有关 AWS WAF 日志记录的信息,请参阅《AWS WAF 开发人员指南》记录 AWS WAF Web ACL 流量中的。

注意

AWS Firewall Manager 支持此选项 AWS WAFV2,但不适用于 AWS WAF 经典版。

日志记录目标

本节介绍您可以选择发送 AWS WAF 策略日志的日志目的地。每个部分都提供了有关配置目标类型日志记录的指导,以及有关特定于目标类型的任何行为的信息。配置日志目标后,您可以向 Firewall Manager AWS WAF 策略提供其规格以开始登录该目标。

创建日志记录配置后,Firewall Manager 无法查看日志故障。您应负责验证日志传输是否按预期运行。

注意

Firewall Manager 不会修改您组织的成员账户中的任何现有日志记录配置。

Amazon Data Firehose 数据流

本主题提供有关将您的网络ACL流量日志发送到 Amazon Data Firehose 数据流的信息。

当您启用 Amazon Data Firehose 日志记录时,Firewall Manager 会将日志从您的策略网站发送ACLs到您已配置存储目标的亚马逊数据 Firehose。启用日志记录后,通过 Kinesis Data Fire ACL hose 的HTTPS端点将每个已配置网络的日志 AWS WAF 传送到配置的存储目标。在使用之前,请测试您的传输流,确保其吞吐量足以容纳组织的日志。有关如何创建 Amazon Kinesis Data Firehose 并查看存储的日志的更多信息,请参阅什么是亚马逊数据 Firehose?

您必须拥有以下权限才能使用 Kinesis 成功启用日志记录:

  • iam:CreateServiceLinkedRole

  • firehose:ListDeliveryStreams

  • wafv2:PutLoggingConfiguration

当您在 AWS WAF 策略上配置 Amazon Data Firehose 日志记录目标时,防火墙管理器会在防火墙管理器管理员账户中ACL为该策略创建一个网站,如下所示:

  • Firewall Manager 都会ACL在 Firewall Manager 管理员帐户中创建网页,无论该帐户是否在策略的范围内。

  • Web 启用ACL了日志功能,并使用日志名称FMManagedWebACLV2-Loggingpolicy name-timestamp,其中时间戳是为 Web 启用日志的UTC时间ACL,以毫秒为单位。例如,FMManagedWebACLV2-LoggingMyWAFPolicyName-1621880565180。Web ACL 没有规则组,也没有关联的资源。

  • 您需要ACL根据 AWS WAF 定价指南向您收取网络费用。有关更多信息,请参阅AWS WAF 定价

  • 当您删除策略ACL时,Firewall Manager 会删除网页。

有关服务相关角色以及 iam:CreateServiceLinkedRole 权限的信息,请参阅将服务相关角色用于 AWS WAF

有关创建传输流的更多信息,请参阅创建 Amazon Data Firehose 传送流。

Amazon Simple Storage Service 存储桶

本主题提供有关将您的网络ACL流量日志发送到 Amazon S3 存储桶的信息。

选择作为日志记录目标的存储桶必须由 Firewall Manager 管理员账户所有。有关创建用于日志记录的 Amazon S3 存储桶的要求和存储桶命名要求的信息,请参阅AWS WAF 开发人员指南中的 Amazon 简单存储服务

最终一致性

当您对配置有 Amazon S3 日志目标的 AWS WAF 策略进行更改时,Firewall Manager 会更新存储桶策略以添加记录所需的权限。在这样做时,Firewall Manager 会遵循亚马逊简单存储服务所遵循的 last-writer-wins 语义和数据一致性模型。如果您同时在 Firewall Manager 控制台中或通过对 Amazon S3 目标进行多个策略更新 PutPolicyAPI,则可能无法保存某些权限。有关 Amazon S3 数据一致性模型的更多信息,请参阅 Amazon Simple Storage Service 用户指南中的 Amazon S3 数据一致性模型

向 Amazon S3 存储桶发布日志的权限

在 AWS WAF 策略中为 Amazon S3 存储桶配置网络ACL流量日志需要以下权限设置。当您将 Amazon S3 配置为日志记录目标以授予服务向存储桶发布日志的权限时,Firewall Manager 会自动将这些权限附加到您的 Amazon S3 存储桶。如果您希望更精细地管理对日志和 Firewall Manager 资源的访问权限,您可以自己设置这些权限。有关管理权限的信息,请参阅《IAM用户指南》中的AWS 资源访问管理。有关 AWS WAF 托管策略的信息,请参阅AWS 的托管策略 AWS WAF

{ "Version": "2012-10-17", "Id": "AWSLogDeliveryForFirewallManager", "Statement": [ { "Sid": "AWSLogDeliveryAclCheckFMS", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::aws-waf-amzn-s3-demo-bucket" }, { "Sid": "AWSLogDeliveryWriteFMS", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::aws-waf-logs-amzn-s3-demo-bucket/policy-id/AWSLogs/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } } } ] }

为防止跨服务混淆代理问题,您可以将 aws:SourceArnaws:SourceAccount 全局条件上下文密钥添加到存储桶的策略中。要添加这些密钥,您可以修改 Firewall Manager 在配置日志记录目标时为您创建的策略,或者如果您想要精细控制,则可以创建自己的策略。如果您将这些条件添加到日志记录目标策略中,Firewall Manager 将无法验证或监控混淆代理保护。有关混淆的副手问题的一般信息,请参阅 “混淆的副手问题” 在《IAM用户指南》中。

当您添加 sourceAccount 添加 sourceArn 属性时,将增加存储桶策略的大小。如果要添加一长串 sourceAccount 添加 sourceArn 属性,请注意不要超过 Amazon S3 存储桶策略大小限额。

以下示例说明了如何通过在存储桶策略中使用 aws:SourceArnaws:SourceAccount 全局条件上下文键来防止混淆代理问题。Replace(替换) member-account-id 使用您IDs组织中成员的帐户。

{ "Version":"2012-10-17", "Id":"AWSLogDeliveryForFirewallManager", "Statement":[ { "Sid":"AWSLogDeliveryAclCheckFMS", "Effect":"Allow", "Principal":{ "Service":"delivery.logs.amazonaws.com" }, "Action":"s3:GetBucketAcl", "Resource":"arn:aws:s3:::aws-waf-logs-amzn-s3-demo-bucket", "Condition":{ "StringEquals":{ "aws:SourceAccount":[ "member-account-id", "member-account-id" ] }, "ArnLike":{ "aws:SourceArn":[ "arn:aws:logs:*:member-account-id:*", "arn:aws:logs:*:member-account-id:*" ] } } }, { "Sid":"AWSLogDeliveryWriteFMS", "Effect":"Allow", "Principal":{ "Service":"delivery.logs.amazonaws.com" }, "Action":"s3:PutObject", "Resource":"arn:aws:s3:::aws-waf-logs-amzn-s3-demo-bucket/policy-id/AWSLogs/*", "Condition":{ "StringEquals":{ "s3:x-amz-acl":"bucket-owner-full-control", "aws:SourceAccount":[ "member-account-id", "member-account-id" ] }, "ArnLike":{ "aws:SourceArn":[ "arn:aws:logs:*:member-account-id-1:*", "arn:aws:logs:*:member-account-id-2:*" ] } } } ] }
Amazon S3 存储桶服务器端加密

您可以启用 Amazon S3 服务器端加密,也可以在 S3 存储桶上使用 AWS Key Management Service 客户托管密钥。如果您选择在 Amazon S3 存储桶上对 AWS WAF 日志使用默认 Amazon S3 加密,则无需采取任何特殊操作。但是,如果您选择使用客户提供的加密密钥对静态的 Amazon S3 数据进行加密,则必须在 AWS Key Management Service 密钥策略中添加以下权限声明:

{ "Sid": "Allow Logs Delivery to use the key", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }

有关在 Amazon S3 中使用客户提供的加密密钥的信息,请参阅《亚马逊简单存储服务用户指南》中的对客户提供的密钥使用服务器端加密 (SSE-C)。

启用日志记录

以下过程介绍如何在 Firewall Manager 控制台中为 AWS WAF 策略启用日志记录。

为 AWS WAF 策略启用日志记录
  1. 在启用日志记录之前,必须按以下方式配置日志记录目标资源:

    • Amazon Kinesis Data Streams — 使用你的防火墙管理器管理员账户创建亚马逊数据 Firehose。使用以前缀 aws-waf-logs- 开头的名称。例如,aws-waf-logs-firewall-manager-central。使用 PUT 源,在您执行操作的区域中创建 Data Firehose。如果您要为 Amazon 捕获日志 CloudFront,请在美国东部(弗吉尼亚北部)创建消防水带。在使用之前,请测试您的传输流,确保其吞吐量足以容纳组织的日志。有关更多信息,请参阅创建 Amazon Data Firehose 传输流

    • Amazon 简单存储服务存储桶 – 根据AWS WAF 开发人员指南Amazon 简单存储服务主题中的指南创建 Amazon S3 存储桶。您还必须使用 向 Amazon S3 存储桶发布日志的权限 中列出的权限配置 Amazon S3 存储桶。

  2. AWS Management Console 使用您的 Firewall Manager 管理员帐户登录,然后打开防火墙管理器控制台,网址为https://console.aws.amazon.com/wafv2/fmsv2。有关设置 Firewall Manager 管理员账户的信息,请参阅AWS Firewall Manager 先决条件

    注意

    有关设置 Firewall Manager 管理员账户的信息,请参阅AWS Firewall Manager 先决条件

  3. 在导航窗格中,选择安全策略

  4. 选择要为其启用日志记录的 AWS WAF 策略。有关 AWS WAF 日志记录的更多信息,请参阅 记录 AWS WAF Web ACL 流量

  5. 策略详细信息选项卡的策略规则部分,选择编辑

  6. 对于日志记录配置,选择启用日志记录以打开日志记录。日志记录提供有关您的网络分析的流量的详细信息ACL。选择日志记录目标,然后选择您配置的日志记录目标。必须选择名称以 aws-waf-logs- 开头的日志记录目标。有关配置 AWS WAF 日志目标的信息,请参阅为 AWS WAF 策略配置日志记录

  7. (可选)如果您不希望在日志中包含特定字段及其值,请编辑这些字段。选择要编辑的字段,然后选择 添加。根据需要重复操作来编辑其他字段。编辑后的字段在日志中显示为 REDACTED。例如,如果您编辑该URI字段,则日志中的URI字段将是。REDACTED

  8. (可选)如果您不想向日志发送所有请求,请添加您的筛选条件和行为。在筛选日志下,对于要应用的每个筛选器,选择添加筛选条件,然后选择您的筛选条件并指定是要保留还是删除符合条件的请求。添加完筛选条件后,如果需要,可以修改默认日志记录行为。有关更多信息,请参阅 AWS WAF 开发人员指南中的 Web ACL 日志记录配置

  9. 选择下一步

  10. 查看您的设置,然后选择保存以保存对策略的更改。

禁用日志记录

以下过程介绍如何在 Firewall Manager 控制台中禁用 AWS WAF 策略的日志记录。

禁用 AWS WAF 策略的日志记录
  1. AWS Management Console 使用您的 Firewall Manager 管理员帐户登录,然后打开防火墙管理器控制台,网址为https://console.aws.amazon.com/wafv2/fmsv2。有关设置 Firewall Manager 管理员账户的信息,请参阅AWS Firewall Manager 先决条件

    注意

    有关设置 Firewall Manager 管理员账户的信息,请参阅AWS Firewall Manager 先决条件

  2. 在导航窗格中,选择安全策略

  3. 选择要禁用日志记录的 AWS WAF 策略。

  4. 策略详细信息选项卡的策略规则部分,选择编辑

  5. 对于日志配置状态,请选择禁用

  6. 选择下一步

  7. 查看您的设置,然后选择保存以保存对策略的更改。