▪️目的

AWSを利用していると、「IAM」という言葉を頻繁に目にします。

AWSでは、EC2やS3、RDSなど、さまざまなサービスを利用します。

しかし、

  • 誰がAWSを操作できるの?
  • EC2からS3へアクセスするにはどうするの?
  • IAMユーザーって何?
  • IAMロールって何?
  • IAMポリシーって何?
  • 管理者権限と一般ユーザーの違いは?
  • 「最小権限」ってどういう意味?

と疑問に思う方も多いのではないでしょうか。

IAMは、AWSのセキュリティを理解するうえで非常に重要なサービスです。

この記事では、AWS初心者の方向けに、IAMの基本的な仕組みからIAMユーザー、IAMロール、IAMポリシー、アクセス権限の考え方まで分かりやすく解説します。



▪️IAMとは?

IAMとは、AWS Identity and Access Managementの略です。

簡単にいうと、

AWSのリソースに対するアクセスを管理するためのサービス

です。

例えばAWSには、

  • EC2
  • S3
  • RDS
  • VPC
  • Lambda
  • CloudWatch

など、さまざまなサービスがあります。

IAMでは、

「誰が、どのAWSリソースに対して、何をしてよいのか」

を管理します。

例えば、

ユーザー
  │
  ▼
IAM
  │
  ├─ EC2を操作してよい
  ├─ S3を読み取ってよい
  └─ RDSは操作してはいけない

といったアクセス制御を行います。


▪️AWSでは「認証」と「認可」が重要

IAMを理解するためには、認証と認可という2つの言葉を理解しておくと分かりやすいです。

♦︎認証

認証とは、

「あなたは誰ですか?」

を確認することです。

例えばAWSへログインするときに、ユーザーを識別します。

ユーザー
  │
  ▼
ログイン
  │
  ▼
「このユーザーは誰か?」

これが認証です。


♦︎認可

認可とは、

「あなたは何をしてよいですか?」

を決めることです。

例えば、

ユーザーA
↓
S3のファイルを読み取る → 許可

S3のファイルを削除する → 拒否

といった制御です。

つまり、

認証
↓
誰なのか?

認可
↓
何をしてよいのか?

と考えると分かりやすいでしょう。


▪️IAMユーザーとは?

IAMユーザーとは、AWS上で利用者を識別するためのユーザーです。

例えば、

IAM
│
├─ user-a
├─ user-b
└─ user-c

のようにユーザーを作成できます。

それぞれのユーザーに異なる権限を設定することもできます。

例えば、

user-a
↓
EC2の操作を許可

user-b
↓
S3の読み取りを許可

user-c
↓
管理者権限

といった形です。

ただし、現在のAWS環境では、AWS IAM Identity Centerなどを利用して人間のユーザーアクセスを管理する構成も重要です。

そのため、**「人がAWSを使う=必ずIAMユーザーを作る」**と考えるのではなく、組織の認証・アクセス管理方式に応じて適切な仕組みを選択します。


▪️IAMグループとは?

IAMグループは、IAMユーザーをまとめて管理するための仕組みです。

例えば、

IAMグループ
│
└─ 開発者
    ├─ user-a
    ├─ user-b
    └─ user-c

というようにユーザーをグループ化できます。

そしてグループにポリシーを設定することで、複数のユーザーへ同じ権限をまとめて付与できます。

例えば、

開発者グループ
↓
EC2操作権限
↓
user-a
user-b
user-c

といった管理ができます。


▪️IAMポリシーとは?

IAMを理解するうえで、非常に重要なのがIAMポリシーです。

IAMポリシーとは、

AWSリソースに対して、どのような操作を許可・拒否するかを定義したルール

です。

例えば、

S3のオブジェクトを読み取ることを許可する

というルールを作れます。

代表的なアクションとして、

s3:GetObject

があります。

これは、S3オブジェクトを取得するためのアクションです。

例えば、

IAMポリシー
│
└─ s3:GetObject
     │
     ▼
   S3オブジェクト

というイメージです。


▪️IAMポリシーの基本構造

IAMポリシーはJSON形式で記述します。

