创建 SFTP 连接器 - AWS Transfer Family

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

创建 SFTP 连接器

此过程说明如何使用 AWS Transfer Family 控制台或 AWS CLI创建 SFTP 连接器。

Console
若要创建 SFTP 连接器
  1. 打开 AWS Transfer Family 控制台,网址为https://console.aws.amazon.com/transfer/

  2. 在左侧导航窗格中,选择 SFTP 连接器,然后选择创建 SFTP 连接器。

  3. 连接器配置部分中,提供以下信息:

    Transfer Family SFTP 连接器控制台,显示连接器配置设置。
    • URL 中,输入远程 SFTP 服务器的 URL。例如 sftp://AnyCompany.com,此 URL 的格式必须为 sftp://partner-SFTP-server-url

      注意

      (可选)您可以在 URL 中提供端口号。格式为 sftp://partner-SFTP-server-url:port-number。默认端口号(未指定端口时)为端口 22。

    • 对于访问角色,请选择要使用的 (IAM) 角色的 Amazon 资源名称 AWS Identity and Access Management (ARN)。

      • 确保此角色提供对 StartFileTransfer 请求中所使用文件位置父目录提供读取和写入权限

      • 请确保此角色为 secretsmanager:GetSecretValue 提供访问密钥的权限

        注意

        在策略中,您必须为密钥指定 ARN。ARN 包含机密名称,但在名称后面附加了六个随机的字母数字字符。密钥的 ARN 格式如下。

        arn:aws:secretsmanager:region:account-id:secret:aws/transfer/SecretName-6RandomCharacters
      • 此角色还应包含一个信任关系,从而允许服务器在为用户的传输请求提供服务时访问您的资源。有关建立信任关系的详细信息,请参阅 建立信任关系

      以下示例授予访问 Amazon S3 中的和存储amzn-s3-demo-bucket在 Secrets Manager 中的指定密钥所需的权限。

      { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowListingOfUserFolder", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket" ] }, { "Sid": "HomeDirObjectAccess", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:GetObjectVersion", "s3:GetObjectACL", "s3:PutObjectACL" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" }, { "Sid": "GetConnectorSecretValue", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "arn:aws:secretsmanager:region:account-id:secret:aws/transfer/SecretName-6RandomCharacters" } ] }
      注意

      对于访问角色,该示例授予对单个密钥的访问权限。但是,您可以使用通配符,如果您想为多个用户和密钥重复使用相同的 IAM 角色,这样可以节省工作量。例如,以下资源语句为名称以 aws/transfer 开头的所有密钥授予权限。

      "Resource": "arn:aws:secretsmanager:region:account-id:secret:aws/transfer/*"

      您也可以将包含您的 SFTP 凭据的密钥存储在另一个 AWS 账户中。有关启用跨账户秘密访问的详细信息,请参阅其他账户中用户的 AWS Secrets Manager 密钥权限

    • (可选)对于日志记录角色,选择连接器用于将事件推送到 CloudWatch 日志的 IAM 角色。以下示例策略列出了记录 SFTP 连接器事件的必要权限。

      { "Version": "2012-10-17", "Statement": [{ "Sid": "SFTPConnectorPermissions", "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:DescribeLogStreams", "logs:CreateLogGroup", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:*:*:log-group:/aws/transfer/*" ] }] }
  4. SFTP 配置面板中提供以下信息:

    Transfer Family SFTP 连接器控制台,显示了 SFTP 配置设置。
    • 对于连接器凭据,从下拉列表中选择 AWS Secrets Manager 中包含 SFTP 用户私钥或密码的密钥的名称。您必须创建密钥并以特定方式存储它。有关更多信息,请参阅 在 Secrets Manager 中存储 SFTP 连接器的身份验证凭证

    • (可选)您可以选择创建连接器,同时将TrustedHostKeys参数留空。但是,除非您在连接器的配置中提供此参数,否则您的连接器将无法使用远程服务器传输文件。您可以在创建连接器时输入可信主机密钥,也可以稍后使用TestConnection控制台操作或 API 命令返回的主机密钥信息更新您的连接器。也就是说,对于受信任的主机密钥文本框,您可以执行以下任一操作:

      • 在创建连接器时提供可信主机密钥。粘贴用于标识外部服务器的主机密钥的公共部分。您可以添加多个密钥,方法是选择“添加可信主机密钥”来添加其他密钥。您可以对 SFTP 服务器使用 ssh-keyscan 命令以检索必要的密钥。有关 Transfer Family 支持的受信任主机密钥的格式和类型的详细信息,请参阅 SFTPConnectorConfig

      • 创建连接器时,请将可信主机密钥文本框留空,稍后再使用此信息更新您的连接器。如果您在创建连接器时没有主机密钥信息,则可以暂时将此参数留空,然后继续创建连接器。创建连接器后,使用新连接器的 ID 在连接器的详细信息页面中 AWS CLI 或从连接器的详细信息页面运行TestConnection命令。如果成功,TestConnection将返回必要的主机密钥信息。然后,您可以使用控制台(或通过运行UpdateConnector AWS CLI 命令)编辑连接器,并添加运行时返回的主机密钥信息TestConnection

      重要

      如果您通过运行TestConnection来检索远程服务器的主机密钥,请确保对返回的密钥执行 out-of-band验证。

      您必须接受新密钥为可信密钥,或者使用以前从正在连接的远程 SFTP 服务器的所有者那里收到的已知指纹来验证所提供的指纹。

    • (可选)在 “最大并发连接数” 中,从下拉列表中选择您的连接器创建到远程服务器的并发连接数。控制台上的默认选择为 5

      此设置指定您的连接器可以同时与远程服务器建立的活动连接的数量。创建并行连接可以通过启用 parallel 操作来提高连接器性能。

  5. 在 “加密算法选项” 部分,从 “安全策略” 字段的下拉列表中选择一个安全策略。安全策略允许您选择连接器支持的加密算法。有关可用安全策略和算法的详细信息,请参阅AWS Transfer Family SFTP 连接器的安全策略

  6. (可选)对于标签部分的,以键/值对格式输入一个或多个标签。

  7. 确认所有设置后,选择创建 SFTP 连接器以创建 SFTP 连接器。如果成功创建了连接器,则会出现一个屏幕,其中包含分配的静态 IP 地址列表和测试连接按钮。使用按钮测试新连接器的配置。

    成功创建 SFTP 连接器后出现的连接器创建屏幕。它包含一个用于测试连接的按钮以及此连接器的服务管理静态 IP 地址列表。

连接器”页面会出现,其中新 SFTP 连接器的 ID 已添加到列表中。要查看连接器的详细信息,请参阅 查看 SFTP 连接器详细信息

CLI

可使用 create-connector 命令创建连接器。要使用此命令创建 SFTP 连接器,必须提供以下信息。

  • 远程 SFTP 服务器的 URL。例如 sftp://AnyCompany.com,此 URL 的格式必须为 sftp://partner-SFTP-server-url

  • 访问角色。选择 AWS Identity and Access Management IAM 角色的 Amazon 资源名称 (ARN)。

    • 确保此角色提供对 StartFileTransfer 请求中所使用文件位置父目录提供读取和写入权限

    • 请确保此角色为 secretsmanager:GetSecretValue 提供访问密钥的权限

      注意

      在策略中,您必须为密钥指定 ARN。ARN 包含机密名称,但在名称后面附加了六个随机的字母数字字符。密钥的 ARN 格式如下。

      arn:aws:secretsmanager:region:account-id:secret:aws/transfer/SecretName-6RandomCharacters
    • 此角色还应包含一个信任关系,从而允许服务器在为用户的传输请求提供服务时访问您的资源。有关建立信任关系的详细信息,请参阅 建立信任关系

    以下示例授予访问 Amazon S3 中的和存储amzn-s3-demo-bucket在 Secrets Manager 中的指定密钥所需的权限。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowListingOfUserFolder", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket" ] }, { "Sid": "HomeDirObjectAccess", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:GetObjectVersion", "s3:GetObjectACL", "s3:PutObjectACL" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" }, { "Sid": "GetConnectorSecretValue", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "arn:aws:secretsmanager:region:account-id:secret:aws/transfer/SecretName-6RandomCharacters" } ] }
    注意

    对于访问角色,该示例授予对单个密钥的访问权限。但是,您可以使用通配符,如果您想为多个用户和密钥重复使用相同的 IAM 角色,这样可以节省工作量。例如,以下资源语句为名称以 aws/transfer 开头的所有密钥授予权限。

    "Resource": "arn:aws:secretsmanager:region:account-id:secret:aws/transfer/*"

    您也可以将包含您的 SFTP 凭据的密钥存储在另一个 AWS 账户中。有关启用跨账户秘密访问的详细信息,请参阅其他账户中用户的 AWS Secrets Manager 密钥权限

  • (可选)为连接器选择用于将事件推送到 CloudWatch 日志的 IAM 角色。以下示例策略列出了记录 SFTP 连接器事件的必要权限。

    { "Version": "2012-10-17", "Statement": [{ "Sid": "SFTPConnectorPermissions", "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:DescribeLogStreams", "logs:CreateLogGroup", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:*:*:log-group:/aws/transfer/*" ] }] }
  • 提供以下 SFTP 配置信息。

    • 中包含 SFTP 用户的私钥或密码 AWS Secrets Manager 的密钥的 ARN。

    • 用于识别外部服务器的主机密钥的公共部分。如果您愿意,可以提供多个可信的主机密钥。

    提供 SFTP 信息的最简单方法是将其保存到文件中。例如,将以下示例文本复制到名为 testSFTPConfig.json 的文件中。

    // Listing for testSFTPConfig.json { "UserSecretId": "arn:aws::secretsmanager:us-east-2:123456789012:secret:aws/transfer/example-username-key", "TrustedHostKeys": [ "sftp.example.com ssh-rsa AAAAbbbb...EEEE=" ] }
  • 为连接器指定安全策略,输入安全策略名称。

注意

SecretId可以是整个 ARN,也可以是密钥的名称(example-username-key在前面的列表中)。

然后运行以下命令以创建连接器。

aws transfer create-connector --url "sftp://partner-SFTP-server-url" \ --access-role your-IAM-role-for-bucket-access \ --logging-role arn:aws:iam::your-account-id:role/service-role/AWSTransferLoggingAccess \ --sftp-config file:///path/to/testSFTPConfig.json --security-policy-name security-policy-name --maximum-concurrent-connections integer-from-1-to-5