Amazon Virtual Private Cloud
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

将流日志发布到 CloudWatch Logs

流日志可以将流日志数据直接发布到 Amazon CloudWatch。

在发布到 CloudWatch Logs 时,流日志数据将发布到日志组,并且每个网络接口在该日志组中有唯一的日志流。日志流包含流日志记录。您可以创建将数据发布到相同日志组的多个流日志。如果相同日志组中的一个或多个流日志存在相同网络接口,其中就会有一个组合日志流。如果您指定了一个流日志应该捕获已拒绝流量,而另一个流日志应该捕获已接受流量,则组合日志流会捕获所有流量。有关更多信息,请参阅流日志记录

用于将流日志发布到 CloudWatch Logs 的 IAM 角色

与您的流日志关联的 IAM 角色必须具有足够的权限,以便将流日志发布到 CloudWatch Logs 中的指定日志组。附加到您的 IAM 角色的 IAM 策略必须至少包括以下权限:

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogGroups", "logs:DescribeLogStreams" ], "Effect": "Allow", "Resource": "*" } ] }

另请确保您的角色具有信任关系,以允许流日志服务代入该角色:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "vpc-flow-logs.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

用户还必须有权对与流日志关联的 IAM 角色使用 iam:PassRole 操作:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["iam:PassRole"], "Resource": "arn:aws:iam::account-id:role/flow-log-role-name" } ] }

您可以更新现有角色,或使用以下过程创建用于流日志的新角色。

创建流日志角色

为流日志创建 IAM 角色

  1. 通过以下网址打开 IAM 控制台:https://console.amazonaws.cn/iam/

  2. 在导航窗格中,选择 RolesCreate role

  3. 选择 EC2 作为服务以使用此角色。对于 Use case (使用案例),选择 EC2。选择 Next: Permissions (下一步: 权限)

  4. Attach permissions policies (附加权限策略) 页上,选择 Next: Tags (下一步: 标签),还可以选择性地添加标签。选择 Next: Review (下一步: 审核)

  5. 输入您的角色的名称(例如 Flow-Logs-Role),并且可以选择提供描述。选择创建角色

  6. 选择角色的名称。对于 Permissions (权限),依次选择 Add inline policy (添加内联策略)JSON

  7. 用于将流日志发布到 CloudWatch Logs 的 IAM 角色 中复制第一个策略,并将其粘贴到窗口中。选择查看策略

  8. 为您的策略输入名称,然后选择 Create policy (创建策略)

  9. 选择角色的名称。对于 Trust relationships (信任关系),选择 Edit trust relationship (编辑信任关系)。在现有策略文档中,将服务从 ec2.amazonaws.com 更改为 vpc-flow-logs.amazonaws.com。选择 Update Trust Policy

  10. Summary 页面上,记录您的角色的 ARN。创建流日志时需要此 ARN。

创建发布到 CloudWatch Logs 的流日志

您可以为 VPC、子网或网络接口创建流日志。

创建网络接口的流日志

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在导航窗格中,选择 Network Interfaces

  3. 选择一个或多个网络接口,然后选择操作创建流日志

  4. 对于 Filter (筛选条件),指定要记录的 IP 流量数据的类型。选择 All (全部) 将记录接受和拒绝的流量,选择 Rejected (已拒绝) 将仅记录被拒绝的流量,选择 Accepted (已接受) 将仅记录接受的流量。

  5. 对于目的地,选择发送到 CloudWatch Logs

  6. 对于目标日志组,键入 CloudWatch Logs 中日志组的名称,流日志将发布到该日志组。如果您指定了不存在的日志组的名称,我们将尝试为您创建日志组。

  7. 对于 IAM 角色,指定有权将日志发布到 CloudWatch Logs 的角色的名称。

  8. 选择 Create

为 VPC 或子网创建流日志

  1. 打开 Amazon VPC 控制台 https://console.amazonaws.cn/vpc/

  2. 在导航窗格中,选择 Your VPCs (您的 VPC)Subnets (子网)

  3. 选择一个或多个 VPC 或子网,然后选择操作创建流日志

  4. 对于 Filter (筛选条件),指定要记录的 IP 流量数据的类型。选择 All (全部) 将记录接受和拒绝的流量,选择 Rejected (已拒绝) 将仅记录被拒绝的流量,选择 Accepted (已接受) 将仅记录接受的流量。

  5. 对于目的地,选择发送到 CloudWatch Logs

  6. 对于目标日志组,键入 CloudWatch Logs 中日志组的名称,流日志将发布到该日志组。如果您指定了不存在的日志组的名称,我们将尝试为您创建日志组。

  7. 对于 IAM 角色,指定有权将日志发布到 CloudWatch Logs 的 IAM 角色的名称。

  8. 选择 Create

处理 CloudWatch Logs 中的流日志记录

您可以像使用 CloudWatch Logs 收集的任意其他日志事件一样使用流日志记录。有关监视日志数据和指标筛选条件的更多信息,请参阅 Amazon CloudWatch 用户指南 中的搜索和筛选日志数据

示例:为流日志创建 CloudWatch 指标筛选条件和警报

在此示例中,您有一个适用于 eni-1a2b3c4d 的流日志。您要创建一个警报,如果 1 小时内有 10 次或超过 10 次通过 TCP 端口 22 (SSH) 连接到您的实例的尝试遭到拒绝,该警报将向您发出提醒。首先,您必须创建一个指标筛选条件,该指标筛选条件与为其创建警报的流量的模式相匹配。然后,您可以为该指标筛选条件创建警报。

为已拒绝的 SSH 流量创建指标筛选条件并为该筛选条件创建警报

  1. 通过以下网址打开 CloudWatch 控制台:https://console.amazonaws.cn/cloudwatch/

  2. 在导航窗格中,选择 Logs

  3. 为流日志的日志组选择相关联的 Metric Filters 值,然后选择 Add Metric Filter

  4. 对于 Filter Pattern (筛选模式),输入以下内容:

    [version, account, eni, source, destination, srcport, destport="22", protocol="6", packets, bytes, windowstart, windowend, action="REJECT", flowlogstatus]
  5. 对于 Select Log Data to Test (选择要测试的日志数据),选择您的网络接口对应的日志流。(可选)要查看与筛选条件模式匹配的日志数据行,请选择 Test Pattern (测试模式)。准备好之后,选择 Assign Metric

  6. 提供指标命名空间和名称,并确保将指标值设置为 1。完成后,选择 Create Filter

  7. 在导航窗格中,依次选择 AlarmsCreate Alarm

  8. Custom Metrics 部分中,为您创建的指标筛选条件选择命名空间。

    注意

    新指标可能需要几分钟才会在控制台中显示。

  9. 选择您创建的指标名称,然后选择 Next (下一步)

  10. 输入警报的名称和说明。对于 is (为) 字段,选择 >= 并输入 10。对于 for (期间) 字段,保留默认值 1 以指示连续期间。

  11. 对于 Period (周期),选择 1 Hour (1 小时)。对于 Statistic (统计数据),选择 Sum (总计)Sum 统计数据确保您捕获指定时间段内的数据点的总数。

  12. 操作部分中,您可以选择将通知发送到现有列表。或者,您可以创建新列表并输入在警报触发时应接收通知的电子邮件地址。完成后,选择 Create Alarm