このトピックでは、外部IDのシナリオについて説明します。 このトピックでは、外部IDの仕組みと外部IDの使用方法についても説明します。
シナリオ
場合によっては、ログ監査、コスト管理、セキュリティ監視などのシナリオで、サードパーティベンダーがクラウドリソースを管理する必要があります。 これらのシナリオでは、企業がサードパーティベンダーにクラウドリソースへのアクセス権限を付与するため、クロスアカウントアクセスが必要になります。 Alibaba Cloud Resource Access Management (RAM) は、AssumeRole操作を提供して、クロスアカウントアクセスを実装します。
サードパーティベンダーは、複数の顧客の複数のAlibaba Cloudアカウントにアクセスする必要がある場合があります。 攻撃者がサードパーティベンダーをだまし、ベンダーが攻撃者を顧客と見なした場合、実際の顧客は混乱した代理問題に遭遇します。 混乱した代理の問題は、信頼できるエンティティが悪意のあるエンティティにだまされたり、不正な操作を実行したりしたときに発生するセキュリティの問題です。 悪意のあるエンティティが信頼できるエンティティをだまして不正アクセスを得た後、悪意のあるエンティティは混乱した代理人になります。 Alibaba Cloud RAMは、混乱した副問題を防ぐために外部IDを提供します。 詳細については、「AssumeRole」をご参照ください。
外部IDの仕組み
サードパーティベンダーは、顧客ごとに一意の外部IDを生成します。 各外部IDはランダムな文字列です。
顧客がサードパーティのベンダーから外部IDを取得した後、顧客は、顧客のリソースにアクセスするためにサードパーティのベンダーによって引き受けられるロールの信頼ポリシーに外部IDを追加します。
サードパーティのベンダーがAssumeRole操作を呼び出してロールを引き受ける場合、サードパーティのベンダーは顧客用に生成される外部IDを指定する必要があります。 外部IDが提供されない場合、または提供された外部IDが無効である場合、呼び出しは失敗します。
手順
この例では、サードパーティベンダーはDeputy、ベンダーのAlibaba CloudアカウントはDeputy_Account、顧客のAlibaba CloudアカウントはCustomer_Account、ベンダーが顧客に提供する外部IDはabcd1234です。 代理はDeputy_Accountを使用してCustomer_Accountのリソースにアクセスする必要があります。
顧客は、Customer_Account内にRAMロールを作成し、RAMロールの信頼できるエンティティとしてDeputy_Accountを選択し、RAMロールに必要な権限を付与します。
詳細については、「信頼できるAlibaba CloudアカウントのRAMロールの作成」および「RAMユーザーへの権限付与」をご参照ください。
顧客は、
ExternalId
条件を追加してRAMロールの信頼ポリシーを変更します。 信頼できるエンティティは、エンティティが外部IDとしてabcd1234
を提供する場合にのみ、RAMロールを引き受けることができます。{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "RAM": [ "acs:ram::<deputy-accountId>:root" ] }, "Condition": { "StringEquals": { "sts:ExternalId": "abcd1234" } } } ], "Version": "1" }
詳細については、「RAMロールの信頼ポリシーの編集」をご参照ください。
DeputyがRAMロールを引き受けてCustomer_Accountのリソースにアクセスすると、Deputyは
abcd1234
を提供します。この例では、Deputyはリクエストパラメーターで
ExternalId
パラメーターをabcd1234
に設定し、AssumeRole操作を呼び出します。 詳細については、「AssumeRole」をご参照ください。Deputyは、Customer_Accountのリソースにアクセスするために生成されるSecurity Token Service (STS) トークンを使用します。