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

2026年6月13日

はじめに

AWS の学習を始めると、IAM ユーザーIAM ロールという似たような名前の概念が出てきて、何が違うのか分からなくなったことはないでしょうか。さらに「EC2 から S3 にアクセスしたいけれど、アクセスキーを使わずに権限を与えるにはどうすればいいのか」と言われると、余計に混乱してしまいます。

本記事では、まず IAM ユーザーと IAM ロールの違いを整理し、その上で実際に EC2 用の IAM ロールを作成して S3 への読み取り権限を付与するまでの手順を一通り体験します。手を動かして確認することで、IAM ロールが「誰に」「何の」権限を与えているのかがイメージしやすくなります。

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

IAMユーザーとは

IAM ユーザーとは、人やアプリケーションが AWS のリソースにアクセスするためのアカウントです。AWS の全リソースにアクセスできる root ユーザーとは異なり、IAM ユーザーの作成にメールアドレスは不要です。IAM ユーザーがどのリソースにアクセスできるかは、アタッチされている IAM ポリシーによって決まります。

ここで言う「リソース」とは、EC2 や S3 といった AWS のサービスのことを指します。

IAMロールとは

IAM ロールとは、AWS のリソースにアタッチして一時的な権限を与えるための仕組みです。EC2 などの AWS リソースが他のリソースにアクセスできるかどうかは、そのリソースにアタッチされた IAM ロールに、どの IAM ポリシーがアタッチされているかによって決まります。

例えば、S3 にアクセス(リード)したい EC2 には、AmazonS3ReadOnlyAccess ポリシーがアタッチされた IAM ロールが必要です。このポリシーが無ければ、EC2 から S3 にアクセスすることはできません。

(AWS のアクセスキー・シークレットキーを EC2 に直接設定すれば同様のことは可能ですが、キーが漏洩するリスクがあるため推奨されていません。IAM ロールを使えば、キーを管理する必要なく安全にアクセス権限を付与できます。)

項目IAMユーザーIAMロール
アタッチ対象人・アプリケーションなどEC2 など AWS のリソース
認証情報アクセスキー・シークレットキーを発行一時的な認証情報が自動で発行・更新される
主な用途コンソールログインや CLI 操作用のアカウントリソース間でのアクセス権限の委譲

IAMロールをEC2にアタッチしてS3へのアクセス権限を与える3つのステップ

概念を理解したところで、実際にEC2 用の IAM ロールを作成し、S3 への読み取り権限を付与するまでの流れを、3 つのステップで確認していきます。

1. IAMロールなしでS3へアクセスし、エラーになることを確認する

課題:IAM ロールが無い状態の EC2 から AWS のリソースにアクセスすると、どうなるのかを確認したい。
解決策:何もアタッチしていない EC2 上で AWS CLI コマンドを実行し、認証エラーが発生することを確認する。

立ち上げた EC2 上で以下のコマンドを実行し、S3 バケットの一覧を取得してみます。

aws s3 ls

IAM ロールが何もアタッチされていないため、credentials に関するエラーが発生し、S3 の情報を取得することができませんでした。

IAMロールをアタッチしていないEC2でaws s3 lsコマンドを実行するとcredentialsエラーが発生する画面

2. EC2用のIAMロールを作成し、S3への読み取り権限を付与する

課題:EC2 から S3 にアクセスするための権限をどのように用意するか。
解決策:IAM サービスで EC2 用のロールを作成し、AmazonS3ReadOnlyAccess ポリシーをアタッチする。

IAM サービスの「ロール」メニューから「ロールの作成」をクリックします。

IAMサービスのロール一覧画面で「ロールの作成」をクリックする画面

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

IAMロールをアタッチするサービスとしてEC2を選択する画面

次に、ロールにアタッチするポリシーを選択します。フィルターに「S3」と入力し、表示された一覧から「AmazonS3ReadOnlyAccess」にチェックを入れます。

ポリシーのフィルターでS3を検索し、AmazonS3ReadOnlyAccessを選択する画面

タグの設定は任意です(今回は特に設定せず進めます)。

IAMロール作成時のタグ設定画面(タグは任意)

最後にロール名を入力し、「ロールの作成」をクリックすればロールの作成は完了です。

ロール名を入力して「ロールの作成」をクリックする画面

3. 作成したIAMロールをEC2にアタッチして動作確認する

課題:作成した IAM ロールを EC2 インスタンスに反映させる必要がある。
解決策:EC2 のセキュリティ設定から IAM ロールを変更し、再度 S3 へアクセスして権限が反映されていることを確認する。

EC2 サービスから対象のインスタンスを選択し、「アクション」→「セキュリティ」→「IAM ロールを変更」をクリックします。

EC2インスタンスのアクションメニューからセキュリティの「IAMロールを変更」を選択する画面

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

EC2インスタンスに作成したIAMロールを選択して保存する画面

改めて EC2 上で以下のコマンドを実行してみます。

aws s3 ls

今度は S3 バケットの一覧が正常に取得できました。IAM ロールにアタッチした AmazonS3ReadOnlyAccess ポリシーが反映され、EC2 から S3 への読み取りアクセスが許可されていることが確認できます。

IAMロールをアタッチした後にaws s3 lsコマンドが正常に実行されS3バケット一覧が表示される画面

まとめ:IAMロールはAWSリソースに権限を委譲する仕組み

本記事で紹介したポイントをまとめます。

  • IAM ユーザーは人やアプリケーション向けのアカウント、IAM ロールは AWS リソースにアタッチして権限を委譲する仕組み
  • リソースが他のリソースにアクセスできるかどうかは、アタッチされた IAM ロールのポリシーによって決まる
  • アクセスキーを直接設定する方法もあるが、漏洩リスクがあるため IAM ロールの利用が推奨される
  • EC2 用のロールを作成し、AmazonS3ReadOnlyAccess をアタッチすることで、EC2 から S3 への読み取りアクセスが可能になることを確認した

IAM ロールにアタッチするポリシーは、必要最小限の権限のものを選ぶのが基本です。今回のように「読み取りだけ許可したい」という場合は ReadOnly 系のポリシーを使うなど、目的に合ったポリシーを選ぶようにしましょう。