监控 Transfer Family 使用 - Amazon Transfer Family
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

监控 Transfer Family 使用

您可以使用亚马逊 CloudWatch 和监控服务器中的活动Amazon CloudTrail。为了进一步分析,您还可以将服务器活动记录为可读的、近乎实时的指标。要查看特定于启用了 AS2 协议的 Transfer Family 服务器的指标,请参阅监控 AS2 的使用情况

启用Amazon CloudTrail日志记录

您可使用 Amazon CloudTrail 监控 Amazon Transfer Family API 调用。通过监控 API 调用,您可以获取有用的安全性和操作信息。有关如何使用 CloudTrail 和的更多信息Amazon Transfer Family,请参阅Amazon Transfer Family 中的日志记录和监控

如果您启用了 Amazon S3 对象级日志记录,RoleSessionName包含在 “请求者[AWS:Role Unique Identifier]/username.sessionid@server-id” 字段中。有关 Amazon Identity and Access Management (IAM) 角色唯一标识符的更多信息,请参阅Amazon Identity and Access Management用户指南中的唯一标识符

重要

的最大长度RoleSessionName为 64 个字符。如果较长,RoleSessionName则会server-id被截断。

创建亚马逊 CloudWatch 警报

以下示例展示了如何使用Amazon Transfer Family指标创建亚马逊 CloudWatch 警报FilesIn

CDK
new cloudwatch.Metric({ namespace: "AWS/Transfer", metricName: "FilesIn", dimensionsMap: { ServerId: "s-00000000000000000" }, statistic: "Average", period: cdk.Duration.minutes(1), }).createAlarm(this, "AWS/Transfer FilesIn", { threshold: 1000, evaluationPeriods: 10, datapointsToAlarm: 5, comparisonOperator: cloudwatch.ComparisonOperator.GREATER_THAN_OR_EQUAL_TO_THRESHOLD, });
Amazon CloudFormation
Type: AWS::CloudWatch::Alarm Properties: Namespace: AWS/Transfer MetricName: FilesIn Dimensions: - Name: ServerId Value: s-00000000000000000 Statistic: Average Period: 60 Threshold: 1000 EvaluationPeriods: 10 DatapointsToAlarm: 5 ComparisonOperator: GreaterThanOrEqualToThreshold

记录对 S3 访问日志的 Amazon S3 API 调用

如果您使用 Amazon S3 访问日志来识别代表您的文件传输用户提出的 S3 请求RoleSessionName则会使用该日志来显示担任哪个 IAM 角色来为文件传输提供服务。它还会显示其他信息,例如用于传输的用户名、会话 ID 和服务器 ID。格式现在[AWS:Role Unique Identifier]/username.sessionid@server-id和现在都包含在 “请求者” 字段中。例如,以下是复制到 S3 存储桶的文件的 S3 访问日志中的示例请求者字段的内容。

arn:aws:sts::AWS-Account-ID:assumed-role/IamRoleName/username.sessionid@server-id

在上面的请求者字段中,它显示了名IamRoleName为的 IAM 角色。有关 IAM 角色唯一标识符的更多信息,请参阅Amazon Identity and Access Management用户指南中的唯一标识符

使用记录活动 CloudWatch

要设置访问权限,您需要创建一个基于资源的 IAM 策略和一个提供该访问信息的 IAM 角色。

要启用 Amazon CloudWatch 日志记录,首先要创建启用 CloudWatch日志记录的 IAM 策略。然后,您创建一个 IAM 角色并将该策略附加到该角色。您可以在创建服务器或编辑现有服务器时执行此操作。有关的更多信息 CloudWatch,请参阅什么是亚马逊 CloudWatch? 以及什么是亚马逊 CloudWatch日志? 在《亚马逊 CloudWatch 用户指南》中。

使用以下 IAM 策略示例来允许 CloudWatch 日志记录。

