View a markdown version of this page

创建带出口的 SFTP 连接器 VPC-based - AWS Transfer Family

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

创建带出口的 SFTP 连接器 VPC-based

本主题提供有关创建具有 VPC 连接的 SFTP 连接器的分步说明。VPC_ LATTICE-enabled 连接器使用 Amazon VPC Lattice 通过您的虚拟私有云路由流量,从而实现与私有终端节点的安全连接,或使用您自己的 NAT 网关访问互联网。

何时使用 VPC 连接

在以下场景中为 SFTP 连接器使用 VPC 连接:

  • 私有 SFTP 服务器:连接到只能从您的 VPC 访问的 SFTP 服务器。

  • On-premises 连接:通过 AWS 直接连接或 AWS Site-to-Site VPN 连接连接到本地 SFTP 服务器。

  • 自定义 IP 地址:使用您自己的 NAT 网关和弹性 IP 地址,包括 BYOIP 方案。

  • 集中式安全控制:通过组织的中央 ingress/egress 控制来路由文件传输。

架构图显示 VPC-based 了 SFTP 连接器的出口,说明了 Cross-VPC 资源访问如何通过您的虚拟私有云实现安全连接。

VPC_ LATTICE-enabled SFTP 连接器的先决条件

在创建 VPC_ LATTICE-enabled SFTP 连接器之前,必须满足以下先决条件:

VPC-based 连接的工作原理

VPC Lattice 使您能够安全地与其他 AWS 服务共享 VPC 资源。 AWS Transfer Family 使用服务网络来简化资源共享过程。关键组件包括:

  • 资源网关:用作您的 VPC 的访问点。您可以在 VPC 中创建此可用区,至少有两个可用区。

  • 资源配置:包含要连接的 SFTP 服务器的私有 IP 地址或公有 DNS 名称。

当您创建 VPC_ LATTICE-enabled 连接器时, AWS Transfer Family 使用前向访问会话 (FAS) 临时获取您的证书,并将您的资源配置与我们的服务网络关联起来。

必需的设置步骤

  1. VPC 基础设施:确保您已正确配置了 VPC,其中包含满足您的 SFTP 服务器连接要求所需的子网、路由表和安全组。

  2. 资源网关:使用 VPC Lattice create-resource-gateway 命令在您的 VPC 中创建资源网关。资源网关必须与至少两个可用区中的子网相关联。有关更多信息,请参阅 Amazon VPC Lattice 用户指南中的资源网关。

  3. 资源配置:使用 VPC Lattice create-resource-configuration 命令创建代表目标 SFTP 服务器的资源配置。您可以指定下列之一:

    • 私有端点的私有 IP 地址

    • 公共终端节点的公有 DNS 名称(公共终端节点不支持 IP 地址)

  4. 身份验证凭证: AWS Secrets Manager 按中所述将 SFTP 用户凭据存储在中。在密钥管理器中存储 SFTP 连接器的身份验证凭据

重要

资源网关和资源配置必须在同一个 AWS 账户中创建。创建资源配置时,必须首先设置资源网关。

有关 VPC 资源配置的更多信息,请参阅 Amazon VPC Lattice 用户指南中的资源配置。

注意

在有亚马逊 VPC 莱迪思资源 AWS 区域 的地方,可以使用 SFTP 连接器的 VPC 连接。有关更多信息,请参阅 VPC Lattice 常见问题解答。可用区支持因地区而异,资源网关至少需要两个可用区。

创建 VPC_ LATTICE-enabled SFTP 连接器

完成先决条件后,您可以使用 AWS 管理控制台或 AWS 软件开发工具包创建具有 VPC 连接的 SFTP 连接器。 AWS CLI

