翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS OpsWorks スタックでのサービス間の混乱した代理の防止
重要
この AWS OpsWorks Stacks サービスは 2024 年 5 月 26 日にサポート終了となり、新規および既存のお客様の両方で無効になっています。できるだけ早くワークロードを他のソリューションに移行することを強くお勧めします。移行についてご質問がある場合は、 AWS re:Post
混乱した代理問題は、アクションを実行するためのアクセス許可を持たないエンティティが、より特権のあるエンティティにアクションの実行を強制できてしまう場合に生じる、セキュリティ上の問題です。では AWS、サービス間のなりすましにより、混乱した代理問題が発生する可能性があります。サービス間でのなりすましは、1 つのサービス (呼び出し元サービス) が、別のサービス (呼び出し対象サービス) を呼び出すときに発生する可能性があります。呼び出し元サービスは、本来ならアクセスすることが許可されるべきではない方法でその許可を使用して、別のお客様のリソースに対する処理を実行するように操作される場合があります。これを防ぐため、 AWS では、アカウント内のリソースへのアクセス権が付与されたサービスプリンシパルですべてのサービスのデータを保護するために役立つツールを提供しています。
スタックアクセスポリシーで aws:SourceArn
および aws:SourceAccount
グローバル条件コンテキストキーを使用して、 AWS OpsWorks スタックが別のサービスに付与するアクセス許可をスタックに制限することをお勧めします。aws:SourceArn
の値に Amazon S3 バケット ARN などのアカウント ID が含まれていない場合は、両方のグローバル条件コンテキストキーを使用して、アクセス許可を制限する必要があります。同じポリシーステートメントでこれらのグローバル条件コンテキストキーの両方を使用し、アカウント ID にaws:SourceArn
の値が含まれていない場合、aws:SourceAccount
値と aws:SourceArn
値の中のアカウントには、同じアカウント ID を使用する必要があります。クロスサービスのアクセスにスタックを 1 つだけ関連付けたい場合は、aws:SourceArn
を使用します。クロスサービスが使用できるように、アカウント内の任意のスタックを関連づけたい場合は、aws:SourceAccount
を使用します。
の値は、 AWS OpsWorks スタックの ARN aws:SourceArn
である必要があります。
混乱した代理問題から保護するための最も効果的な方法は、 AWS OpsWorks
スタックの完全な ARN を指定しながら、 aws:SourceArn
グローバル条件コンテキストキーを使用することです。完全な ARN が不明な場合や、複数のサーバー ARN 場合には、ARN の不明な部分にワイルドカード (*
) を含む aws:SourceArn
グローバルコンテキスト条件キーを使用します。例えば arn:aws:
です。servicename
:*:123456789012
:*
次のセクションでは、 AWS OpsWorks スタックで aws:SourceArn
および aws:SourceAccount
グローバル条件コンテキストキーを使用して、混乱した代理問題を回避する方法を示します。
AWS OpsWorks スタックでの混乱した代理攻撃の防止
このセクションでは、 スタックで AWS OpsWorks 混乱した代理攻撃を防ぐ方法と、 スタックへのアクセスに使用している IAM ロールにアタッチできるアクセス許可ポリシーの例について説明します AWS OpsWorks 。セキュリティのベストプラクティスとして、aws:SourceArn
と aws:SourceAccount
の条件キーを IAM ロールとほかのサービスとの信頼関係に追加することをお勧めします。信頼関係により、 AWS OpsWorks スタックは、スタックスタックの作成または管理に必要な他の サービスでアクションを実行するロール AWS OpsWorks を引き受けることができます。
信頼関係を編集するために、aws:SourceArn
と aws:SourceAccount
条件キーを追加するには
IAM コンソール (https://console.aws.amazon.com/iam/
) を開きます。 -
左のナビゲーションペインで、[ロール] を選択します。
-
検索ボックスで、 AWS OpsWorks スタックへのアクセスに使用するロールを検索します。 AWS マネージドロールは です
aws-opsworks-service-role
。 -
そのロールの 概要 ページで、信頼関係 タブを選択します。
-
信頼関係 タブで、信頼ポリシーの編集 を選択します。
-
[信頼ポリシーの編集] ページで、少なくとも
aws:SourceArn
やaws:SourceAccount
条件キーの一つをポリシーに追加します。を使用してaws:SourceArn
、クロスサービス (Amazon EC2 など) と AWS OpsWorks スタック間の信頼関係を、より制限の厳しい特定の AWS OpsWorks スタックスタックに制限します。aws:SourceAccount
を追加して、クロスサービスと AWS OpsWorks スタック間の信頼関係を、制限の少ない特定のアカウントのスタックに制限します。次に例を示します。両方の条件キーを使用する場合、アカウント ID は同じでなければならないことに注意してください。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "opsworks.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "ArnEquals": { "arn:aws:opsworks:us-east-2:123456789012:stack/EXAMPLEd-5699-40a3-80c3-22c32EXAMPLE/" } } } ] }
-
条件キーの追加が終了したら、 [更新ポリシー] を選択します。
aws:SourceArn
と aws:SourceAccount
を使用してスタックへのアクセスを制限するロールのその他の例を以下に示します。
例: 特定のリージョンのスタックへのアクセス
次のロール信頼関係ステートメントは、米国東部 (オハイオ) リージョン () のすべての AWS OpsWorks スタックスタックにアクセスしますus-east-2
。リージョンは aws:SourceArn
の ARN 値で指定されていますが、スタック ID の値はワイルドカード (*) であることに注意してください。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "opsworks.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "ArnEquals": { "aws:SourceArn": "arn:aws:opsworks:us-east-2:123456789012:stack/*" } } } ] }
例: aws:SourceArn
に複数のスタック ARN の追加
次の例では、アカウント ID 123456789012 の 2 つの AWS OpsWorks スタックスタックの配列へのアクセスを制限します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "opsworks.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "ArnEquals": { "aws:SourceArn": [ "arn:aws:opsworks:us-east-2:123456789012:stack/
unique_ID1
", "arn:aws:opsworks:us-east-2:123456789012:stack/unique_ID2
" ] } } } ] }