Use a logging role
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:DescribeLogStreams", "logs:CreateLogGroup", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:log-group:/aws/transfer/*" } ] }
Use structured logging
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "logs:CreateLogDelivery", "logs:GetLogDelivery", "logs:UpdateLogDelivery", "logs:DeleteLogDelivery", "logs:ListLogDeliveries", "logs:PutResourcePolicy", "logs:DescribeResourcePolicies", "logs:DescribeLogGroups" ], "Resource": "arn:aws:logs:region-id:Amazon Web Services 账户:log-group:/aws/transfer/*" } ] }

在前面的示例策略中,对于,将 Resource re gion-idAmazon Web Services 账户替换为您的值。例如,"Resource": "arn:aws::logs:us-east-1:111122223333:log-group:/aws/transfer/*"

然后,您可以创建一个角色并附加您创建的 CloudWatch 日志策略。

创建 IAM 角色并附加策略
  1. 在导航窗格中,选择 Roles (角色),然后选择 Create role (创建角色)

    在 “创建角色” 页面上,确保选择了该Amazon服务

  2. 从服务列表中选择转移,然后选择下一步:权限。这将在和 IAM 角色Amazon Transfer Family之间建立信任关系。此外,添加aws:SourceAccountaws:SourceArn条件键以保护自己免受混乱的副手问题的困扰。有关更多详细信息,请参阅以下文档:

  3. 附加权限策略部分,找到并选择您刚刚创建的 CloudWatch 日志策略,然后选择下一步:标签

  4. (可选)输入标签的键和值,然后选择下一步:审核

  5. 审核页面上,输入新角色的名称和描述,然后选择创建角色

  6. 要查看日志,请选择服务器 ID 以打开服务器配置页面,然后选择查看日志。您将被重定向到 CloudWatch 控制台,在那里您可以看到您的日志流。

在服务器 CloudWatch 页面上,您可以看到用户身份验证(成功和失败)、数据上传(PUT操作)和数据下载(GET操作)的记录。

限制混乱的副手问题的示例

混淆代理问题是一个安全性问题,即不具有操作执行权限的实体可能会迫使具有更高权限的实体执行该操作。在 Amazon 中,跨服务模拟可能会导致混淆代理问题。有关更多信息,请参阅 防止跨服务混淆代理

注意

在以下示例中,将每个 user input placeholder 替换为您自己的信息。

以下示例日志/调用策略允许账户中的任何服务器代入该角色。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAllServers", "Effect": "Allow", "Principal": { "Service": "transfer.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "account-id" }, "ArnLike": { "aws:SourceArn": "arn:aws:transfer:region:account-id:server/*" } } } ] }

以下示例日志/调用策略允许特定的服务器代入该角色。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowSpecificServer", "Effect": "Allow", "Principal": { "Service": "transfer.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "account-id" }, "ArnEquals": { "aws:SourceArn": "arn:aws:transfer:region:account-id:server/server-id" } } } ] }

CloudWatch 日志条目示例

下表包含各种 Transfer Family 操作的示例日志条目。

操作 亚马逊日志中的相应 CloudWatch 日志
登录/注销

user.914984e553bcddb6 CONNECTED SourceIP=1.22.111.222 user=LOGICAL client=ssh-2.0-openssh_7.4 role=arn: aws:: iam:: 123456789012: role/sftp-s3-access HomeDir

user.914984e553bcddb6 已断开连接

Uploads

lhr.33a8fb495ffb383b OPEN path=/bucket/user/123.jpg mode=create|truncate|Write

lhr.33a8fb495ffb383b CLOSE path=/bucket/user/123.jpg =3618546 BytesIn

下载

lhr.33a8fb495ffb383b OPEN path=/bucket/user/123.jpg mode=Read

llhr.33a8fb495ffb383b CLOSE path=/bucket/user/123.jpg =3618546 BytesOut

删除

lhr.33a8fb495ffb383b 删除 path=/bucket/user/123.jpg

重命名

lhr.33a8fb495ffb383b 重命名路径=/bucket/user/lambo.png =/bucket/user/ferrari.png =/bucket/user/ferrari. NewPath

符号链接

lhr.eb49cf7b8651e6d5 CREATE_SYMLINK =/fs-12345678/lhr/pqr.jpg =abc.jpg =abc.jpg LinkPath TargetPath

