SFTP のための IAM ポリシーおよびロールの作成 - AWS Transfer for SFTP

SFTP のための IAM ポリシーおよびロールの作成

SFTP ユーザーを作成する際、ユーザーアクセスに関して多数の決定を行う必要があります。それには、ユーザーがどの Amazon S3 バケットにアクセスできるようにするか、各 S3 バケットのどの部分をアクセス可能にするか、ユーザーにどの権限を与えるか (たとえば、PUT または GET) といった決定が含まれます。

アクセスを設定するには、リソースベースの IAM ポリシーと、アクセス情報を提供する IAM ロールを作成します。

このプロセスの一環として、SFTP ユーザーに、ファイル操作のターゲットまたはソースである Amazon S3 バケットへのアクセスを提供します。これを行うには以下のような手順を実行します。手順については、後で詳しい説明があります。

  1. IAM ロールを作成し、その一環として AWS Transfer for SFTP サービスとの信頼関係を確立します。

  2. 新しい IAM ロールで新しい IAM ポリシーを作成します。このトピックの後半に、SFTP に使用して S3 バケットへのアクセスを可能にするサンプルポリシーがあります。

  3. 新しい IAM ポリシーを IAM ロールにアタッチします。

  4. (オプション) スコープダウンポリシーを作成してユーザーのアクセスをさらに制限します。このトピックの後半に、home ディレクトリへのユーザーアクセスを制限するためのスコープダウンポリシーのサンプルがあります。

以下で、このプロセスの詳しい実行方法を参照してください。

AWS Transfer for SFTP のための IAM ポリシーを作成するには、次の手順を実行します。

  1. https://console.aws.amazon.com/iam/ で IAM コンソールを開きます。

  2. ナビゲーションペインで [Roles (ロール)]、[Create role (ロールの作成)] の順に選択します。

    [Create role (ロールの作成)] ページで [AWS service (AWS サービス)] が選択されていることを確認します。

  3. [Transfer (転送)] を選択し、[Next: Permissions (次へ: アクセス権限)] を選択します。

  4. [Attach permissions policy (アクセス権限ポリシーのアタッチ)] セクションで、[Create policy (ポリシーの作成)] を選択します。

  5. [Create Policy (ポリシーの作成)] ページで、[JSON] タブを選択します。

  6. エディタが表示されたら、エディタの内容を IAM ロールにアタッチする IAM ポリシーで置き換えます。

    以下の 2 つのサンプル IAM ポリシーを使用できます。いずれかのポリシーをコピーしてエディタに貼り付け、ポリシーを保存して後のステップで使用します。

    以下のサンプルポリシーは、S3 バケットのオブジェクトへの読み取り/書き込みアクセスを付与します。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowListingOfUserFolder", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::bucket_name" ] }, { "Sid": "HomeDirObjectAccess", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObjectVersion", "s3:DeleteObject", "s3:GetObjectVersion" ], "Resource": "arn:aws:s3:::bucket_name/*" } ] }

    以下のサンプルポリシーは、ユーザーのアクセスを home ディレクトリのみに限定するスコープダウンポリシーです。

    注記

    スコープダウンポリシーで SFTP ユーザーを home ディレクトリにロックするためには、home ディレクトリに対して割り当てるパスが値 username を含んでいる必要があります。たとえば、username"bob" に設定した場合、home ディレクトリが "bob" を含む必要があります。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowListingOfUserFolder", "Action": [ "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::${transfer:HomeBucket}" ], "Condition": { "StringLike": { "s3:prefix": [ "Optional_path/${transfer:UserName}/*", "Optional_path/${transfer:UserName}" ] } } }, { "Sid": "HomeDirObjectAccess", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObjectVersion", "s3:DeleteObject", "s3:GetObjectVersion" ], "Resource": "arn:aws:s3:::${transfer:HomeDirectory}*" } ] }
  7. [Review policy (ポリシーの確認)] を選択してポリシーの名前と説明を入力し、[Create policy (ポリシーの作成)] を選択します。

次に IAM ロールを作成し、新しい IAM ポリシーをアタッチします。

IAM ロールを作成するには

  1. ナビゲーションペインで [ロール]、[ロールの作成] の順に選択します。

    [Create role (ロールの作成)] ページで [AWS service (AWS サービス)] が選択されていることを確認します。

  2. サービスリストから [Transfer (転送)] を選択し、[Next: Permissions (次へ: アクセス権限)] を選択します。これにより、AWS Transfer for SFTP と AWS の間で信頼関係が確立されます。

  3. [Attach permissions policies (アクセス権限ポリシーをアタッチする)] セクションで、先ほど作成したポリシーを選択し、[Next: Tags (次へ: タグ)] を選択します。

  4. (オプション) タグのキーと値を入力し、[Next: Review (次へ: レビュー)] を選択します。

  5. [Review (レビュー)] ページで新しいロールの名前と説明を入力し、[Create role (ロールの作成)] を選択します。

次に、AWS Transfer for SFTP と AWS の間に信頼関係を確立します。

信頼関係を確立するには

  1. IAM コンソールで、作成したロールを選択します。

  2. [Summary (概要)] ページで、[Trust relationships (信頼関係)] を選択し、続いて [Edit trust relationship (信頼関係の編集)] を選択します。

  3. [Edit Trust Relationship (信頼関係の編集)] エディタを使用して、アクセスポリシーの storagegatewaytransfer で置き換えます。編集されたアクセスポリシーは次のようになります。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "transfer.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  4. [信頼ポリシーの更新] を選択してアクセスポリシーを更新します。

これで、SFTP に対し、ユーザーの代理として AWS サービスを呼び出すことを許可する IAM ロールが作成できました。ロールには、SFTP ユーザーにアクセス権限を付与するための IAM ポリシーをアタッチしてあります。「開始方法」セクションで、このロールとポリシーを SFTP ユーザーに割り当てます。

このトピックですでに説明したとおり、オプションで、ユーザーによるアクセスをホームディレクトリのみに限定するスコープダウンポリシーも作成できます。スコープダウンポリシーの詳細については、「スコープダウンポリシーの作成」を参照してください。

IAM ロールの一般的な情報については、IAM ユーザーガイド の「AWS サービスにアクセス許可を委任するロールの作成」を参照してください。 S3 リソース用のリソースベースのポリシーの詳細については、Amazon Simple Storage Service 開発者ガイド の「Amazon S3 リソースへのアクセス権限の管理」を参照してください。