Amazon L VPC attice 的访问日志 - Amazon VPC Lattice

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

Amazon L VPC attice 的访问日志

访问日志可捕获有关您的VPC莱迪思服务和资源配置的详细信息。您可以使用这些访问日志来分析流量模式,并审计网络中的所有服务。对于VPC莱迪思服务,我们发布VpcLatticeAccessLogs;对于资源配置,我们发布VpcLatticeResourceAccessLogs,需要单独配置。

访问日志是可选的,默认情况下处于禁用状态。启用访问日志后,您可以随时禁用。

定价

发布访问日志时需要付费。以您的名义在 AWS 本地发布的日志称为公开日志。有关销售日志定价的更多信息,请参阅 Amazon CloudWatch 定价,选择日,然后在 Vended Logs 下查看定价。

IAM启用访问日志所需的权限

要启用访问日志并将日志发送到其目的地,您必须在策略中将以下操作附加到您正在使用的IAM用户、组或角色。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Sid": "ManageVPCLatticeAccessLogSetup", "Action": [ "logs:CreateLogDelivery", "logs:GetLogDelivery", "logs:UpdateLogDelivery", "logs:DeleteLogDelivery", "logs:ListLogDeliveries", "vpc-lattice:CreateAccessLogSubscription", "vpc-lattice:GetAccessLogSubscription", "vpc-lattice:UpdateAccessLogSubscription", "vpc-lattice:DeleteAccessLogSubscription", "vpc-lattice:ListAccessLogSubscriptions" ], "Resource": [ "*" ] } ] }

有关更多信息,请参阅《AWS Identity and Access Management 用户指南》中的添加和删除IAM身份权限

更新与正在使用的IAM用户、群组或角色关联的策略后,请转至启用访问日志

访问日志目标

您可以将访问日志发送到以下目标。

Amazon CloudWatch 日志
  • VPC莱迪思通常会在2分钟内将 CloudWatch 日志传送到日志。但请记住,实际日志传输时间是尽最大努力计算的,可能会有额外的延迟。

  • 如果 CloudWatch 日志组没有特定权限,则会自动创建资源策略并将其添加到日志组中。有关更多信息,请参阅 Amazon CloudWatch 用户指南中的发送到 CloudWatch 日志的日志。

  • 您可以在 CloudWatch控制台的 “日志组 CloudWatch ” 下找到发送到的访问日志。有关更多信息,请参阅 Amazon CloudWatch 用户指南中的查看发送到 CloudWatch 日志的日志数据

Amazon S3
  • VPC莱迪思通常会在 6 分钟内将日志传送到 Amazon S3。但请记住,实际日志传输时间是尽最大努力计算的,可能会有额外的延迟。

  • 如果存储桶没有特定权限,系统将自动创建存储桶策略,并将其添加到您的 Amazon S3 存储桶。有关更多信息,请参阅亚马逊 CloudWatch用户指南中的发送到 Amazon S3 的日志

  • 发送到 Amazon S3 的访问日志使用以下命名约定:

    [bucket]/[prefix]/AWSLogs/[accountId]/VpcLattice/AccessLogs/[region]/[YYYY/MM/DD]/[resource-id]/[accountId]_VpcLatticeAccessLogs_[region]_[resource-id]_YYYYMMDDTHHmmZ_[hash].json.gz
  • VpcLatticeResourceAccessLogs 发送到 Amazon S3 的内容使用以下命名约定:

    [bucket]/[prefix]/AWSLogs/[accountId]/VpcLattice/ResourceAccessLogs/[region]/[YYYY/MM/DD]/[resource-id]/[accountId]_VpcLatticeResourceAccessLogs_[region]_[resource-id]_YYYYMMDDTHHmmZ_[hash].json.gz