Console
创建 VPC_ LATTICE-enabled SFTP 连接器
  1. 在处打开 AWS Transfer Family 控制台https://console.aws.amazon.com/transfer/

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

  3. 连接器配置部分中,对于出口类型,选择 VPC Lat tice。

    此选项使用亚马逊 VPC Lattice 路由流量通过您的 VPC 进行跨 VPC 资源访问。您可以使用此选项连接到私有托管的服务器终端节点,通过 VPC 的安全控制措施路由流量,或者使用自己的 NAT 网关和弹性 IP 地址。远程 SFTP 服务器的地址以您的 VPC 中的资源配置表示。有关资源配置的更多信息,请参阅 Amazon VPC Lattice 用户指南中的 VPC 资源资源配置。

  4. 完成连接器配置:

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

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

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

        注意

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

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

      { "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:us-west-2:111122223333:secret:aws/transfer/SecretName-6RandomCharacters" } ] }
      注意

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

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

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

    • 对于资源配置 ARN,请输入指向您的 SFTP 服务器的 VPC 莱迪思资源配置的 ARN:

      arn:aws:vpc-lattice:region:account-id:resourceconfiguration/rcfg-12345678
    • (可选)对于日志记录角色,为连接器选择用于将事件推送到 CloudWatch 日志的 IAM 角色。

      { "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/*" } ] }
  5. SFTP 配置面板中提供以下信息:

    • Connector 凭据中 AWS Secrets Manager ,选择包含 SFTP 用户私钥或密码的密钥名称。

    • 对于可信主机密钥,粘贴用于识别外部服务器的主机密钥的公共部分,或留空以便稍后使用该TestConnection命令进行配置。

      由于此主机密钥用于 VPC_LATTICE 连接器,因此删除密钥中的主机名

    • (可选)对于最大并发连接数,选择您的连接器创建到远程服务器的并发连接数(默认值为 5)。

    • (可选)对于订购密钥版本阶段,输入密钥管理器版本阶段标签的有序列表。在文件传输期间,连接器尝试按顺序使用每个阶段进行身份验证。如果您未指定版本阶段,则连接器仅使用AWSCURRENT。例如,指定AWSCURRENTAWSPREVIOUS在密钥轮换期间启用自动回退。

  6. 加密算法选项部分,从下拉列表中选择安全策略。

  7. (可选)在标签部分中,将标签添加为键值对。

  8. 选择创建 SFTP 连接器来创建 VPC_ LATTICE-enabled SFTP 连接器。

在配置资源关联PENDING时,连接器的创建状态为,这通常需要几分钟。状态更改为ACTIVE,连接器即可使用。

CLI

使用以下命令创建 VPC_ LATTICE-enabled SFTP 连接器:

aws transfer create-connector \ --url "sftp://my.sftp.server.com:22" \ --access-role arn:aws:iam::123456789012:role/TransferConnectorRole \ --sftp-config UserSecretId=my-secret-id,TrustedHostKeys="ssh-rsa AAAAB3NzaC..." \ --egress-config VpcLattice={ResourceConfigurationArn=arn:aws:vpc-lattice:us-east-1:123456789012:resourceconfiguration/rcfg-1234567890abcdef0} \ --security-policy-name TransferSecurityPolicy-2024-01

VPC 连接的关键参数是--egress-config,它指定了定义您的 SFTP 服务器目标的资源配置 ARN。

监控 VPC 连接器状态

VPC_ LATTICE-enabled 连接器具有异步设置过程。创建后,监控连接器状态:

  • 待定:正在配置连接器。服务网络配置正在进行中,通常需要几分钟。

  • 活动:连接器已准备就绪,可以传输文件。

  • 错误:连接器无法配置。查看错误详细信息以获取故障排除信息。

使用describe-connector以下命令检查连接器状态:

aws transfer describe-connector --connector-id c-1234567890abcdef0

在 PENDING 状态下,在配置完成之前,test-connectionAPI 将返回 “连接器不可用”。

限制和注意事项

  • 公有终端节点:通过 VPC 连接到公共终端节点时,必须在资源配置中提供 DNS 名称。不支持公有 IP 地址。

  • 区域可用性:VPC 连接在精选版本中可用 AWS 区域。 Cross-region 不支持资源共享。

  • 可用区要求:资源网关必须与至少两个可用区中的子网相关联。并非所有可用区在每个区域都支持 VPC Lattice。

  • 连接限制:每个资源最多 350 个连接,TCP 连接的空闲超时时间为 350 秒。

成本注意事项

AWS Transfer Family 除了常规服务费外,没有其他费用。但是,如果客户使用自己的NAT网关出入互联网,则可能会向Amazon VPC Lattice收取与共享亚马逊虚拟私有云资源相关的额外费用,以及NAT网关的费用。

有关完整的 AWS Transfer Family 定价信息,请参阅定AWS Transfer Family 价页面

SFTP 连接器的 VPC 连接示例

本节提供了为各种场景创建具有 VPC 连接的 SFTP 连接器的示例。在使用这些示例之前,请确保您已按照 VPC 连接文档中的说明完成 VPC 基础设施设置。

示例:私有端点连接

此示例说明如何创建连接到只能从您的 VPC 访问的私有 SFTP 服务器的 SFTP 连接器。

先决条件
  1. 在您的 VPC 中创建资源网关:

    aws vpc-lattice create-resource-gateway \ --name my-private-server-gateway \ --vpc-identifier vpc-1234567890abcdef0 \ --subnet-ids subnet-1234567890abcdef0 subnet-0987654321fedcba0
  2. 为您的私有 SFTP 服务器创建资源配置:

    aws vpc-lattice create-resource-configuration \ --name my-private-server-config \ --resource-gateway-identifier rgw-1234567890abcdef0 \ --resource-configuration-definition ipResource={ipAddress="10.0.1.100"} \ --port-ranges 22
