IAM Role

IAM Role とは

特定の権限を一時的に与えるもの。

なぜ必要か

長期認証情報 (パスワードやアクセスキーなど) なしで一時的に権限を与えるため。

いつ使われるか

主なユースケースは2つ。
1. EC2 上のアプリケーションや Lambda などが他の AWS サービス を使用するとき。
2. 他のアカウントを使うとき。

どうやって使われるか

EC2 上のアプリケーションや Lambda などが他の AWS サービス を使用する場合

まず最初に、なぜ User ではなく Role を使用するかを説明する。
結論を先に述べると、セキュリティリスクが高いから。

EC2 上で稼働する Java アプリが S3 にアクセスする場合を考える。
IAM User と User Group で説明したように、IAM User で AWS サービスを利用する場合、パスワードやアクセスキーが必要になる。
そのため、資格情報を共有する必要があり、漏洩のリスクがある。

f:id:lifeofgorilla:20210905140405p:plain
EC2 で User を使うリスク

IAM Role を使えば資格情報を知る必要がないのでセキュリティリスクが低い。

f:id:lifeofgorilla:20210905141042p:plain
IAM Role を使えば資格情報が漏れるリスクがない

他のアカウントを使う場合

IAM Role を使えばアカウント情報を共有することなく、他のアカウントが AWS サービスを利用できるようになる。

例えば、AWS Organizations で管理アカウントと開発アカウントを作成したとする。
このとき、開発アカウントに管理アカウント用の Role を作成する。
IAM User は管理アカウントにログインし、Switch Role で開発アカウントの Role に切り替える。
そうすることで、IAM User は管理アカウントにログインしながら、パスワードなどの資格情報なしで、開発アカウントのリソースを操作できる。

f:id:lifeofgorilla:20210905142848p:plain
クロスアカウントとロール