混乱した代理
Confused deputy problem、"混乱した代理"問題、混乱した使節の問題
AWS は、外部 ID を機密情報として扱いません。アクセスキーペアやパスワードなどの機密情報を AWS で作成した場合、それらを再び表示することはできません。ロールの外部 ID は、ロールを表示する權限を持つすべてのユーザーが表示できます。 Example Corp に AWS アカウントの IAM ユーザーとのその長期的認証情報へのアクセスを許可しないでください。代わりに、IAM ロールとその一時的なセキュリティ認證情報を使用します。IAM ロールは、第三者が長期的認證情報 (IAM ユーザーのアクセスキーなど) を共有することなくお客樣の AWS リソースにアクセスできるようにするメカニズムです。 特権の圍ひ込み
A が B を代理として C に作用する時
A は C に作用する capability を持たなければならない
A と B は C に作用する cabability X を共有する
IAM role の場合は、以下の組から得た AssumeRole
IAM role ARN
AWS は IAM role ARN は容易に知られるものとして扱ふ
B の AWS account。A が AssumeRole 元 AWS account 制限する
他の情報が漏洩しても、B を介さなければ使へない
sts:ExternalID
AWS は sts:ExternalID は容易と迄は謂へないものの漏洩に脆弱であるものとして扱ふ
別の D は capability X を僞造出來てはならない
X が複製或いは推測困難
X を複製或いは推測出來た(漏洩した)としても、B は D が X を使ふ事を拒否する
IAM role ARN と sts:ExternalID との組が顧客を越えて被ってはならない
sts:ExternalID の entropy が充分高ければ、sts:ExternalID が顧客を越えて被らないやうにしても好い
IAM role ARN は祕密でないし更に推測もされると前提すると
sts:ExternalID の entropy が充分高く推測困難だとしても、sts:ExternalID は祕密ではないので容易に複製され得る
e.g. 公開 Git repository にうっかり書き込んでしまふ、退職者
sts:ExternalID の entropy が低くても sts:ExternalID をユーザーが指定出來なければ、B を介した攻撃は出來ない
攻撃
D が A の capability X 用の情報を盗んで使ふ
對策 : C は B 以外からの capability X の生成を許さない
IAM role では、AssumeRole の出來る AWS account ID を IAM role に書き込む
D が A のcapability X 用の情報を盗んで、B に使はせる
對策 : B は A 以外の依賴で capability X を生成するのを拒否する
IAM role では、B は IAM role ARN と sts:ExternalID とが A 以外に重複しないやう檢査する
AWS は IAM role ARN は容易に知られるものとして扱ひ、sts:ExternalID は容易と迄は謂へないものの漏洩に脆弱であるものとして扱ふ
D は A の capability X 用の情報に類似の情報 Y を先に B に登錄しておく。A がそれに氣附かず Y を利用可能にすれば security 侵害が起きる。A が氣附かず Y を B に登錄しやうとすれば B に拒否される
對策 : capability X 用の情報の一部を B が發行し D が指定出來ないやうにする。B にも指定出來なく成る
IAM role では、sts:ExternalID を B が發行する