サービス間の混乱した代理の防止 - AWS Transfer Family

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

サービス間の混乱した代理の防止

混乱した代理問題は、アクションを実行するためのアクセス許可を持たないエンティティが、より特権のあるエンティティにアクションの実行を強制できてしまう場合に生じる、セキュリティ上の問題です。では AWS、サービス間でなりすましを行うと、混乱した代理問題が発生する可能性があります。サービス間でのなりすましは、あるサービス (呼び出し元サービス) が、別のサービス (呼び出し対象サービス) を呼び出すときに発生する可能性があります。呼び出す側サービスは、そのアクセス許可を使用して、他の顧客のリソースにアク セスするために、他の方法ではアクセス許可を持っていないはずの操作を行うことができます。これを防ぐために、 AWS には、アカウント内のリソースへのアクセス権が付与されたサービスプリンシパルですべてのサービスのデータを保護するために役立つツールが用意されています。この問題の詳細な説明については、「IAM ユーザーガイド」の「混乱した代理問題」を参照してください。

リソースポリシーで aws:SourceArnおよび aws:SourceAccount グローバル条件コンテキストキーを使用して、 AWS Transfer Family がリソースに対して持つアクセス許可を制限することをお勧めします。両方のグローバル条件コンテキストキーを同じポリシーステートメントで使用する場合は、aws:SourceAccount 値と、aws:SourceArn 値に含まれるアカウントが、同じアカウント ID を示している必要があります。

混乱した代理問題を回避するための最も効果的な方法は、許可するリソースに正確な Amazon リソースネーム (ARN) を使用することです。複数のリソースを指定する場合は、ARNの未知の部分にワイルドカード文字(*)を使用したaws:SourceArnグローバルコンテキスト条件キーを使用する。例えば arn:aws:transfer::region::account-id:server/* です。

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

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

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

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

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

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

詳細については、「 IAM ユーザーガイド」の「IAM のポリシーとアクセス許可」を参照してください。

注記

次の例では、ユーザー入力プレースホルダーをユーザー自身の情報で置き換えます。

注記

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

AWS Transfer Family ユーザーロールのサービス間の混乱した代理の防止

次のポリシーの例は、アカウント内の任意のサーバーのすべてのユーザーにロールを引き受けることを許可します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "transfer.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "account-id" }, "ArnLike": { "aws:SourceArn": "arn:aws:transfer:region:account-id:user/*" } } } ] }

次のポリシーの例は、特定のサーバーのすべてのユーザーにロールを引き受けることを許可します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "transfer.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "account-id" }, "ArnEquals": { "aws:SourceArn": "arn:aws:transfer:region:account-id:user/server-id/*" } } } ] }

次のポリシーの例は、特定のサーバーの特定のユーザーにロールを引き受けることを許可します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "transfer.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:transfer:region:account-id:user/server-id/user-name" } } } ] }

AWS Transfer Family ワークフローロールのサービス間の混乱した代理の防止

次のポリシーの例は、アカウント内のすべてのワークフローでロールを引き受けることを許可します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "transfer.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "account-id" }, "ArnLike": { "aws:SourceArn": "arn:aws:transfer:region:account-id:workflow/*" } } } ] }

次のポリシーの例は、特定のワークフローでロールを引き受けることを許可します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "transfer.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:transfer:region:account-id:workflow/workflow-id" } } } ] }

AWS Transfer Family のログ記録と呼び出しロールのサービス間の混乱した代理の防止

注記

以下の例は、ロギングロールと呼び出しロールの両方で使用できます。

これらの例では、サーバーにワークフローがアタッチされていない場合、ワークフローの ARN 詳細を削除できます。

次のログ記録/呼び出しポリシーの例では、アカウント内のすべてのサーバー (およびワークフロー) がロールを引き受けることを許可します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAllServersWithWorkflowAttached", "Effect": "Allow", "Principal": { "Service": "transfer.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "account-id" }, "ArnLike": { "aws:SourceArn": [ "arn:aws:transfer:region:account-id:server/*", "arn:aws:transfer:region:account-id:workflow/*" ] } } } ] }

次のログ記録/呼び出しポリシーの例では、特定のサーバー (およびワークフロー) がロールを引き受けることを許可します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowSpecificServerWithWorkflowAttached", "Effect": "Allow", "Principal": { "Service": "transfer.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "account-id" }, "ArnEquals": { "aws:SourceArn": [ "arn:aws:transfer:region:account-id:server/server-id", "arn:aws:transfer:region:account-id:workflow/workflow-id" ] } } } ] }