2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AssumeRoleを自分なりに理解する~「勇者」と「伝説の剣」と「妖精」の物語~

Last updated at Posted at 2021-12-22

AssumeRole、繰り返し学習する度にゲシュタルト崩壊して分からなくなり、ふり出しに戻ります。
image.png

「AssumeRoleなんもわからん」から「なんとなくわかった」になるのを目的としているため、正確さにかける表現がある場合があります。正しい情報はAWS公式ドキュメントをご参照ください。

チバユキさんの伝説のブログに多大な影響を受け、この記事を書いています。

1.「勇者」と「伝説の剣」と「妖精」の物語

ある最果ての地に伝説の剣があった。
image.png
伝説の剣には魔力が宿っていた。
image.png
選ばれし者だけが、伝説の剣を抜くことができるという。
image.png
伝説の剣のもとには、剣の力を選ばれし者へ与える妖精がいるという。妖精は剣の声を聴き、力を与える者を選ぶ。
image.png

関係はこう。
image.png

剣には宿る能力のリストがあり、別途、剣を抜ける選ばれし者のリストがある。
image.png

剣(IAMロール)に宿る力(ポリシー)のリストはユーザーベースのポリシーである。
剣(IAMロール)を抜ける選ばれし者(Principal)のリストは信頼ポリシーである。
選ばれし者(Principal)に剣(IAMロール)の力を与える妖精(STS)がいる。
image.png

剣(IAMロール)に宿る力(ポリシー)のリスト(ユーザーベースのポリシー)

剣(IAMロール)を抜ける選ばれし者(Principal)のリスト(信頼ポリシー)

  • Lambda一族
    image.png

妖精(STS)は信頼ポリシーに示された選ばれしPrincipalにしか妖精の力を貸さない。
妖精(STS)の力を借りることができる選ばれしPrincipal・Lambda一族の者だけが、妖精(STS)の力を借りて剣(IAMロール)を抜き、ユーザーベースのポリシーに示された火・水・雷の力(ポリシー)で戦うことができる。
image.png

ただし、妖精の力(STSが発行した一時トークン)は永続的に使えるものではない。
image.png
妖精と勇者・Lambdaの冒険は、今始まったばかり…


もういいですね。
AssumeRoleとは「IAMロールを引き受ける動作・アクション」のことです。

2.IAMポリシー3種類

IAMポリシーの種類をおさえる。

2-1.ユーザーベースのポリシー

  • 「IAMユーザ」「IAMグループ」「IAMロール」に関連づけることができるポリシー
  • 別名「アイデンティティベースのポリシー」
  • 操作主体(誰が使うか)は関連付けられた「IAMユーザ」「IAMグループ」「IAMロール」のいずれか。暗黙的に自明
    image.png

2-2.リソースベースのポリシー

  • ユーザーベースのポリシーと似ているが、関連づけ先がユーザーではなく「AWSサービス」である
  • よく使われるのはS3のバケットポリシー、Amazon SQS キューポリシーなど
  • 操作主体(誰が使うか)を表すPrincipalの明記が必要
    image.png

2-3.IAMロールの信頼ポリシー

  • 別名「信頼関係」「信頼ポリシードキュメント」(揺らぎあり)
  • IAMロールの権限移譲先(Principal) を記載。 IAMロールに組み込む もの。
  • 信頼ポリシーで書くアクションは「 sts:AssumeRole 」だけ
  • 信頼ポリシーを関連づけたIAMロールが保有する権限(やっていい操作)を、Principalに移譲(を許可)する
    image.png

つまりIAMロールは二種類のポリシーを持つ。
image.png

この「 sts:AssumeRole 」が今回焦点をあてて理解したい部分。
「assume」には「(役割・責任を)引き受ける」という意味があり、AssumeRoleとは 「IAMロールを引き受ける」という動作・アクション のことを言う。
image.png

3.IAMロールを使うときの流れ

たとえばLambdaにIAMロールを引き受けさせたいときのざっくりイメージ例。
image.png
①LambdaがIAMロールを引き受けよう(AssumeRole)と思う
②STSが信頼ポリシーを確認し、IAMロールを引き受けていいか判断する
③STSがPrincipal(今回はLambda)に一時トークンを発行する
④一時トークンを使って、(IAMロールに関連付けられている)ユーザーベースのポリシーで許可された操作を行う

image.png

簡略化してもう一回。
image.png

参考

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?