おはようございます、YASUです。
DVAの勉強で、「IAMロールを引き受ける」「一時的な認証情報」という言葉が何度も出てきます。意味をはっきりさせたかったので、シンプルに整理しました。
目次
結論
IAMロールは、必要な時だけ借りる「役割」です。ロールを引き受けると、STS(Security Token Service)が、期限付きの一時的な認証情報を発行してくれます。
IAMユーザーとIAMロールの違い
- IAMユーザー:パスワードやアクセスキーのような、長期的な認証情報を持つ
- IAMロール:自分の認証情報を持たない。必要な時に、引き受けて使う
自分なりのイメージでは、ユーザーは「自分の社員証」、ロールは「受付で、必要な間だけ借りる入館証」です。
ロールの2つのポリシー
- 許可ポリシー:このロールで、何ができるか
- 信頼ポリシー:誰が、このロールを引き受けられるか
前に整理したリソースベースのポリシーの1つが、この信頼ポリシーです。
引き受けると、一時的な認証情報が発行される
ロールを引き受けることを、AssumeRoleと呼びます。AssumeRoleを実行すると、STSが、次の3つの組み合わせを発行します。
- アクセスキーID
- シークレットアクセスキー
- セッショントークン
この認証情報には、期限があります。AssumeRoleの場合、デフォルトは1時間で、最短は15分、最長はロールに設定した最大セッション期間までです。期限が切れたら、もう一度引き受け直します。
誰がロールを引き受けるのか
- IAMユーザー(別のアカウントのユーザーも含む)
- LambdaやEC2などの、AWSサービス
Lambdaの実行ロールも、Lambdaがロールを引き受けて、その権限で動く仕組みです。前に書いたCognitoのIDプールが、ユーザーに渡す一時的な認証情報も、STSが発行しています。
まとめ
- IAMロールは、自分の認証情報を持たず、必要な時に引き受けて使う
- ロールには、何ができるかを決める許可ポリシーと、誰が引き受けられるかを決める信頼ポリシーがある
- AssumeRoleで、STSが期限付きの一時的な認証情報(アクセスキーID、シークレットアクセスキー、セッショントークン)を発行する
- 期限は、デフォルト1時間、最短15分、最長はロールの最大セッション期間
「長期の鍵を持ち歩くより、一時的な鍵を借りる」という考え方を押さえると、IAMロールの意味がすっきりしました。それでは、また明日!

コメント