IAM ロールとポリシーを作成する - AWS Transfer Family

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

IAM ロールとポリシーを作成する

このトピックでは、 で使用できるポリシーとロールのタイプについて説明し AWS Transfer Family、ユーザーロールの作成プロセスを順を追って説明します。また、セッション ポリシーがどのように機能するかについて説明し、ユーザー ロールの例を示します。

AWS Transfer Family は、次のタイプのロールを使用します。

  • ユーザーロール - サービスマネージドユーザーが必要な Transfer Family リソースにアクセスできるようにします。 は、Transfer Family ユーザー のコンテキストでこのロールを AWS Transfer Family 引き受けますARN。

  • アクセスロール」 — 転送中の Amazon S3 ファイルのみへのアクセスを提供します。インバウンドAS2転送の場合、アクセスロールはアグリーメントに Amazon リソースネーム (ARN) を使用します。アウトバウンドAS2転送の場合、アクセスロールはコネクタARNに を使用します。

  • 呼び出しロール – サーバーのカスタム ID プロバイダーとして Amazon API Gateway で使用します。Transfer Family は、Transfer Family サーバー のコンテキストでこのロールを引き受けますARN。

  • ログ記録ロール – Amazon へのエントリのログ記録に使用されます CloudWatch。Transfer Family はこのロールを使用して、成功と失敗の詳細をファイル転送に関する情報とともに記録します。Transfer Family は、Transfer Family サーバー のコンテキストでこのロールを引き受けますARN。アウトバウンドAS2転送の場合、ログ記録ロールはコネクタ を使用しますARN。

  • 実行ロール」 — Transfer Family ユーザーがワークフローを呼び出して起動できるようにします。Transfer Family は、Transfer Family ワークフロー のコンテキストでこのロールを引き受けますARN。

これらのロールに加えて、セッション ポリシーを使用することもできます。セッション ポリシーは、必要に応じてアクセスを制限するために使用されます。これらのポリシーはスタンドアロンであることに注意してください。つまり、これらのポリシーをロールに追加することはできません。代わりに、セッション ポリシーを Transfer Family ユーザーに直接追加します。

注記

サービスで管理される Transfer Family ユーザーを作成する場合は、[ホーム フォルダーに基づいてポリシーを自動生成] を選択できます。これは、ユーザーのアクセスを自分のフォルダーに制限する場合に便利なショートカットです。また、セッション ポリシーの詳細と例を セッションポリシーの仕組み で確認できます。セッションポリシーの詳細については、IAM「 ユーザーガイド」の「セッションポリシー」を参照してください。

ユーザーロールの作成

ユーザーを作成する際には、ユーザーアクセスについて決定すべきことがいくつもあります。これらの決定には、ユーザーがアクセスできる Amazon S3 バケットまたは Amazon EFS ファイルシステム、各 Amazon S3 バケットのどの部分とファイルシステム内のどのファイルにアクセスできるか、およびユーザーが持つアクセス許可 ( PUTまたは など) が含まれますGET

アクセスを設定するには、そのアクセス情報を提供する ID ベースの AWS Identity and Access Management (IAM) ポリシーとロールを作成します。このプロセスの一環として、ファイルオペレーションのターゲットまたはソースである Amazon S3 バケットまたは Amazon ファイルEFSシステムへのアクセスをユーザーに付与します。これを行うには以下のような手順を実行します。手順については、後で詳しい説明があります。

ユーザーロールの作成
  1. のIAMポリシーを作成します AWS Transfer Family。これについては、「のIAMポリシーを作成するには AWS Transfer Family」で説明しています。

  2. IAM ロールを作成し、新しいIAMポリシーをアタッチします。例については、読み書きアクセスポリシーの例を参照してください。

  3. AWS Transfer Family とIAMロールの間に信頼関係を確立します。これについては、「信頼関係を確立するには」で説明しています。

次の手順では、IAMポリシーとロールを作成する方法について説明します。

のIAMポリシーを作成するには AWS Transfer Family
  1. でIAMコンソールを開きますhttps://console.aws.amazon.com/iam/

  2. ナビゲーションペインで ポリシーを選択してから ポリシーの作成を選択します。

  3. ポリシーの作成ページで、 JSONタブを選択します。

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

    読み書きアクセス権を付与するか、またはユーザーをホームディレクトリに制限できます。詳細については、「読み書きアクセスポリシーの例」を参照してください。

  5. [Review policy] (ポリシーの確認) を選択してポリシーの名前と説明を入力し、[Create policy] (ポリシーの作成) を選択します。

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