Authentication failures (身份验证失败次数)

错误 auth_FAILURE method=publickey user=lhr message= “rsa sha256:lfz3r2nmly4rak+b7rb1rsvuibae+a+hxg0c7l1jiz0" sourceip=3.8.172.211

工作流程

{“type”:” “,” details”:{“input”:{ExecutionStarted“backingStore”: “EFS”、“Filesystemid”: “fs-12345678”、“path”:” /lhr/regex.py “}}}、initialFileLocation “workflowID”: “w-1111aaaa2222bbbb3”、“executionID”: “1234abcd-1234-efbbid”: “w-11aaaa2222bbbb3”、“executionID”: “1234abcd-1234-efbbid”: “w-11aaaa22gh-5678-ijklmnopqr90",“TransferDetails”:{“serverID”: “s-zzzz1111aaaa222223"、“用户名”: “lhr”、“sessionID”: “1234567890abcdef0"}}

{“type”:” “,” details”:{“input”:{StepStarted“fileLocation”:{“backingStore”: “EFS”、“Filesystemid”: “fs-12345678”、“path”:” /lhr/regex.py “}}、“stepType”: “CUSTOM”、“stepName”: “efs-s3_copy_2"}、“workflowID”: “workflowID”: “workflowID”: “workflowID”: “9283e49d33297c3f7"、“executionID”: “1234abcd-1234-efgh-5678-ijklmnopqr90"、“TransferDetails”: {“serverID”: “s-18ca49dce5d842e0b”、“用户名”: “lhr”、“sessionID”: “1234567890abb”、“用户名”: “lhr”、“sessionID”: “1234567890aba” cdef0"}}

自定义步骤工作流程

