自由気ままに書いちゃおう

好きなことをつらつらと・・・

【AWS】IAMロールとIAMポリシーの違いについて

今回はIAMロールとIAMポリシーの違いについてです。
なるべく初心者の方にも理解してもらえるように記載しております。

■IAMロールとは?

「AWSリソースの認証に利用されます。」
・・・
・・・・
・・・・・
よくある説明かと思います。
これが良くわからないんですよね。。。

まず、AWSで色々と何かしらをやろうとした際、
AWSサービス間での接続が必要になるケースが多くあります。
"EC2からS3に接続する" 等が該当しますが、その場合、
 接続元: EC2
 接続先: S3
となります。
仮に、IAMユーザがS3へ接続する場合、
 接続元: IAMユーザ
 接続先: S3
となります。(次の説明で大事になってくるので記載しています。)

違いは、接続元がIAMユーザなのか、それともAWSリソース(=AWSサービス。この場合にはEC2)なのかです。

IAMユーザであれば、S3への接続を許可するためのIAMポリシーを適用することで、S3への接続が可能になります。

では、EC2からS3への接続を許可する場合にはどうしたらよいのでしょうか?
"IAMポリシーをEC2にアタッチすればいいんじゃないの?"って思われた方、
半分正解です。
ですが、「IAMポリシーはAWSリソースに直接アタッチすることができません。」
そのため、利用するのがIAMロールです。

IAMロールは言わば、
「IAMポリシーそのもの、もしくはIAMポリシーが纏まった物」
です。
AWSリソースに対して、アクセス制御をおこなう場合には、
常にIAMロールをアタッチする必要があります。

なので、
・IAMロールの中身はIAMポリシー
・IAMロールは、AWSリソース(サービス)に対してアタッチする
・IAMポリシーは、AWSリソース(サービス)に対して直接アタッチできない
という理解で大丈夫です。

ちなみに、IAMロールは自分で作成することもできますし、AWSが用意しているデフォルトのIAMロールを利用することもできます。

■IAMポリシーとは?

すでに何回も用語が出てしまっていますが、
IAMユーザ、IAMグループ、IAMロールの何れかに対するアクセス許可の定義のことです。
なんとなくイメージが湧くと思いますので詳細は割愛しますが、
一般的なアクセス制御で利用するような、「誰が」「何に対して」「アクセスを許可、拒否するのか」を定義しているものです。
IAMポリシーは自分で作成することも、AWSが用意しているデフォルトのIAMポリシーを利用することもできます。

以上です。