ユーザー設定の編集 - AWS Transfer for SFTP

ユーザー設定の編集

AWS SFTP マネジメントコンソールでユーザーのプロパティを編集できます。コンソールの [Server Configuration] ページで、ユーザーのロール、ポリシー、およびホームディレクトリを編集できます。また、Secure Shell(SSH) パブリックキーとタグを追加および削除することもできます。

ユーザーのプロパティを編集するには、以下の手順を参照してください。AWS SFTP の IAM ポリシーの作成方法については、「IAM ポリシーを使用した AWS SFTP へのアクセスの制御」を参照してください。

注記

ユーザーを追加した後は、ユーザー名を編集できません。ユーザーのユーザー名を変更するには、新しいユーザー名で新しいユーザーを追加し、不要になったユーザーを削除します。

ユーザーのプロパティを編集するには

  1. AWS マネジメントコンソール にサインインし、AWS SFTP コンソール (https://console.aws.amazon.com/transfer/) を開きます。

  2. ナビゲーションペインで、[Servers] を選択します。

  3. [Server Configuration] ページの [Users] セクションでユーザー名を選択すると、以下のように [User Configuration] ページが表示されます。

  4. [Add SSH public key] を選択して、新しい SSH パブリックキーをユーザーに追加します。または、リストで既に割り当て済みの SSH パブリックキーを選択し、[Delete] を選択してユーザーの定義からキーを削除します。

    SSH キーは、カスタム認証方法とも呼ばれる Amazon API Gateway 認証方法を使用する SFTP サーバーでのみ使用されます。SSH キーペアを生成する方法については、「SSH キーの生成」を参照してください。

  5. [Manage tags] を選択して、このユーザーに関連付けられている既存のタグを追加、削除、または変更します。

  6. 次に示すように、[Edit] を選択して、[Edit Configuration] ページを表示します。

  7. (オプション) [Access Info] で IAM ロールを選択して、現在ユーザーに割り当てられている AWS Identity and Access Management (IAM) ロールを変更します。

    AWS SFTP に必要な IAM ロールを作成する方法については、「SFTP のための IAM ポリシーおよびロールの作成」を参照してください。AWS SFTP の IAM ロールには、Amazon S3 バケットへのアクセスを提供する IAM ポリシーが含まれます。このロールには、AWS SFTP との信頼関係 (アクセス権限ポリシーで定義) を作成する別の IAM ポリシーも含まれます。

  8. (オプション) 新しいポリシーオプションを選択して、[Policy Info (ポリシー情報)] を変更します。

  9. (オプション) AWS SFTP によって転送されたデータを保存するために使用する新しい Amazon S3 バケットを選択して、[ホームディレクトリ] を変更します。ユーザーが SFTP クライアントを使用してログインしたときにアクセスする ディレクトリへのパスを入力します。

    注記

    ユーザーのユーザー名が含まれているディレクトリパスを選択することをお勧めします。

    このパラメータを空のままにした場合、Amazon S3 バケットの root ディレクトリが使用されます。ロールがバケットのルートへのアクセスを提供することを確認します。

  10. [保存] を選択して変更を保存します。

IAM ポリシーを使用した AWS SFTP へのアクセスの制御

AWS Identity and Access Management (IAM) ポリシーを使用して AWS SFTP リソースへのユーザーのアクセスを制御できます。IAM ポリシーは、リソースへの特定のレベルのアクセスを許可する通常は JSON 形式のステートメントです。IAM ポリシーを使用して、SFTP ユーザーの実行を許可するファイル操作を定義します。また、IAM ポリシーを使用して、ユーザーにアクセス権を与える Amazon S3 バケットを定義します。ユーザーに対してこれらのポリシーを定義するには、IAM ポリシーとこれに関連付けられた信頼関係を含んでいる IAM ロールを AWS SFTP に対して作成します。

各 SFTP ユーザーには IAM ロールが割り当てられます。ユーザーが SFTP サーバーにログインすると、AWS SFTP では IAM ロールがユーザーにマッピングされたと見なします。Amazon S3 バケットにユーザーアクセスを提供する IAM ロールの作成方法については、以下を参照してください。ロールの作成およびアクセス許可の委任については、『IAM ユーザーガイド』の「AWS のサービスにアクセス許可を委任するロールの作成」を参照してください。

AWS SFTP で使用される IAM ロールのタイプは、サービスロールと呼ばれます。

Amazon S3 バケットへの読み取りと書き込みアクセス権限の許可

以下では、特定の Amazon S3 バケットへの読み取りおよび書き込みアクセスを許可する IAM ポリシーの作成方法について説明します。この IAM ポリシーを持つ IAM ロールを SFTP ユーザーに割り当てると、指定された S3 バケットへの読み取り/書き込みアクセスがそのユーザーに付与されます。

以下のポリシーでは、Amazon S3 バケットへのプログラムによる読み取りおよび書き込みアクセスを提供します。

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

ListBucket アクションには、バケット自体に対する権限が必要です。PUTGET、および DELETE アクションにはオブジェクトのアクセス権限が必要です。さまざまなエンティティが存在するため、さまざまな Amazon リソースネーム (ARN) を使用してこれらを指定します。

バケットが AWS Key Management Service (AWS KMS) 暗号化に対して有効化されている場合は、ポリシーで追加のアクションを有効化する必要があります。AWS KMS の詳細については、「AWS Key Management Service とは」を参照してください。

さらに指定した S3 バケットの home ディレクトリのみにユーザーのアクセス権を制限するには、「スコープダウンポリシーの作成」を参照してください。

スコープダウンポリシーの作成

スコープダウンポリシーは、S3 バケットの特定の部分に AWS SFTP ユーザーを制限する AWS Identity and Access Management (IAM) ポリシーです。これを行うには、リアルタイムでアクセスを評価します。

S3 バケットの特定の部分への同じアクセス権をユーザーのグループに付与する必要がある場合は、スコープダウンポリシーを使用できます。たとえば、あるユーザーのグループが home ディレクトリのみにアクセスする必要があるとします。そのユーザーのグループは同じ IAM ロールを共有します。

スコープダウンポリシーを作成するには、以下の IAM ポリシーのポリシー変数を使用します。

  • ${transfer:HomeBucket}

  • ${transfer:HomeDirectory}

  • ${transfer:HomeFolder}

  • ${transfer:UserName}

注記

一覧表示されている変数を IAM ロールの定義のポリシー変数として先に使用することはできません。このような変数は、IAM ポリシーで作成してから、ユーザーの設定時に直接指定します。また、スコープダウンポリシーの ${aws:Username} 変数を使用することはできません。この変数は IAM ユーザー名を参照し、AWS SFTP に必要なユーザー名を参照しません。

スコープダウンポリシーの例を、以下のコードの例に示します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowListingOfUserFolder", "Action": [ "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::${transfer:HomeBucket}" ], "Condition": { "StringLike": { "s3:prefix": [ "${transfer:HomeFolder}/*", "${transfer:HomeFolder}" ] } } }, { "Sid": "AWSTransferRequirements", "Effect": "Allow", "Action": [ "s3:ListAllMyBuckets", "s3:GetBucketLocation" ], "Resource": "*" }, { "Sid": "HomeDirObjectAccess", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObjectVersion", "s3:DeleteObject", "s3:GetObjectVersion", "s3:GetObjectACL", "s3:PutObjectACL" ], "Resource": "arn:aws:s3:::${transfer:HomeDirectory}*" } ] }

前述のポリシーが使用されている場合、ユーザーがログインすると、ユーザーはホームディレクトリにあるオブジェクトにのみアクセスできます。接続時には、AWS SFTP によってこれらの変数とユーザーに該当する値が置き換えられます。これによって、同じポリシードキュメントを複数のユーザーに容易に適用できます。この方法により、IAM ロールのオーバヘッドと、Amazon S3 バケットへのユーザーのアクセスを管理するためのポリシー管理が軽減されます。

また、スコープダウンポリシーを使用することで、ビジネス要件に基づいて、ユーザーごとにアクセス権をカスタマイズできます。詳細については、IAM ユーザーガイドの「AssumeRole、AssumeRoleWithSAML、AssumeRoleWithWebIdentity のアクセス権限」を参照してください。

注記

AWS SFTP によって、ポリシーの ARN (Amazon リソースネーム) ではなく、ポリシー JSON が保存されます。したがって、IAM コンソールでポリシーを変更する場合は、AWS SFTP コンソールに戻り、最新のポリシーコンテンツでユーザーを更新する必要があります。[User configuration (ユーザーの設定)] セクションの [Policy Info (ポリシー情報)] タブで、ユーザーを更新できます。詳細については、「ユーザー設定の編集」を参照してください。

CLI を使用する場合は、次のコマンドを使用してポリシーを更新できます。

aws transfer update-user --server-id server --user-name user --policy \ "$(aws iam get-policy-version --policy-arn policy --version-id version --output json)"

ユーザーによる S3 バケットでのディレクトリの作成を無効にする

ユーザーによる Amazon S3 バケットでのディレクトリの作成を無効にできます。これを行うには、s3:PutObject アクションを許可するが、キーが「/」(バックスラッシュ) で終わるときはこのアクションを拒否する IAM ポリシーを作成します。

次のポリシー例では、ユーザーに S3 バケットへのファイルのアップロードが許可されますが、このバケットでのディレクトリの作成は許可されません。つまり、S3 バケットでは mkdir コマンドが拒否されます。

{ "Sid":"DenyMkdir", "Action":[ "s3:PutObject" ], "Effect":"Deny", "Resource":"arn:aws:s3:::my-sftp-bucket/*/" }