SFTP コネクタを設定する - AWS Transfer Family

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

SFTP コネクタを設定する

このトピックでは、SFTP コネクタの作成方法、それらに関連付けられたセキュリティアルゴリズム、認証情報を保持するためのシークレットの保存方法、プライベートキーの書式設定の詳細、コネクタのテスト手順について説明します。

SFTPコネクタを作成する

この手順では、 AWS Transfer Family コンソールまたは を使用して SFTP コネクタを作成する方法について説明します AWS CLI。

Console
SFTPコネクタを作成するには
  1. https://console.aws.amazon.com/transfer/ で AWS Transfer Family コンソールを開きます。

  2. 左側のナビゲーションペインで、[コネクタ] を選択し、[コネクタの作成] を選択します。

  3. SFTP コネクタを作成するには、コネクタの種類として [SFTP] を選択し、[次へ] を選択します。

    Transfer Family コンソールに [コネクタの作成] ページが表示され、コネクタの種類を選択します。[SFTP] が選択されます。
  4. [コネクタ構成] セクションで、次の情報を入力します。

    • [URL] には、リモート SFTP サーバーの URL を入力します。この URL は sftp://partner-SFTP-server-url、例えば次のような形式にする必要があります。sftp://AnyCompany.com

      注記

      オプションで、URL にポート番号を指定できます。形式は sftp://partner-SFTP-server-url:port-number です。デフォルトのポート番号 (ポートが指定されていない場合) はポート 22 です。

    • アクセスロール で、使用する (IAM) ロールの Amazon リソースネーム AWS Identity and Access Management (ARN) を選択します。

      • StartFileTransfer リクエストで使用されるファイルロケーションの親ディレクトリに対して、このロールが読み取りと書き込みのアクセスを提供することを確認します

      • secretsmanager:GetSecretValue このロールがシークレットへのアクセス許可を提供していることを確認してください。

        注記

        ポリシーでは、シークレットの ARN を指定する必要があります。ARN にはシークレット名が含まれていますが、名前にはランダムな 6 文字の英数字が付加されます。シークレットの ARN の形式は次のとおりです。

        arn:aws:secretsmanager:region:account-id:secret:aws/transfer/SecretName-6RandomCharacters
      • このロールに信頼関係が含まれていることを確認する」ことで、ユーザーの転送要求に対応する際に、コネクタがリソースにアクセスできません。信頼関係の確立の詳細については、信頼関係を確立するには を参照してください。

      次の例では、Amazon S3 の DOC-EXAMPLE-BUCKET および Secrets Manager に保存されている指定されたシークレットにアクセスするために必要なアクセス許可を付与します。 Amazon S3

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

      アクセス ロールの場合、この例では 1 つのシークレットへのアクセスを許可します。ただし、ワイルドカード文字を使用すると、複数のユーザーとシークレットに対して同じ 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/*" ] }] }
  5. SFTPの設定」セクションで、以下の情報を入力する:

    • コネクタ認証情報 で、ドロップダウンリストから、SFTP ユーザーのプライベートキーまたはパスワード AWS Secrets Manager を含む のシークレットの名前を選択します。シークレットを作成し、特定の方法で保存する必要があります。詳細については、「SFTP コネクタで使用するシークレットを保存する」を参照してください。

    • 信頼できるホストキー の場合、外部サーバーを識別するために使用されるホストキーのパブリック部分を貼り付けます。[信頼できるホストキーを追加] を選択してキーを追加することで、複数のキーを追加できます。SFTP サーバーに対して ssh-keyscan コマンドを使用して、必要なキーを取得できます。Transfer Family がサポートするトラステッドホストキーの形式とタイプの詳細については、を参照してください「SFTPConnectorConfig」

  6. 暗号化アルゴリズムオプションセクションで、セキュリティポリシーフィールドのドロップダウンリストからセキュリティポリシーを選択します。セキュリティポリシーを使用すると、コネクタがサポートする暗号化アルゴリズムを選択できます。使用可能なセキュリティポリシーとアルゴリズムの詳細については、「」を参照してくださいAWS Transfer Family SFTP コネクタのセキュリティポリシー

  7. (オプション)[Tags] セクションの[Key] と[Value] に、1 つ以上のタグをキーと値のペアとして入力します。

  8. すべての設定を確認したら、[コネクタの作成] を選択して SFTP コネクタを作成します。コネクタが正常に作成されると、割り当てられた静的 IP アドレスのリストと接続のテストボタンが画面に表示されます。ボタンを使用して、新しいコネクタの設定をテストします。

    SFTP コネクタが正常に作成されたときに表示されるコネクタ作成画面。接続をテストするためのボタンと、このコネクタのサービスマネージド静的 IP アドレスのリストが含まれています。

新しい SFTP [コネクタの] ID がリストに追加されたコネクタページが表示されます。コネクタの詳細を表示するには、SFTP コネクタの詳細を表示します。 を参照してください。

CLI

コネクタを作成するには、「create-connector」コマンドを使用します。このコマンドを使用して SFTP コネクタを作成するには、次の情報を指定する必要があります。

  • リモート SFTP サーバーの URL。この URL は sftp://partner-SFTP-server-url、例えば次のような形式にする必要があります。sftp://AnyCompany.com

  • アクセスロール 使用する AWS Identity and Access Management (IAM)ロールの Amazon リソースネーム(ARN)を選択します。

    • StartFileTransfer リクエストで使用されるファイルロケーションの親ディレクトリに対して、このロールが読み取りと書き込みのアクセスを提供することを確認します

    • secretsmanager:GetSecretValue このロールがシークレットへのアクセス許可を提供していることを確認してください。

      注記

      ポリシーでは、シークレットの ARN を指定する必要があります。ARN にはシークレット名が含まれていますが、名前にはランダムな 6 文字の英数字が付加されます。シークレットの ARN の形式は次のとおりです。

      arn:aws:secretsmanager:region:account-id:secret:aws/transfer/SecretName-6RandomCharacters
    • このロールに信頼関係が含まれていることを確認する」ことで、ユーザーの転送要求に対応する際に、コネクタがリソースにアクセスできません。信頼関係の確立の詳細については、信頼関係を確立するには を参照してください。

    次の例では、Amazon S3 の DOC-EXAMPLE-BUCKET および Secrets Manager に保存されている指定されたシークレットにアクセスするために必要なアクセス許可を付与します。 Amazon S3

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

    アクセス ロールの場合、この例では 1 つのシークレットへのアクセスを許可します。ただし、ワイルドカード文字を使用すると、複数のユーザーとシークレットに対して同じ 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 情報を提供する最も簡単な方法は、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

SFTP コネクタで使用するシークレットを保存する

Secrets Manager を使用して、SFTP コネクタのユーザー資格情報を保存できます。シークレットを作成するときは、ユーザー名を指定する必要があります。追加で、パスワード、プライベートキー、またはその両方を提供できます。詳細については、「SFTPコネクタのクォータ」を参照してください。

注記

Secrets Manager にシークレットを保存すると、 AWS アカウント に料金が発生します。料金については、「AWS Secrets Manager 料金表」を参照してください。

SFTPコネクタのユーザー資格情報をSecrets Managerに保存するために
  1. にサインイン AWS Management Console し、https://console.aws.amazon.com/secretsmanager/ で AWS Secrets Manager コンソールを開きます。

  2. 左側のナビゲーションペインで [サーバー] を選択します。

  3. [シークレット]ページで、[新しいシークレットの保存]を選択します。

  4. [シークレットタイプの選択] ページの[シークレットタイプ] で[その他のシークレットタイプ] を選択します。

  5. [キー/値のペア] セクションで、[キー/値] タブを選択します。

    • キーUsernameと入力します。

    • [値] — パートナーのサーバーへの接続を許可されているユーザーの名前を入力します。

  6. パスワードを入力する場合は、[行を追加] を選択し、[キー/値のペア] セクションで [Key/Value] タブを選択します。

    [行を追加] を選択し、[キー/値のペア] セクションで [キー/値] タブを選択します。

    • キーPasswordと入力します。

    • [] ー ユーザーのパスワードを入力します。

  7. プライベートキーを提供したい場合は、SFTP コネクタプライベートキーの生成とフォーマット を参照して、プライベートキーのデータの入力方法を説明しています。

    注記

    入力するプライベートキーデータは、リモートのSFTP サーバーにこのユーザーのために保存されている公開キーと対応している必要があります。

  8. [次へ] をクリックします。

  9. [シークレットの設定] ページで、シークレットの名前と説明を入力します。名前には aws/transfer/ というプレフィックスを使用することをお勧めします。例えば、シークレットを aws/transfer/connector-1 と名付けることができます。

  10. [次へ] を選択し、[ローテーションの設定] ページのデフォルトを受け入れます。次いで、[次へ] を選択します。

  11. [レビュー] ページで [ストア] を選択し、シークレットを作成して保存します。

SFTP コネクタプライベートキーの生成とフォーマット

パブリック/プライベートキーペアの生成の詳細については、「」を参照してくださいmacOS、Linux、または UNIX で SSH キーを作成する

例えば、SFTP コネクタで使用するプライベートキーを生成するには、次のサンプルコマンドで正しいタイプのキーを生成します (key_name をキーペアの実際のファイル名に置き換えます)。

ssh-keygen -t rsa -b 4096 -m PEM -f key_name -N ""
注記

SFTP コネクタで使用するキーペアを作成するときは、パスフレーズを使用しないでください。SFTP 設定が正しく機能するには、空のパスフレーズが必要です。

このコマンドは、キーサイズが 4096 ビットの RSA キーペアを作成します。キーはレガシー PEM 形式で生成されます。これは、SFTP コネクタシークレットで使用するために Transfer Family で必要です。キーは、現在のディレクトリの key_name (プライベートキー) と key_name.pub (パブリックキー)、つまりssh-keygenコマンドを実行するディレクトリに保存されます。

注記

Transfer Family は、SFTP コネクタに使用されるキーの OpenSSH 形式 (-----BEGIN OPENSSH PRIVATE KEY-----) をサポートしていません。キーはレガシー PEM 形式 (-----BEGIN RSA PRIVATE KEY----- または -----BEGIN EC PRIVATE KEY-----) である必要があります。コマンドを実行するときに -m PEM オプションを指定すると、ssh-keygen ツールを使用してキーを変換できます。

キーを生成したら、プライベートキーが JSON 形式で改行文字 (「\n」) が埋め込まれていることを確認する必要があります。

コマンドを使用して、既存のプライベートキーを改行文字が埋め込まれた JSON 形式に変換します。ここでは、 jqと Powershell の例を示します。プライベートキーを改行文字が埋め込まれた JSON 形式に変換する任意のツールまたはコマンドを使用できます。

jq command

この例では、 jq コマンドを使用します。 コマンドは、Download jq からダウンロードできます。

jq -sR . path-to-private-key-file

例えば、プライベートキーファイルが にある場合~/.ssh/my_private_key、コマンドは次のようになります。

jq -sR . ~/.ssh/my_private_key

これにより、キーが正しい形式 (改行文字が埋め込まれている) で標準出力に出力されます。

PowerShell

Windows を使用している場合は、 PowerShell を使用してキーを正しい形式に変換できます。次の Powershell コマンドは、プライベートキーを正しい形式に変換します。

Get-Content -Raw path-to-private-key-file | ConvertTo-Json
SFTP コネクタで使用するためにシークレットにプライベートキーデータを追加するには
  1. Secrets Manager コンソールで、[その他のタイプのシークレットを] 保存する場合は、[プレーンテキスト] タブを選択します。テキストは空であり、左中括弧と右中括弧 {} のみが含まれている必要があります。

  2. ユーザー名、プライベートキーデータ、および/またはパスワードを以下の形式で貼り付けてください。プライベートキーデータについては、ステップ1で実行したコマンドの出力を貼り付けてください。

    {"Username":"SFTP-USER","Password":"SFTP-USER-PASSWORD","PrivateKey":"PASTE-PRIVATE-KEY-DATA-HERE"}
    平文のシークレットで、サンプルテキストを表示します。

    プライベートキーデータを正しく貼り付けた場合、[キー/バリュー] タブを選択すると以下が表示されます。プライベートキーデータは、テキストの連続文字列としてではなく line-by-line、 として表示されることに注意してください。

    Key/Value タブで詳細が表示されているシークレット。
  3. 引き続き SFTP コネクタで使用するシークレットを保存する の手順 8 の手順を最後まで行ってください。

SFTP コネクタをテストします。

SFTP コネクタを作成した後、新しいコネクタを使用してファイルを転送する前にテストすることをお勧めします。

SFTP コネクタをテストするには
  1. https://console.aws.amazon.com/transfer/ で AWS Transfer Family コンソールを開きます。

  2. 左側のナビゲーション ウィンドウで、[コネクタ] を選択し、コネクタを選択します。

  3. [アクション] メニューから[テスト接続] を選択します。

    Transfer Family コンソールでは、SFTP コネクタが選択され、[接続テスト] の接続テストアクションが強調表示されます。

システムはテストが合格したかどうかを示すメッセージを返します。テストに失敗した場合、システムは失敗の理由に基づいたエラーメッセージを提供します。

SFTP コネクタのテスト接続パネルで、成功したテストが表示されています。
SFTP コネクタのテスト接続パネルで、失敗したテストが表示されています。エラーメッセージによれば、コネクタのアクセスロールが正しくないことが示されています。
注記

コネクタをテストするために API を使用するには、「TestConnection」 API ドキュメントを参照してください。