创建 VPC_ 连接器 LATTICE-enabled
  1. 创建具有 VPC 连接的 SFTP 连接器:

    aws transfer create-connector \ --access-role arn:aws:iam::123456789012:role/TransferConnectorRole \ --sftp-config UserSecretId=my-private-server-credentials,TrustedHostKeys="ssh-rsa AAAAB3NzaC..." \ --egress-config VpcLattice={ResourceConfigurationArn=arn:aws:vpc-lattice:us-east-1:123456789012:resourceconfiguration/rcfg-1234567890abcdef0,PortNumber=22}
  2. 监控连接器状态,直到它变成ACTIVE

    aws transfer describe-connector --connector-id c-1234567890abcdef0

远程 SFTP 服务器将在您的 VPC CIDR 范围内看到来自资源网关的 IP 地址的连接。

示例:通过 VPC 的公共终端节点

此示例说明如何通过您的 VPC 将连接路由到公有 SFTP 服务器,以利用集中式安全控制并使用您自己的 NAT 网关 IP 地址。

先决条件
  1. 在您的 VPC 中创建资源网关(与私有终端节点示例相同)。

  2. 使用公共 SFTP 服务器的 DNS 名称为其创建资源配置:

    aws vpc-lattice create-resource-configuration \ --name my-public-server-config \ --resource-gateway-identifier rgw-1234567890abcdef0 \ --resource-configuration-definition dnsResource={domainName="sftp.example.com"} \ --port-ranges 22
    注意

    对于公共终端节点,必须使用 DNS 名称,而不是 IP 地址。

创建连接器
  • 创建 SFTP 连接器:

    aws transfer create-connector \ --access-role arn:aws:iam::123456789012:role/TransferConnectorRole \ --sftp-config UserSecretId=my-public-server-credentials,TrustedHostKeys="ssh-rsa AAAAB3NzaC..." \ --egress-config VpcLattice={ResourceConfigurationArn=arn:aws:vpc-lattice:us-east-1:123456789012:resourceconfiguration/rcfg-0987654321fedcba0,PortNumber=22}

流量将从连接器流向您的资源网关,然后通过您的 NAT 网关到达公共 SFTP 服务器。远程服务器会将您的 NAT 网关的弹性 IP 地址视为来源。

示例: Cross-account 私有端点

此示例说明如何使用资源共享连接到不同 AWS 帐户中的私有 SFTP 服务器。

注意

如果您已经通过其他机制(例如)启用了跨 VPC 资源共享 AWS Transit Gateway,则无需配置此处描述的资源共享。现有的路由机制,例如公交网关路由表,由 SFTP 连接器自动使用。您只需要在创建 SFTP 连接器的同一个账户中创建资源配置即可。

账户 A(资源提供商)-共享资源配置
  1. 在账户 A 中创建资源网关和资源配置(与前面的示例相同)。

  2. 使用资源访问管理器与账户 B 共享 AWS 资源配置:

    aws ram create-resource-share \ --name cross-account-sftp-share \ --resource-arns arn:aws:vpc-lattice:us-east-1:111111111111:resourceconfiguration/rcfg-1234567890abcdef0 \ --principals 222222222222
账户 B(资源使用者)-接受并使用共享
  1. 接受资源共享邀请:

    aws ram accept-resource-share-invitation \ --resource-share-invitation-arn arn:aws:ram:us-east-1:111111111111:resource-share-invitation/invitation-id
  2. 在账户 B 中创建 SFTP 连接器:

    aws transfer create-connector \ --access-role arn:aws:iam::222222222222:role/TransferConnectorRole \ --sftp-config UserSecretId=cross-account-server-credentials,TrustedHostKeys="ssh-rsa AAAAB3NzaC..." \ --egress-config VpcLattice={ResourceConfigurationArn=arn:aws:vpc-lattice:us-east-1:111111111111:resourceconfiguration/rcfg-1234567890abcdef0,PortNumber=22}

账户 B 中的连接器现在可以通过共享资源配置访问账户 A 中的专用 SFTP 服务器。

常见故障排除场景

以下是创建 VPC_ LATTICE-enabled 连接器时常见问题的解决方案:

  • 连接器处于 “待处理” 状态:检查您的资源网关是否处于活动状态并在支持的可用区域中是否有子网。如果连接器仍处于 PENDING 状态,请UpdateConnector使用最初使用的相同配置参数进行调用。这会触发一个新的状态事件,可能会解决问题。

  • 连接超时:验证安全组规则允许端口 22 上的流量以及您的 VPC 路由是否正确。

  • DNS 解析问题:对于公共终端节点,请确保您的 VPC 通过 NAT 网关或互联网网关连接互联网。

  • Cross-account 访问被拒绝:验证资源共享是否被接受以及资源配置 ARN 是否正确。如果在原始账户创建资源共享时将正确的权限策略附加到资源配置,则需要以下权限:vpc-lattice:AssociateViaAWSService、、vpc-lattice:AssociateViaAWSService-EventsAndStatesvpc-lattice:CreateServiceNetworkResourceAssociationvpc-lattice:GetResourceConfiguration