Amazon Data Firehose
  • VPC莱迪思通常会在2分钟内将日志传送到Firehose。但请记住,实际日志传输时间是尽最大努力计算的,可能会有额外的延迟。

  • 系统会自动创建一个服务相关角色,该角色授予VPC莱迪思向其发送访问日志的权限。 Amazon Data Firehose为使自动角色创建成功,用户必须具有 iam:CreateServiceLinkedRole 操作的权限。有关更多信息,请参阅 Amazon CloudWatch 用户指南 Amazon Data Firehose中的发送到的日志

  • 有关查看发送到 Amazon Data Firehose日志的更多信息,请参阅《Amazon Data Firehose 开发人员指南》中的监控 Amazon Kinesis Data Streams

启用访问日志

完成以下过程,配置访问日志,以捕获访问日志并将其传输到您选择的目标。

使用控制台启用访问日志

您可以在创建期间启用服务网络、服务或资源配置的访问日志。您也可以在创建服务网络、服务或资源配置后启用访问日志,如以下过程所述。

要使用控制台创建基本服务
  1. 打开 Amazon VPC 控制台,网址为https://console.aws.amazon.com/vpc/

  2. 选择服务网络、服务或资源配置。

  3. 选择操作编辑日志设置

  4. 打开访问日志切换开关。

  5. 为访问日志添加传输目标,如下所示:

    • 选择CloudWatch 日志组并选择一个日志组。要创建日志组,请选择在中创建日志组 CloudWatch

    • 选择 S3 存储桶并输入 S3 存储桶路径,包括任何前缀。要搜索 S3 存储桶,请选择浏览 S3

    • 选择 Kinesis Data Firehose 传输流,然后选择一个传输流。要创建传输流,请选择在 Kinesis 中创建传输流

  6. 选择 Save changes(保存更改)

使用 AWS CLI启用访问日志

使用CLI命令create-access-log-subscription启用服务网络或服务的访问日志。

访问日志内容

下表描述了访问日志条目的字段。

字段 描述 格式
hostHeader

请求的授权标头。

字符串

sslCipher

用于建立客户端TLS连接的一组密码的开放SSL名称。

字符串

serviceNetworkArn

服务网络ARN。

arn: aws: vpc-lattice::: servicenetwork/ region account id

resolvedUser

启用身份验证并完成身份验证时的用户。ARN

空 | ARN | “匿名” | “未知”

authDeniedReason

启用验证后访问被拒绝的原因。

null | "Service" | "Network" | "Identity"

requestMethod

请求的方法标头。

字符串

targetGroupArn

目标主机所属的目标主机组。

字符串

tlsVersion

TLS 版本。

TLSvx

userAgent

用户代理标头。

字符串

ServerNameIndication

[HTTPS仅限] 在 ssl 连接套接字上为服务器名称指示 (SNI) 设置的值。

字符串

destinationVpcId

目的地 VPC ID。

vpc-xxxxxxxx

sourceIpPort

源的 IP 地址和端口。

ip:port

targetIpPort

目标的 IP 地址和端口。

ip:port

serviceArn

该服务ARN。

arn: aws: vpc-lattice::: service/ region account id

sourceVpcId

来源 VPC ID。

vpc-xxxxxxxx

requestPath

请求的路径。

LatticePath?:path

startTime

请求开始时间。

YYYY-MM-DD THH:MM: SS Z

protocol

协议。目前要么是 HTTP /1.1 要么 /2HTTP.

字符串

responseCode

HTTP响应码。仅记录最终标头的响应代码。有关更多信息,请参阅 访问日志问题排查

整数

bytesReceived

收到的正文和标头字节。

整数

bytesSent

发送的正文和标头字节。

整数

duration

请求从开始时间到最后一个字节输出的总持续时间(毫秒)。

整数

requestToTargetDuration

请求从开始时间到发送到目标的最后一个字节的总持续时间(毫秒)。

整数

responseFromTargetDuration

请求从目标主机读取第一个字节到发送到客户端的最后一个字节的总持续时间(毫秒)。

整数

grpcResponseCode

g RPC 响应码。有关更多信息,请参阅状态码及其在 g 中的用法RPC。仅当服务支持 g 时,才会记录此字段RPC。

整数

callerPrincipal

经过验证的主体。

字符串

callerX509SubjectCN

使用者名称(CN)。

字符串

callerX509IssuerOU

发布者(OU)。

字符串

callerX509SANNameCN

