使用 VPC 型輸出建立 SFTP 連接器 - AWS Transfer Family

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 VPC 型輸出建立 SFTP 連接器

本主題提供step-by-step說明。啟用 VPC_LATTICE 的連接器使用 Amazon VPC Lattice 透過 Virtual Private Cloud 路由流量,啟用與私有端點的安全連線,或使用您自己的 NAT 閘道進行網際網路存取。

何時使用 VPC 連線

在下列情況下,使用 SFTP 連接器的 VPC 連線能力:

  • 私有 SFTP 伺服器:連線至只能從 VPC 存取的 SFTP 伺服器。

  • 內部部署連線:透過 AWS Direct Connect 或 AWS Site-to-Site VPN 連線連線至內部部署 SFTP 伺服器。

  • 自訂 IP 地址:使用您自己的 NAT 閘道和彈性 IP 地址,包括 BYOIP 案例。

  • 集中式安全控制:透過組織的中央輸入/輸出控制路由檔案傳輸。

架構圖顯示 SFTP 連接器的 VPC 型輸出,說明跨 VPC 資源存取如何透過虛擬私有雲端啟用安全連線。

啟用 VPC_LATTICE 的 SFTP 連接器的先決條件

建立已啟用 VPC_LATTICE 的 SFTP 連接器之前,您必須完成下列先決條件:

VPC 型連線的運作方式

VPC Lattice 可讓您安全地與其他 AWS 服務共用 VPC 資源。 AWS Transfer Family 使用服務網路來簡化資源共用程序。關鍵元件包括:

  • 資源閘道:做為 VPC 的存取點。您可以在至少有兩個可用區域的 VPC 中建立此項目。

  • 資源組態:包含您要連線之 SFTP 伺服器的私有 IP 地址或公有 DNS 名稱。

當您建立已啟用 VPC_LATTICE 的連接器時, 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. 身分驗證憑證:將 SFTP 使用者憑證存放在 中 AWS Secrets Manager ,如中所述在 Secrets Manager 中存放 SFTP 連接器的身分驗證憑證

重要

資源閘道和資源組態必須在相同的 AWS 帳戶中建立。建立資源組態時,您必須先備妥資源閘道。

如需 VPC 資源組態的詳細資訊,請參閱《Amazon VPC Lattice 使用者指南》中的資源組態

注意

可使用 Amazon VPC Lattice 資源 AWS 區域 的 中,提供 SFTP 連接器的 VPC 連線能力。如需詳細資訊,請參閱 VPC Lattice FAQs。可用區域支援因區域而異,資源閘道至少需要兩個可用區域。

建立已啟用 VPC_LATTICE 的 SFTP 連接器

完成先決條件後,您可以使用 、 AWS 管理主控台或 SDK AWS CLI建立具有 VPC 連線能力的 SFTP 連接器。 AWS SDKs

Console
建立已啟用 VPC_LATTICE 的 SFTP 連接器
  1. 在 https://https://console.aws.amazon.com/transfer/ 開啟 AWS Transfer Family 主控台。

  2. 在左側導覽窗格中,選擇 SFTP 連接器,然後選擇建立 SFTP 連接器

  3. 連接器組態區段中,針對輸出類型,選擇 VPC Lattice

    此選項使用 Amazon VPC Lattice 透過 VPC 路由流量,以進行跨 VPC 資源存取。您可以使用此選項來連線至私有託管伺服器端點、透過 VPC 的安全控制路由流量,或使用您自己的 NAT 閘道和彈性 IP 地址。遠端 SFTP 伺服器的地址表示為 VPC 中的資源組態。如需資源組態的詳細資訊,請參閱《Amazon VPC Lattice 使用者指南》中的 VPC 資源的資源組態

  4. 完成連接器組態:

    • 針對存取角色,選擇要使用的 (IAM) 角色的 Amazon Resource Name 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 Lattice 資源組態 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)。

  6. 密碼編譯演算法選項區段中,從下拉式清單中選擇安全政策

  7. (選用) 在標籤區段中,將標籤新增為鍵/值對。

  8. 選擇建立 SFTP 連接器以建立已啟用 VPC_LATTICE 的 SFTP 連接器。

