本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
日志记录目标
本节介绍您可以选择发送 AWS WAF 策略日志的日志目的地。每个部分都提供了有关配置目标类型日志记录的指导,以及有关特定于目标类型的任何行为的信息。配置日志目标后,您可以向 Firewall Manager AWS WAF 策略提供其规格以开始登录该目标。
您可以为 AWS WAF 策略启用集中日志记录,以获取有关组织ACL内网络分析的流量的详细信息。日志中的信息包括从您的 AWS 资源 AWS WAF 收到请求的时间、有关该请求的详细信息以及每个请求与所有范围内账户匹配的规则的操作。您可以将日志发送到 Amazon Data Firehose 数据流或亚马逊简单存储服务 (S3) 存储桶。有关 AWS WAF 日志记录的更多信息,请参阅 AWS WAF 开发人员指南中的 日志记录 AWS WAF 网络ACL流量。
注意
AWS Firewall Manager 支持此选项 AWS WAFV2,不适用于 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-Logging
,其中时间戳是为 Web 启用日志的UTC时间ACL,以毫秒为单位。例如,policy name
-timestamp
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:SourceArn
和 aws:SourceAccount
全局条件上下文密钥添加到存储桶的策略中。要添加这些密钥,您可以修改 Firewall Manager 在配置日志记录目标时为您创建的策略,或者如果您想要精细控制,则可以创建自己的策略。如果您将这些条件添加到日志记录目标策略中,Firewall Manager 将无法验证或监控混淆代理保护。有关混淆的副手问题的一般信息,请参阅混乱的副手问题 在《IAM用户指南》中。
当您添加 sourceAccount
添加 sourceArn
属性时,将增加存储桶策略的大小。如果要添加一长串 sourceAccount
添加 sourceArn
属性,请注意不要超过 Amazon S3 存储桶策略大小限额。
以下示例说明了如何通过在存储桶策略中使用 aws:SourceArn
和 aws: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)。