流日志限制
要使用流日志,您需要了解以下限制:
-
创建流日志后,在您选择的网络接口、子网或 VPC 中有活跃流量之前,将无法看到流日志数据。
-
您不能为与您的 VPC 对等的 VPC 启用流日志,除非该对等 VPC 在您的账户中。
-
创建流日志后,将无法更改其配置或者流日志记录格式。例如,您无法将不同的 IAM 角色与流日志关联,或者在流日志记录中添加或删除字段。不过,您可以删除流日志并使用必需的配置创建新的流日志。
-
如果网络接口有多个 IPv4 地址,并且流量发送到辅助私有 IPv4 地址,则流日志会在
dstaddr字段中显示主要私有 IPv4 地址。要捕获原始目标 IP 地址,请使用pkt-dstaddr字段创建流日志。 -
如果流量发送到某个网络接口而目标不是网络接口 IP 地址中的任何一个,则流日志会在
dstaddr字段中显示主要私有 IPv4 地址。要捕获原始目标 IP 地址,请使用pkt-dstaddr字段创建流日志。 -
如果流量是从某个网络接口发送的,并且源不是任何网络接口的 IP 地址,则当日志记录用于传出流时,流日志会在
srcaddr字段中显示主要私有 IPv4 地址。要捕获原始源 IP 地址,请使用pkt-srcaddr字段创建流日志。如果日志记录用于进入网络接口的入口流,则网络接口的主要私有 IP 将不会显示在srcaddr字段中。 -
当您的网络接口附加到基于 Nitro 的实例时,无论指定的最大聚合时间间隔为多少,聚合时间间隔始终不超过 1 分钟。
-
对于
pkt-srcaddr和pkt-dstaddr字段,如果中间层启用了客户端 IP 地址保留,则此字段可能会显示保留的客户端 IP,而不是中间层的 IP 地址。 -
对于
traffic-path字段,流经同一 VPC 中资源的流和流经 Outpost 本地网关的流的值相同。 在聚合时间间隔内可能会跳过一些流日志记录(请参阅可用字段中的 log-status)。这可能是因为存在内部 Amazon 容量限制或内部错误。如果使用 Amazon Cost Explorer 查看 VPC 流日志费用,并且在流日志聚合时间间隔内跳过了一些流日志,则 Amazon Cost Explorer 中报告的流日志数量会高于 Amazon VPC 发布的流日志数量。
-
如果您使用 VPC 屏蔽公共访问权限(BPA):
-
VPC 流日志支持为每个账户的每个资源创建最多 250 个订阅。如果某个资源的订阅数量已经达到此上限,则需要先删除现有订阅才能为此资源添加其他订阅。
流日志不会捕获所有 IP 流量。以下类型的流量不予以记录:
-
实例与 Amazon DNS 服务器联系时生成的流量。如果您使用自己的 DNS 服务器,则将记录到该 DNS 服务器的所有流量。
-
Windows 实例为 Amazon Windows 许可证激活而生成的流量。
-
实例元数据传入和传出
169.254.169.254的流量。 -
Amazon Time Sync Service 的传入和传出
169.254.169.123的流量。 -
DHCP 流量。
-
镜像源流量的流量。您只会看到镜像目标流量的流量。
-
到默认 VPC 路由器的预留 IP 地址的流量。
-
端点网络接口和网络负载均衡器网络接口之间的流量。
-
地址解析协议(ARP)流量。
-
短暂性区域 NAT 网关(在创建后几分钟就会被删除)上的流量。
特定于版本 7 中可用的 ECS 字段的限制:
如果底层 ECS 任务不属于流日志订阅的所有者,则不计算 ECS 字段。例如,如果您与其他账户(
AccountB)共享子网(SubnetA),然后为SubnetA创建流日志订阅,则如果AccountB在共享子网中启动 ECS 任务,则您的订阅将收到来自AccountB启动的 ECS 任务的流量日志,但出于安全考虑,将不会计算这些日志的 ECS 字段。如果在 VPC/子网资源级别创建带有 ECS 字段的流日志订阅,则也会为您的订阅传输为非 ECS 网络接口生成的所有流量。对于非 ECS IP 流量,ECS 字段的值将为“-”。例如,您有一个子网(
subnet-000000),并且为该子网创建了带有 ECS 字段(fl-00000000)的流日志订阅。在subnet-000000中,您可以启动一个连接到互联网并正在积极生成 IP 流量的 EC2 实例(i-0000000)。您还可以在同一子网中启动正在运行的 ECS 任务(ECS-Task-1)。由于i-0000000和ECS-Task-1都在生成 IP 流量,因此您的流日志订阅fl-00000000将为两个实体提供流量日志。但是,仅ECS-Task-1会有您在 logFormat 中包含的 ECS 字段的实际 ECS 元数据。对于i-0000000相关流量,这些字段的值将为“-”。ecs-container-id和ecs-second-container-id在 VPC 流日志服务从 ECS 事件流接收它们时进行排序。不能保证它们的顺序与您在 ECS 控制台或 DescribeTask API 调用中看到的顺序相同。如果容器在任务仍在运行时进入“已停止”状态,则它可能会继续出现在您的日志中。ECS 元数据和 IP 流量日志来自两个不同来源。当我们从上游依赖项中获得所有所需信息后,我们立即开始计算您的 ECS 流量。在您启动新任务后,我们将开始计算您的 ECS 字段:1) 当我们收到底层网络接口的 IP 流量时;2) 当我们收到包含您的 ECS 任务元数据的 ECS 事件以表明该任务正在运行时。在您停止任务后,我们会停止计算您的 ECS 字段:1) 当我们不再收到底层网络接口的 IP 流量或收到延迟超过一天的 IP 流量时;2) 当我们收到包含您的 ECS 任务元数据的 ECS 事件以表明您的任务不再运行时。
仅支持在
awsvpc网络模式下启动的 ECS 任务。
特定于 encryption-status 字段的限制:
-
由于某些网络设备对加密状态报告实施了限制,某些流中的加密状态可能为“-”(不可用)。用户在分析中可以忽略这些流量。
-
在监控模式下显示为加密并不代表在强制模式下允许该流量。反之亦然。
-
如果流量在监控模式下加密,可能在强制模式下不合规:
-
如果该流量涉及由某个 Amazon 服务创建的 ENI,则该服务需要支持加密控制。
-
如果该流量通过 VPC 对等连接传输,则对等 VPC 可能不会强制执行加密控制。
-
-
如果流量在监控模式下未加密,则在将与该流量相关的服务添加为排除项的前提下,该流量在强制模式下仍可能合规。
-
特定于版本 11 中提供的流日志 Amazon EC2 标签字段的限制:
如果资源中的标签不属于流日志订阅的所有者,则不计算标签字段。例如,如果您与其他账户(
AccountB)共享子网(SubnetA),然后在网络接口上使用标签字段为SubnetA创建流日志订阅,则如果AccountB使用您配置的密钥启动带标签的网络接口,则您的订阅将收到由AccountB启动的网络接口的流日志,但由于安全考虑,将不计算订阅中配置的标签字段。如果需要,您可以选择标记AccountB启动的网络接口以显示标签。如果在 VPC/子网资源级别创建带有标签字段的流日志订阅,则也会为您的订阅传输为非标记网络接口生成的所有流量。对于非标记资源,标签字段的值将为“-”。
如果名为“-”,自动扩缩组将无法显示任何标签,因为这是一个保留字符,用于表示缺少/没有值。
创建任何带有标签字段的流日志订阅都将导致代表客户创建一些资源。为了使用标签值的更新,将创建 EventBridge 托管式规则,将标签更改发送到流日志服务。如果删除所有带有标签字段的订阅,则这些 EventBridge 托管式规则将被自动清理。请勿手动删除这些 EventBridge 托管式规则。这样做将导致更新标签值的延迟很长。为了控制这种创建/清理操作并提供对标签值的访问权限,将在您的账户中创建一个服务相关角色。有关更多信息,请参阅使用 VPC 流日志的服务相关角色。
由于 Amazon CloudWatch Logs 解析和 Athena 解析限制,标签值中的所有特殊字符都将使用 UTF-8 百分比编码进行编码。这可以在 Athena 中使用
url_decode原生解码,也可以由任何 URL 或 URI 解码器进行解码。在创建新订阅后的第一个小时内,标签值可能缺失或不准确。在第一个小时之后,标签值将能够以 1 分钟的粒度准确反映已标记资源的值。
如果在同一秒钟内对同一个资源进行了多个标签更改,则更新可能会丢失,从而导致标签值过时长达一小时。
对于自动扩缩组标签字段,您的账户中必须至少有一个已启用的 CloudTrail 跟踪。如果未启用跟踪,自动扩缩组标签值可能会过时或不准确。
特定于 next-hop- 字段的限制:
如果下一跃点网络接口不属于流日志订阅的所有者,则不计算下一跃点字段,
next-hop-az-id除外。如果下一跃点没有网络接口(例如,到互联网网关的流量),则下一跃点字段不可用。
下一跃点字段不适用于跨区域流量。
下一跃点字段不适用于来自某些网络服务(例如,中转网关和网络负载均衡器)的入口流量。
如果流量通过中间盒(例如,中转网关、网络负载均衡器),则下一跃点网络接口是与中间盒(例如,中转网关连接)关联的网络接口,而不是流量的最终目的地