在佈建資源關聯PENDING時,將會建立狀態為 的連接器,這通常需要幾分鐘的時間。狀態變更為 後ACTIVE,連接器即可使用。

CLI

使用下列命令來建立已啟用 VPC_LATTICE 的 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 的連接器具有非同步設定程序。建立之後,請監控連接器狀態:

  • 待定:正在佈建連接器。服務網路佈建正在進行中,通常需要幾分鐘的時間。

  • ACTIVE:連接器已準備就緒,可以傳輸檔案。

  • ERRORED:連接器無法佈建。檢查錯誤詳細資訊以取得故障診斷資訊。

使用 describe-connector命令檢查連接器狀態:

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

在 PENDING 狀態期間,test-connectionAPI 將傳回「Connector not available」,直到佈建完成為止。

限制及考量

  • 公有端點:透過 VPC 連線至公有端點時,您必須在資源組態中提供 DNS 名稱。不支援公有 IP 地址。

  • 區域可用性:VPC 連線可在選取中使用 AWS 區域。不支援跨區域資源共用。

  • 可用區域需求:資源閘道必須與至少兩個可用區域中的子網路相關聯。並非所有可用區域在每個區域中都支援 VPC Lattice。

  • 連線限制:每個資源最多 350 個連線,TCP 連線的閒置逾時為 350 秒。

成本考量

除了一般服務費用 AWS Transfer Family 之外,沒有額外的費用。不過,與共用 Amazon Virtual Private Cloud 資源相關的 Amazon VPC Lattice 可能會向客戶收取額外費用,如果客戶使用自己的 NAT 閘道輸出至網際網路,則會收取 NAT 閘道費用。

如需完整的 AWS Transfer Family 定價資訊,請參閱 AWS Transfer Family 定價頁面

SFTP 連接器的 VPC 連線範例

本節提供針對各種案例使用 VPC 連線建立 SFTP 連接器的範例。使用這些範例之前,請確定您已完成 VPC 連線文件中所述的 VPC 基礎設施設定。

範例:私有端點連線

此範例示範如何建立 SFTP 連接器,以連接至只能從 VPC 存取的私有 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 的連接器
  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 Gateway 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 Gateway 的彈性 IP 地址視為來源。

範例:跨帳戶私有端點

此範例說明如何使用資源共用連線到不同 AWS 帳戶中的私有 SFTP 伺服器。

注意

如果您已透過其他機制啟用跨 VPC 資源共用,例如 AWS Transit Gateway,您不需要設定此處所述的資源共用。SFTP 連接器會自動使用現有的路由機制,例如 Transit Gateway 路由表。您只需在建立 SFTP 連接器的相同帳戶中建立資源組態。

帳戶 A (資源提供者) - 共用資源組態
  1. 在帳戶 A 中建立資源閘道和資源組態 (與先前的範例相同)。

  2. 使用 Resource Access Manager 與帳戶 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 連接器時常見問題的解決方案:

  • 連接器卡在待定狀態:檢查您的資源閘道是否為 ACTIVE,並在支援的可用區域中具有子網路。如果連接器仍然卡在 PENDING 狀態,UpdateConnector請使用您最初使用的相同組態參數來呼叫 。這會觸發可能解決問題的新狀態事件。

  • 連線逾時:驗證安全群組規則是否允許連接埠 22 上的流量,以及您的 VPC 路由是否正確。

  • DNS 解析問題:對於公有端點,請確保您的 VPC 透過 NAT 閘道或網際網路閘道具有網際網路連線能力。

  • 跨帳戶存取遭拒:確認資源共用已接受且資源組態 ARN 正確。如果在原始伺服器帳戶建立資源共用時,將適當的許可政策連接到資源組態,則需要這些許可:vpc-lattice:AssociateViaAWSServicevpc-lattice:AssociateViaAWSService-EventsAndStatesvpc-lattice:CreateServiceNetworkResourceAssociationvpc-lattice:GetResourceConfiguration