のIAMロールを作成するには AWS Transfer Family
  1. ナビゲーションペインで [Roles] (ロール) を選択してから [Create role] (ロールの作成) を選択します。

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

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

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

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

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

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

信頼関係を確立するには
注記

この例では、ArnLikeArnEquals の両方を使用しています。これらは機能的には同じなので、ポリシーを作成する際にはどちらを使用してもかまいません。Transfer Family ドキュメントでは、条件にワイルドカード文字が含まれる場合は ArnLikeを使用し、完全一致の条件を示す場合は ArnEquals を使用しています。

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

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

  3. [Edit Trust Relationship] (信頼関係の編集) エディタでサービス"transfer.amazonaws.com" であることを確認します。アクセスポリシーは次のように表示されます。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "transfer.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

    Confused Deputy Problem (混乱した使節の問題) から自分を守るために、aws:SourceAccount および aws:SourceArn の条件キーを使用することをお勧めします。ソースアカウントはサーバーの所有者であり、ソースARNはユーザーのARN所有者です。例:

    "Condition": { "StringEquals": { "aws:SourceAccount": "account_id" }, "ArnLike": { "aws:SourceArn": "arn:aws:transfer:region:account_id:user/*" } }

    ユーザー アカウント内のサーバーではなく特定のサーバーに制限したい場合は、ArnLike 条件を使用することもできます。例:

    "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:transfer:region:account-id:user/server-id/*" } }
    注記

    上記の例では、各 を置き換えます。user input placeholder 独自の情報。

    混乱した代理人問題の詳細とその他の例については、サービス間の混乱した代理の防止 を参照してください。

  4. [Update Trust Policy] (信頼ポリシーの更新) を選択してアクセスポリシーを更新します。

これで、 がユーザーに代わって AWS サービスを AWS Transfer Family 呼び出すIAMロールが作成されました。ユーザーにアクセスを許可するために作成したIAMポリシーをロールにアタッチしました。「AWS Transfer Family サーバーエンドポイントの開始方法」セクションで、このロールとポリシーを 1 人以上のユーザーに割り当てます。

以下の資料も参照してください。

セッションポリシーの仕組み

管理者がロールを作成する場合、そのロールには、複数のユースケースやチームメンバーをカバーする広範な権限が含まれることがよくあります。管理者がコンソール URLを設定すると、セッションポリシー を使用して、結果のセッションのアクセス許可を減らすことができます。例えば、読み取り/書き込みアクセス でロールを作成する場合、ユーザーのアクセスをホームディレクトリのみに制限URLする を設定できます。

セッションポリシーは、ロールまたはユーザーの一時セッションをプログラムで作成する際にパラメータとして渡す高度なポリシーです。セッションポリシーは、ユーザーをロックするのに便利で、オブジェクトのプレフィックスにユーザー名が含まれるバケツの一部だけにアクセスできるようにします。次の図は、セッションポリシーの許可が、セッションポリシーとリソースベースポリシーの交差点、およびセッションポリシーと ID ベースポリシーの交差点であることを示しています。

セッション ポリシーのアクセス許可のベン図。リソース ベースのポリシー、アイデンティティ ベースのポリシー、およびセッション ポリシーが交差する部分に権限がどのように有効に存在するかを示します。

詳細については、「 ユーザーガイド」の「セッションポリシー」を参照してください。 IAM

では AWS Transfer Family、セッションポリシーは Amazon S3 との間で転送する場合にのみサポートされます。以下のサンプルポリシーは、ユーザーのアクセスを home ディレクトリのみに限定するセッションポリシーです。次の点に注意してください。

  • GetObjectACLおよびPutObjectACLステートメントは、クロスアカウントアクセスを有効にする必要がある場合にのみ必要です。つまり、Transfer Family サーバーは、別のアカウントのバケットにアクセスする必要があります。

  • セッションポリシーの最大長は 2048 文字です。詳細については、 APIリファレンスの「 CreateUserアクションのポリシーリクエストパラメータ」を参照してください。

  • Amazon S3 バケットが AWS Key Management Service (AWS KMS) を使用して暗号化されている場合は、ポリシーに追加のアクセス許可を指定する必要があります。詳細については、「Amazon S3 でのデータ暗号化」を参照してください。

