AWS IAM role の機能を実際に設定して理解する

はじめに

本記事ではIAMロールとは何なのか?IAMユーザーと何が違うのか?がわからないかった貴方と私向けの記事となります。このIAMロールを実際に設定し、動作を理解していきます。

IAMユーザーとIAMロールの違い

IAMユーザーとは

IAMユーザーとは、AWSのリソースにアクセスするためのユーザーとなります。AWSの全てのリソースにアクセスが可能なrootユーザーとは異なり、IAMユーザーの作成にE-mailアドレスは必要ありません。IAMユーザーがどのリソースにアクセス出来るかどうかは、どのIAMポリシーがアタッチされているかに依ります。

ここで言うリソースとはEC2やS3といったAWSのサービス名となります。

IAMロールとは

IAMロールとは、AWSのリソースにアタッチするものです。AWSのリソースが他のどのリソースにアクセス出来るかはこのIAMロールにどのIAMポリシーがアタッチされているかに依ります。

例えばS3にアクセス(リード)したいEC2はAmazonS3ReadOnlyAccessのポリシーがアタッチされている必要があります。このIAMポリシー無しにAWSのリソースが他のリソースにアクセスすることは出来ません。

(AWS Secret Keyを使えば出来ますが、推奨されていませんので出来ないとお考え頂くのが良いと思います。)

実際にやってみる

EC2からS3へのアクセス(without IAM Role)

立ち上げたEC2上で以下のコマンドを実行し、S3へのアクセスを試みてみると、credentialsのエラーが発生し、状態を確認することが出来ませんでした。

コマンド

aws s3 ls

IAMロールの作成

EC2からS3にアクセスするためにIAMロールを作成します。最初にIAMのサービスのページからロールのメニューを表示し、「ロールの作成」をクリックします。

ここではどのサービスにアタッチするIAMロールなのかを選択します。今回はEC2からS3のサービスにアクセスしますので、EC2を選択します。

ここでIAMロールにアタッチするポリシーを選択します。S3へのアクセスですので、ポリシーのフィルターでS3を入力し、フィルターされたポリシーの中からAmazonS3ReadOnlyAccessを選択します。

タグの設定は任意です。(私の環境では特に必要としていないので設定していません)

適当なロール名を付けて、「ロールの作成」をクリックして下さい。

これでIAMロールの作成は完了です。

IAMロールのアタッチ

次に作成したIAMロールをEC2インスタンスにアタッチします。EC2のサービスから該当のEC2インスタンスを選択し、アクションのメニューからセキュリティを選択し、「IAMロールを変更」をクリックして下さい。

ここで作成したIAMロールを選択し、保存をクリックします。

これでEC2インスタンスにIAMロールがアタッチされました。

EC2からS3へのアクセス(with IAM Role)

改めてEC2からS3に対してアクセスしてみましょう。S3の情報が正常に取得出来ており、IAMロールが正常に動作していることが確認出来たかと思います。

おわりに

本記事ではIAMユーザーとIAMロールの違いを説明し、実際にEC2にIAMロールを設定し、S3にアクセスすることを確認しました。これで本を読んでもIAMロールが何かわからなかった方も理解が進んだのではないでしょうか。

ではまた。