0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

IAM Role はなぜ Principal なのか〜 RBAC の Role と混同すると悩む話 〜

Posted at

🧠 AI生成のドキュメント

本文書はAI生成のドキュメントです。AIとの対話でできた、役に立つ情報をブログ形式に変換して蓄積していきます。

IAM Role はなぜ Principal なのか

AWS IAM をある程度触っていると、こんな違和感を持ったことはないだろうか。

  • IAM の Role が Principal になる
  • User も Service も Role を「Assume」する
  • 認可は Role を中心に行われている

RBAC(Role-Based Access Control)をちゃんと知っている人ほど、
この設計に 強烈な違和感を覚える。

この記事では、その違和感の正体を
RBAC の Role と IAM Role の違いから整理し、
なぜ IAM が「Role = Principal」という設計を採用しているのかを説明する。


RBAC における「Role」とは何か

まず、原典的な RBAC(NIST RBAC)を思い出す。

User → Role → Permission
  • User が主体
  • Role は 権限のグルーピング
  • Role 自体は主体ではない

Role はあくまで「属性」や「帽子」であり、
認可の主体(Principal)は User である。

多くの Web アプリや業務システムは、このモデルを採用している。


IAM を見ると何が起きているか

IAM を RBAC の感覚で見ると、こう見える。

  • Role が Principal?
  • User はどこ?
  • Service も Role を使う?

実際、IAM では以下が成り立つ。

  • IAM User も Principal になれる
  • IAM Role も Principal になれる
  • 認可の中心は Role

これは RBAC の常識とは明確に異なる。


違和感の正体

違和感の正体はこれ。

IAM の Role は、RBAC の Role ではない

名前が同じなだけで、責務がまったく違う


IAM Role の正体

IAM Role は次の特徴を持つ。

  • 認証情報を持たない
  • 自分では何も実行できない
  • 権限(ポリシー)が直接アタッチされる
  • User や Service が「引き受ける」

つまり IAM Role は、

「権限そのもの」を表す抽象的な主体

である。


IAM における Principal とは何か

IAM の認可評価は、概念的には次の形をしている。

Can(Principal, Action, Resource, Context)?

ここで重要なのは、

  • 認可の評価軸は Principal
  • Principal に紐づくポリシーだけが評価される

AssumeRole が起きた瞬間、

  • User / Service の違いは消え
  • Role が Principal になる

「誰が使ったか」はどこに行くのか

User や Service の情報は消えるわけではない。

  • STS セッション
  • CloudTrail
  • Condition(aws:PrincipalTag など)

といった Context / 監査情報として扱われる。

IAM は意図的に次を分離している。

観点 担当
認可 Role
実行文脈 Session
実行者 監査ログ

なぜ RBAC ではなく Role-centric なのか

AWS が直面している前提条件は RBAC の想定を超えている。

  • 実行主体が人とは限らない
  • 一時的な実行主体が大量に生まれる
  • 外部 IdP、越境、マルチアカウント
  • 自動生成・自動破棄されるワークロード

この世界では、

  • User を Principal にするとスケールしない
  • 権限を「人」に結びつけると破綻する

結果として AWS は、

「権限の集合」を Principal にする

という設計を選んだ。

それが IAM Role である。


RBAC と IAM の Role を対比する

観点 RBAC Role IAM Role
役割 権限のグループ 権限主体
主体になれるか No Yes
認可の中心 User Role
実行者 User User/Service
一時性 なし 前提

実務での安全な再解釈

IAM を RBAC の延長で理解すると事故る。

実務では、頭の中でこう置き換えると腑に落ちる。

IAM の用語 再解釈


Role Permission Principal
AssumeRole 権限コンテキスト切替
Trust Policy 委譲ルール


結論

  • IAM では User も Role も Principal になりうる
  • しかし設計・運用の中心は明確に Role
  • IAM Role は RBAC Role とは別物

IAM Role は
「Role」という名前の Principal である

この前提で見ると、IAM の複雑さは「必然」だったと分かる。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?