发布者备用名称(名称/CN)。

字符串

callerX509SANDNS

主题备用名称 (DNS)。

字符串

callerX509SANURI

主题备用名称 (URI)。

字符串

sourceVpcArn

请求ARN的VPC起源地。

arn: aws: ec2::: vpc/ region account id

示例

以下是示例日志条目。

{ "hostHeader": "example.com", "sslCipher": "-", "serviceNetworkArn": "arn:aws:vpc-lattice:us-west-2:123456789012:servicenetwork/svn-1a2b3c4d", "resolvedUser": "Unknown", "authDeniedReason": "null", "requestMethod": "GET", "targetGroupArn": "arn:aws:vpc-lattice:us-west-2:123456789012:targetgroup/tg-1a2b3c4d", "tlsVersion": "-", "userAgent": "-", "serverNameIndication": "-", "destinationVpcId": "vpc-0abcdef1234567890", "sourceIpPort": "178.0.181.150:80", "targetIpPort": "131.31.44.176:80", "serviceArn": "arn:aws:vpc-lattice:us-west-2:123456789012:service/svc-1a2b3c4d", "sourceVpcId": "vpc-0abcdef1234567890", "requestPath": "/billing", "startTime": "2023-07-28T20:48:45Z", "protocol": "HTTP/1.1", "responseCode": 200, "bytesReceived": 42, "bytesSent": 42, "duration": 375, "requestToTargetDuration": 1, "responseFromTargetDuration": 1, "grpcResponseCode": 1 }

资源访问日志内容

下表描述了资源访问日志条目的字段。

字段 描述 格式
serviceNetworkArn

服务网络ARN。

arn: partition vpc-lattice::: servicenetwork/ region account id

serviceNetworkResourceAssociationId

服务网络资源 ID。

snra-xxx

vpcEndpointId

用于访问资源的端点 ID。

字符串

sourceVpcArn

发起连接的VPC来源VPCARN或来源。

字符串

resourceConfigurationArn

访问ARN的资源配置。

字符串

protocol

用于与资源配置通信的协议。目前仅支持 tcp。

字符串

sourceIpPort

发起连接的源的 IP 地址和端口。

ip:port

destinationIpPort

发起连接时使用的 IP 地址和端口。这将是 SN-E/SN-A 的 IP。

ip:port

gatewayIpPort

资源网关用于访问资源的 IP 地址和端口。

ip:port

resourceIpPort

资源的 IP 地址和端口。

ip:port

示例

以下是示例日志条目。

{ "eventTimestamp": "2024-12-02T10:10:10.123Z", "serviceNetworkArn": "arn:aws:vpc-lattice:us-west-2:1234567890:servicenetwork/sn-1a2b3c4d", "serviceNetworkResourceAssociationId": "snra-1a2b3c4d", "vpcEndpointId": "vpce-01a2b3c4d", "sourceVpcArn": "arn:aws:ec2:us-west-2:1234567890:vpc/vpc-01a2b3c4d", "resourceConfigurationArn": "arn:aws:vpc-lattice:us-west-2:0987654321:resourceconfiguration/rcfg-01a2b3c4d", "protocol": "tcp", "sourceIpPort": "172.31.23.56:44076", "destinationIpPort": "172.31.31.226:80", "gatewayIpPort": "10.0.28.57:49288", "resourceIpPort": "10.0.18.190:80" }

访问日志问题排查

本节包含您可能在访问日志中看到的HTTP错误代码的说明。

错误代码 可能的原因

HTTP400:请求不正确

  • 客户端发送的请求格式不正确,不符合HTTP规范。

  • 整个请求标头超过 60K,或超过 100 个标头。

  • 客户端在发送完整的请求正文之前关闭了连接。

HTTP403: 已禁止

已为服务配置验证,但传入请求未经过验证或授权。

HTTP404: 服务不存在

您正在尝试连接到不存在或未注册到正确服务网络的服务。

HTTP500:内部服务器错误

VPC莱迪思遇到了错误,例如无法连接到目标。

HTTP502: 错误的网关

VPC莱迪思遇到了错误。