混乱した代理
confused deputy problem。"混乱した代理"問題。混乱した使節の問題
AWS は、外部 ID を機密情報として扱いません。アクセスキーペアやパスワードなどの機密情報を AWS で作成した場合、それらを再び表示することはできません。ロールの外部 ID は、ロールを表示する權限を持つすべてのユーザーが表示できます。 Example Corp に AWS アカウントの IAM ユーザーとのその長期的認證情報へのアクセスを許可しないでください。代わりに、IAM roleとその一時的なセキュリティ認證情報を使用します。IAM roleは、第三者が長期的認證情報 (IAM ユーザーのアクセスキーなど) を共有することなくお客樣の AWS リソースにアクセスできるようにするメカニズムです。 特権の圍ひ込み
A が B を代理として C に作用する時
A は C に作用する capability を持たなければならない
A と B は C に作用する cabability X を共有する
IAM role ARN
AWS は IAM role ARN は容易に知られるものとして扱ふ B の AWS account。A が AssumeRole 元 AWS account 制限する
他の情報が漏洩しても、B を介さなければ使へない
sts:ExternalID
AWS は sts:ExternalID は容易と迄は謂へないものの漏洩に脆弱であるものとして扱ふ code:mmd
sequenceDiagram
actor User
participant Agent
participant AWS
Agent ->> User : sts:ExternalIDを生成
User ->> AWS : sts:ExternalIDを含み、AgentをPrincipalsに指定したIAM roleを作成
AWS -->> User : IAM role ARN
User ->> Agent : IAM role ARNを設定して、AWSを操作する樣に依賴
Agent ->> AWS : IAM role ARNとsts:ExternalIDを指定して操作
AWS -->> AWS : IAM roleに含まれるPrincipalsがAgentであり、かつsts:ExternalIDが一致するのを確認
AWS -->> AWS : 操作を實行
別の 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 の生成を許さない
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 にも指定出來なく成る