{“type”:” “,” details”:{“输出”:{CustomStepInvoked“token”: “mzm4mjg5ywutyt EzMy 00 YjIz LWI3OG MtYz U4OGI2 ZjQyMz E5"}、“stepType”: “CUSTOM”、“stepName”: “efs-s3_copy_2"}、“workflowID”: “w-9283e49d33297c3f7"、“executionID”: “w-9283e49d33297c3f7”: “1234abcd-1234-efgh-5678-ijklmnopqr90",“TransferDetails”:{“serverID”: “s-zzzz11aaaa222223"、“用户名”: “lhr”、“sessionID”: “1234567890abcdef0"}}

复制/标记/删除/解密工作流程

{“type”:” “,” details”:{“input”:{StepStarted“fileLocation”:{“backingStore”: “EFS”、“Filesystemid”: “fs-12345678”、“path”:” /lhr/regex.py “}”}、“stepType”: “TAG”、“stepName”: “successful_tag_step”}、“workflowID”: “workflowID”: “workflowID”: “workflowID”: “workflowID”: “workF11aaaa2222bbb3"、“executionID”: “81234abcd-1234-efgh-5678-ijklmnopqr90"、“TransferDetails”: {“serverID”: “s-1234abcdef5678efghi”、“用户名”: “lhr”、“sessionID”: “1234567890abcdef0"}}

工作流程错误日志示例

{“type”:” “,” details”:{“errorType”:StepErrored“BAD_REQUEST”,“ErrorMessage”:“无法标记 Efs 文件”,“stepType”:“TAG”,“stepName”:“successful_tag_step”},“w-1234abcd5678efghi”,“executionID”:“81234abcd5678efghi”:“81234abcd5678efghi”:“81234abcd5678efghi”:“8cd-1234-efgh-5678-ijklmnopqr90",“TransferDetails”:{“serverID”: “s-1234abcd5678efghi”、“用户名”: “lhr”、“sessionID”: “1234567890abcdef0"}}

查看你的 Transfer Family 服务器日志
  1. 导航到服务器的详细信息页面。

  2. 选择查看日志。这将打开亚马逊 CloudWatch。

  3. 将显示所选服务器的日志组。

    日志组详细信息页面。除了日志组外,它还会列出最近的日志流。
  4. 您可以选择一个日志流来显示该流的详细信息和单个条目。

    • 如果有错误列表,则可以选择它来查看服务器最新错误的详细信息。

      错误日志示例页面。此示例显示了几次身份验证失败的详细信息。
    • 选择任何其他条目以查看示例日志流。

      日志屏幕示例,显示用户与 SFTP 服务器连接然后断开连接的会话。
    • 如果您的服务器有与之关联的托管工作流程,则可以查看工作流程运行的日志。

      注意

      工作流程的日志流格式为username.workflowId.uniqueStreamSuffix。例如,decrypt-user.w-a1111222233334444.aaa11bbbb2222 可能是用户和工作流程的日志流的名称。decrypt-user w-a1111222233334444

      一个示例日志屏幕,显示了在工作流程中运行的条目,StepStarted日志条目已展开。
注意

对于任何展开的日志条目,您可以通过选择 “复制” 将该条目复制到剪贴板。有关 CloudWatch 日志的更多详细信息,请参阅查看日志数据

使用 T CloudWatch ransfer Family 的指标

注意

你还可以从 Transfer Family 控制台本身中获取 Transfer Family 的指标。有关详细信息,请参阅 在控制台中监控使用情况

您可以使用 CloudWatch 指标获取有关服务器的信息。指标表示发布到的一组按时间顺序排列的数据点。 CloudWatch使用指标时,必须指定 Transfer Family 命名空间、指标名称和维度。有关指标的更多信息,请参阅亚马逊 CloudWatch 用户指南中的指标

下表描述了 Transfer Family 的 CloudWatch 指标。

命名空间 指标 描述

AWS/Transfer

BytesIn

传输到服务器的总字节数。

单位:计数

时间:5 分钟

BytesOut

传出服务器的总字节数。

单位:计数

时间:5 分钟

FilesIn

传输到服务器的文件总数。

对于使用 AS2 协议的服务器,此指标表示收到的消息数量。

单位:计数

时间:5 分钟

FilesOut

从服务器传输出去的文件总数。

单位:计数

时间:5 分钟

InboundMessage

成功从交易伙伴处收到的 AS2 报文总数。

单位:计数

时间:5 分钟

InboundFailedMessage

未成功从贸易伙伴处收到的 AS2 消息的总数。也就是说,交易伙伴发送了一条消息,但是 Transfer Family 服务器无法成功处理该消息。

单位:计数

时间:5 分钟

OnPartialUploadExecutionsStarted

服务器上启动的工作 on-partial-upload 流程执行总数。

单位:计数

时长:1 分钟

OnPartialUploadExecutionsSuccess

服务器上成功执行 on-partial-upload 的工作流程总数。

单位:计数

时长:1 分钟

OnPartialUploadExecutionsFailed

服务器上执行失败 on-partial-upload 的工作流程总数。

单位:计数

时长:1 分钟

OnUploadExecutionsStarted

服务器上启动的工作流程执行总数。

单位:计数

时长:1 分钟

OnUploadExecutionsSuccess

服务器上成功执行的工作流程总数。

单位:计数

时长:1 分钟

OnUploadExecutionsFailed

服务器上执行失败的工作流程总数。

单位:计数

时长:1 分钟

Transfer Family 尺寸

维度是一个名称/值对,它是指标标识的一部分。有关尺寸的更多信息,请参阅亚马逊 CloudWatch 用户指南中的尺寸

下表描述了 Transfer Family 的 CloudWatch 维度。

维度 描述

ServerId

服务器的唯一 ID。

将Amazon用户通知与 Amazon Transfer Family

要获得有关Amazon Transfer Family事件的通知,您可以使用Amazon用户通知来设置各种交付渠道。当事件与您指定的规则相匹配时,您会收到通知。

您可以通过多个渠道接收事件通知,包括电子邮件、Amazon Chatbot 聊天通知或 Amazon Console Mobile Application 推送通知。您还可以在控制台通知中心中查看通知。用户通知支持聚合,这可以减少您在特定事件期间收到的通知数量。

有关更多信息,请参阅什么是Amazon用户通知? 在《Amazon用户通知用户指南》中。