例えば、

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::example-bucket/*"
    }
  ]
}

というような形です。

初心者の方は、まず以下の4つを覚えておくと分かりやすいでしょう。

Effect
↓
許可 or 拒否

Action
↓
何をするのか

Resource
↓
どのAWSリソースに対してか

Principal
↓
誰に対するルールなのか

ただし、すべてのポリシータイプに同じ要素が出てくるわけではありません。


▪️AllowとDeny

IAMポリシーでは、アクセスを許可するAllowや、明示的に拒否するDenyを定義できます。

例えば、

Allow
↓
S3の読み取りを許可

Deny
↓
S3の削除を拒否

といった設定ができます。

AWSのアクセス制御では、明示的なDenyがAllowより優先されるという重要なルールがあります。

そのため、

Allow
+
Explicit Deny

の場合は、アクセスが拒否されます。


▪️IAMロールとは?

IAMを理解するときに、もう一つ非常に重要なのがIAMロールです。

IAMロールとは、

AWSリソースやユーザーなどが、一時的な認証情報を使ってAWSリソースへアクセスするために利用する仕組み

です。

特にAWSでは、EC2やLambdaなどのAWSサービスに権限を与えるときによく利用します。

例えば、

EC2
 │
 ▼
IAMロール
 │
 ▼
S3

という構成です。

EC2にIAMロールを関連付けることで、

「このEC2にはS3を読み取る権限を与える」

といった設定ができます。


▪️EC2からS3へアクセスする場合

IAMロールのイメージを具体的に見てみましょう。

例えば、EC2上で動作するアプリケーションからS3のファイルを取得したいとします。

EC2
 │
 │ S3:GetObject
 ▼
S3

このとき、EC2に必要なIAMロールを関連付けます。

EC2
 │
 ▼
IAMロール
 │
 └─ S3:GetObject
       │
       ▼
      S3

これによって、EC2上のアプリケーションがS3へアクセスできるようになります。


▪️なぜIAMロールを使うの?

もしIAMロールを使わず、EC2の中にAWSアクセスキーを直接保存してしまうと、

EC2
 │
 └─ アクセスキー

のような状態になります。

アクセスキーが漏れてしまうと、その認証情報を使ってAWSへアクセスされる危険があります。

そこで、AWSサービスから別のAWSサービスへアクセスする場合には、IAMロールを利用するのが基本的な考え方です。

EC2
 │
 ▼
IAMロール
 │
 ▼
S3

という形にすることで、長期的なアクセスキーをEC2へ直接埋め込まずに権限を付与できます。


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

ここは非常に重要です。

簡単に整理すると、

項目IAMユーザーIAMロール
主な用途ユーザーを識別権限を引き受ける
主な対象人などAWSサービス・ユーザーなど
認証情報長期認証情報を持てる一時的な認証情報を利用
EC2からS3基本的に適さないよく利用される

例えば、

人
↓
IAM Identity Centerなど
↓
AWS

EC2
↓
IAMロール
↓
S3

というように、人のアクセスとAWSサービスのアクセスでは適切な仕組みが異なります。


▪️最小権限の原則

IAMを設計するときに非常に重要なのが、最小権限の原則です。

これは簡単にいうと、

必要な権限だけを与える

という考え方です。

例えば、EC2からS3のファイルを読み取るだけなら、

必要
↓
s3:GetObject

だけで十分かもしれません。

それなのに、

S3のすべての操作を許可

してしまうと、必要以上の権限を与えることになります。

理想としては、

必要な操作
   ↓
必要なリソース
   ↓
必要なユーザー・サービス

に絞って権限を設計します。


▪️「AdministratorAccessなら全部できる」は危険

AWSでは、管理者権限を持つユーザーやロールを作ることもできます。

しかし、

とりあえず全部の権限を付ける

という設計はセキュリティ上のリスクになります。

例えば開発者が、

EC2
S3
RDS
IAM
CloudTrail
KMS

など、すべてを操作できる必要があるとは限りません。

そのため、

開発者
↓
必要なAWSサービスだけ

運用担当
↓
運用に必要な権限だけ

管理者
↓
管理に必要な権限

というように、役割に応じて権限を分けます。


▪️IAMとSecurity Groupの違い

ここまでの記事で紹介したSecurity GroupとIAMは、どちらも「アクセスを制御する仕組み」です。

そのため、初心者の方は混乱しやすいポイントです。

しかし、役割は大きく異なります。

項目IAMSecurity Group
主な対象AWS API・リソースへの操作ネットワーク通信
制御するものAWS操作の権限通信
例S3:GetObjectTCP 443
主な用途認証・認可ネットワークアクセス制御

例えば、

EC2
 │
 ├─ IAM
 │   └─ S3:GetObjectを許可
 │
 └─ Security Group
     └─ TCP 443を許可

というように、両者は別の役割を持っています。

つまり、

IAMでAWSリソースを操作する権限を制御し、Security Groupでネットワーク通信を制御する

と考えると分かりやすいでしょう。


▪️IAMとS3を組み合わせる

前回の記事で紹介したS3もIAMと深く関係しています。

例えば、

EC2
 │
 ▼
IAMロール
 │
 └─ S3:GetObject
       │
       ▼
      S3

という構成です。

このとき、

「EC2がS3へアクセスできる」

という状態を作るだけではなく、

「EC2がS3の何をできるのか?」

までIAMポリシーで制御します。

例えば、

読み取り → 許可
書き込み → 拒否
削除     → 拒否

といった設計ができます。


▪️IAMを利用したAWSのアクセス管理

AWSでは、IAMを中心にさまざまなアクセス制御を組み合わせます。

例えば、

              AWS
               │
       ┌───────┴────────┐
       ▼                ▼
     人間              AWSサービス
       │                │
       ▼                ▼
IAM Identity Center   IAMロール
       │                │
       └───────┬────────┘
               ▼
          IAMポリシー
               │
               ▼
       AWSリソースへのアクセス

というようなイメージです。

さらに、S3バケットポリシーなど、リソース側に設定するポリシーも組み合わせてアクセスを制御します。


▪️IAMを利用するときに考えること

IAMの設定では、単純に「アクセスできる・できない」だけではなく、

  • 誰がアクセスするのか
  • 何を操作するのか
  • どのリソースを操作するのか
  • どの環境からアクセスするのか
  • 必要な権限は何か
  • 不要な権限は何か
  • 長期認証情報を持たせる必要があるか
  • 最小権限になっているか

などを考えることが重要です。

特に本番環境では、

「とりあえずAdministratorAccess」

ではなく、

「この作業に本当に必要な権限は何か?」

という考え方で設計することが重要です。


▪️まとめ

今回は、AWSのIAMについて解説しました。

IAMは、AWSのリソースに対するアクセスを管理するためのサービスです。

ポイントを整理すると、

  • IAMはIdentity and Access Managementの略
  • AWSリソースへのアクセスを管理する
  • 「誰なのか」を確認する認証と「何をしてよいか」を決める認可がある
  • IAMユーザーはユーザーを識別するために利用できる
  • IAMグループはユーザーをまとめて管理するために利用できる
  • IAMポリシーによってアクセス権限を定義する
  • IAMロールはAWSサービスなどが権限を利用するときによく使われる
  • EC2からS3へアクセスする場合などにIAMロールを利用できる
  • 必要な権限だけを与える「最小権限」が重要
  • IAMとSecurity Groupは役割が異なる
  • IAMはAWSのセキュリティ設計を理解するうえで非常に重要

特に、

IAM=AWSリソースへの操作権限を管理

Security Group=ネットワーク通信を制御

という違いを覚えておくと、AWSのセキュリティを理解しやすくなります。

AWSでは、EC2やS3、RDSなどのサービスを作るだけではなく、

「誰がそのサービスを操作できるのか」

「どのサービスからどのサービスへアクセスできるのか」

まで考えてシステムを設計します。

IAMは、そのアクセス制御を支えるAWSの基本的なサービスです。

次回は、AWS上の操作やAPI呼び出しなどを記録するCloudTrailについて解説します。
*「CloudTrail」の記事はこちら
→「https://lovelabengineer.com/2026/10/08/awsのcloudtrailとは?awsの操作履歴を記録する仕組みを初心/」

No responses yet

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

Latest Comments

表示できるコメントはありません。