{ "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": "HomeDirObjectAccess", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:GetObjectVersion", "s3:GetObjectACL", "s3:PutObjectACL" ], "Resource": "arn:aws:s3:::${transfer:HomeDirectory}/*" } ] }
注記

前述のポリシーの例では、ユーザーのホームディレクトリがディレクトリであることを示すために、末尾のスラッシュを含むように設定されていることを前提としています。一方、ユーザーの HomeDirectory の末尾にスラッシュを付けない場合、それをポリシーの一部として含める必要があります。

前のポリシー例では、transfer:HomeFoldertransfer:HomeBucket、およびtransfer:HomeDirectory ポリシーパラメータの使用に注目してください。これらのパラメータは、 HomeDirectoryおよび で説明HomeDirectoryされているように、ユーザー用に設定された に設定されますAPI Gateway メソッドの実装。これらのパラメータには、次のような定義があります。

  • transfer:HomeBucket パラメータは HomeDirectory の 1 つ目のコンポーネントに置き換わります。

  • transfer:HomeFolder パラメータは HomeDirectory パラメータの残り部分に置き換わります。

  • transfer:HomeDirectory パラメータには、Resourceステートメントの S3 Amazon リソースネーム (/) の一部として使用できるように、先頭のスラッシュ (ARN) が削除されました。

注記

論理ディレクトリを使用する場合(つまり、ユーザーの homeDirectoryTypeLOGICAL である場合)、これらのポリシーパラメータ(HomeBucketHomeDirectory、および HomeFolder)はサポートされません。

たとえば、Transfer Family ユーザー用に設定された HomeDirectory パラメータは /home/bob/amazon/stuff/ です。

  • transfer:HomeBucket/home に設定されます。

  • transfer:HomeFolder/bob/amazon/stuff/ に設定されます。

  • transfer:HomeDirectoryhome/bob/amazon/stuff/ になります。

1 つ目の "Sid" は、/home/bob/amazon/stuff/ から始まるすべてのディレクトリの一覧表示をユーザーに許可します。

2 つ目の "Sid" は、ユーザーの putget のアクセス権をその同じパスである /home/bob/amazon/stuff/ に限定します。

読み書きアクセスポリシーの例

Amazon S3 バケットへの読み書きアクセス権の付与

次の Amazon S3 バケット内のオブジェクトへの読み取り/書き込みアクセス AWS Transfer Family を許可するポリシーの例。

次の点に注意してください。

  • 置換 DOC-EXAMPLE-BUCKET Amazon S3 バケットの名前。

  • GetObjectACLおよびPutObjectACLステートメントは、クロスアカウントアクセスを有効にする必要がある場合にのみ必要です。つまり、Transfer Family サーバーは、別のアカウントのバケットにアクセスする必要があります。

  • GetObjectVersion および DeleteObjectVersion ステートメントは、アクセスされている Amazon S3 バケットでバージョニングが有効になっている場合にのみ必要です。

    注記

    バケットのバージョニングを有効にしたことがある場合は、Amazon S3 でバージョニングを停止するだけで、完全にオフにすることはできないため、これらのアクセス許可が必要です。詳細については、「Unversioned」、「バージョニング対応」、「バージョニングが停止されたバケット」を参照してください。

{ "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/*" } ] }
Amazon ファイルシステム内のファイルへのアクセスをEFSファイルシステムに許可する

注記

ポリシーに加えて、POSIXファイルアクセス許可が適切なアクセス許可を付与していることを確認する必要があります。詳細については、Amazon Elastic File System File System ユーザーガイド」の「Network File System (NFS) レベルでのユーザー、グループ、アクセス許可の操作」を参照してください。

次のポリシー例では、Amazon ファイルシステム内のファイルへのルートEFSファイルシステムアクセスを許可します。

注記

次の例では、 を置き換えます。region 自分のリージョンで、account-id ファイルが属するアカウント、および file-system-id Amazon Elastic File System (Amazon EFS) の ID。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "RootFileSystemAccess", "Effect": "Allow", "Action": [ "elasticfilesystem:ClientRootAccess", "elasticfilesystem:ClientMount", "elasticfilesystem:ClientWrite" ], "Resource": "arn:aws:elasticfilesystem:region:account-id:file-system/file-system-id" } ] }

次のポリシー例では、Amazon ファイルシステム内のファイルへのアクセスをユーザーEFSファイルシステムに許可します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "UserFileSystemAccess", "Effect": "Allow", "Action": [ "elasticfilesystem:ClientMount", "elasticfilesystem:ClientWrite" ], "Resource": "arn:aws:elasticfilesystem:region:account-id:file-system/file-system-id" } ] }