はじめに
AWS SAA試験において、IAM(Identity and Access Management)に関係する問題は全体の中でも特に出題数が多く、他のサービス(EC2・S3など)と組み合わせた問題の前提知識としても必要になります。
この記事では、初学者が最初に混乱しやすい「IAMユーザー」「IAMグループ」「IAMロール」「IAMポリシー」の4つの要素を解説します。
難しい概念も「オフィス」の比喩を使って直感的に理解できるよう説明しますので、ぜひ最後まで読んでみてください。
- IAMユーザー・グループ・ポリシー・ロールの違い
- ルートユーザーを使ってはいけない理由
- EC2にアクセスキーを書いてはいけない理由とロールの使い方
- SAA試験で問われる「グループのネスト不可」などの細かいルール
mintIAMはAWS SAA試験の中でも特に出題数が多い分野です。
勉強方法や試験対策全体については、以下の合格体験記も参考にしてみてください。




IAMとは何か?
IAMは、AWS リソースへのアクセスを安全に管理するためのサービスです。
IAMを使用することで、ユーザ等の認証とリソースの使用の認可を制御することが可能です。
「認証」と「認可」は似ている言葉ですが、以下のような違いがあります。
- 認証(Authentication):操作しようとしているのが本当に正規のユーザーやサービスかどうかを確認する
- 認可(Authorization):そのユーザーやサービスが、その操作を行う権限を持っているか確認する
「ユーザー」「グループ」「ロール」「ポリシー」の違い
IAMに関して、最初に混乱しやすいのが「ユーザー」「グループ」「ロール」「ポリシー」の4つの関係です。
これらはオフィスに例えると整理しやすくなります。
| IAMの概念 | オフィスの例え | 役割 |
|---|---|---|
| IAMユーザー | 社員証 | 特定の個人を表す認証情報 |
| IAMグループ | 部署 | 複数ユーザーをまとめる入れ物 |
| IAMポリシー | 許可証 | できることを定義したルール |
| IAMロール | 貸出用の鍵 | 一時的に役割を引き受ける仕組み |
それぞれを順番に見ていきましょう。
① IAMユーザー = 社員証(特定の個人)
IAMユーザーは、AWSを操作する個人のアカウントです。社員証のように、その人専用の認証情報を持ちます。
最小権限の原則ってなに?



業務に必要な最低限の権限だけを付与することだよ。
操作できる範囲を限定することで、漏洩した際のリスクを抑えることができるんだ。
IAMユーザーの認証方法は2種類
IAMユーザーには、用途に応じて2種類の認証方法があります。
| 認証方法 | 用途 |
|---|---|
| ユーザー名 + パスワード | AWSマネジメントコンソールへのログイン(ブラウザ操作) |
| アクセスキー + シークレットアクセスキー | AWS CLI・SDKでのプログラムアクセス(コマンド操作) |
アクセスキーは一度発行したら大切に管理し、定期的にローテーションすることが推奨されています。
キーが漏洩すると第三者にAWSを操作されるリスクがあるためです。
また、IAMユーザを作成する上で以下の原則があります。
- 1人1アカウント:複数人でのアカウント共有は禁止。誰が何の操作をしたかのログが追えなくなります。
- 最小権限の原則:業務に必要な最低限の権限だけを付与する。
② IAMグループ = 部署(開発部・営業部など)
IAMグループは、複数のIAMユーザーをまとめて権限を管理する機能です。
「開発チーム全員にS3の読み取り権限を付与する」といった場合、個別ユーザーにポリシーを設定するのではなく、以下のようにグループに対してポリシーをアタッチすれば一括管理できます。
開発グループ(IAMグループ)
├── Aさん(IAMユーザー)
├── Bさん(IAMユーザー)
└── Cさん(IAMユーザー)
↑このグループにポリシーをアタッチすると3人全員に権限が付与される
また、IAMグループを利用する場合は以下の注意点があります。
なぜグループを使うのか? AWSのベストプラクティス
AWSは「IAMユーザーに直接ポリシーをアタッチせず、グループを通じて権限を管理する」ことを推奨しています。
グループを利用することで、以下のようにIAMユーザの権限を効率的に管理することが可能です。
- 新しいメンバーが加わったときに「グループに追加する」だけで権限を付与できる
- メンバーが異動・退職したときに「グループから外す」だけで権限を削除できる
- 権限の変更が必要なときに「グループのポリシーを更新する」だけで全員に反映される
③ IAMポリシー = 許可証(権限の本体)
IAMポリシーは、AWSリソースへの操作権限を定義したルール書(JSON形式)です。
ユーザー・グループ・ロールにアタッチすることで権限を付与します。
ポリシーはJSON形式で書かれている
たとえば「特定のAWS アカウント のメンバーに、S3バケットに対するすべてのアクションの実行を許可する」というポリシーは、以下のようなJSONで表現されます。
{
"Version":"2012-10-17",
"Statement": [
{
"Sid": "1",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::111122223333:root"
]
},
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::amzn-s3-demo-bucket",
"arn:aws:s3:::amzn-s3-demo-bucket/*"
]
}
]
}
ポリシーの5つの構成要素
ポリシーは以下の5つの要素(Effect/Action/Resource/Principal/Condition)で構成されています。
| 要素 | 説明 | 例 |
|---|---|---|
| Effect | 許可(Allow)または拒否(Deny)を指定 | Allow / Deny |
| Action | 実行できる操作を指定 | s3:GetObject、ec2:StartInstances |
| Resource | 操作対象のリソース(ARN形式)を指定 | arn:aws:s3:::my-bucket/* |
| Principal | アクセスのリクエスト元(リソースベースポリシーで使用) | 特定のIAMユーザーのARN |
| Condition | ポリシーが適用される条件(任意) | 特定のIPアドレス範囲のみ許可 |
-
*で任意の値を指定できます。"Resource": "*"は「全リソースが対象」を意味します。 - デフォルトは全て拒否(暗黙的Deny)。明示的な
Allowがあって初めてアクセスが許可されます。
④ IAMロール = 貸出用の鍵(一時的に役割を引き受ける仕組み)
IAMロールは、ここまで説明した「ユーザー」「グループ」「ポリシー」とは少し異なる概念です。
ロールは「人」ではなく「AWSサービスやアプリケーション・別アカウント」に権限を渡すためのものです。
なぜロールが必要なのか?
たとえば「EC2インスタンス上で動くアプリがS3バケットのファイルを読み書きしたい」という場面を考えます。
❌ NG :アクセスキーをコードに直接書く
# こんな書き方は絶対NG
aws_access_key = "AKIAXXXXXXXXXXXXXXXX"
aws_secret_key = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
なぜコードに直接書くのはNGなの?



例えば、コードをGitHubにアップロードしてしまうとキーが世界中に公開されて、不正利用される可能性があるからだよ。
✅ 正解:EC2にIAMロールをアタッチする
IAMロールをEC2にアタッチすると、アプリは一時的な認証情報(アクセスキー)を自動で取得できます。この一時キーは数時間で自動的に期限切れになり、自動でローテーションされるため、漏洩リスクが大幅に下がります。
ロールをアタッチすることで、一時的に鍵を借りたことになるんだね。



そうだね!コードにキーを直接書くのは、合鍵を玄関のドアに貼っておくようなもの。ロールなら必要な時だけ自動で鍵を渡して、時間が経ったら自動で回収してくれるから安全だよ。
インスタンスプロファイルとは?
EC2にIAMロールをアタッチするとき、厳密には「インスタンスプロファイル」という入れ物を経由しています。インスタンスプロファイルはEC2専用のIAMロールを格納する容器で、IAMロールを作成すると自動的に作成されます。



「EC2にIAMロールをアタッチする」と言いますが、正確にはEC2にアタッチされるのは「インスタンスプロファイル」であり、インスタンスプロファイルの中にIAMロールが入っています。
IAMロールを使う代表的な場面
| 場面 | 説明 |
|---|---|
| EC2からAWSサービスを操作する | アクセスキーをコードに書かずに安全に操作できる |
| クロスアカウントアクセス | 別のAWSアカウントのリソースを操作する |
| IDフェデレーション | GoogleやActive DirectoryのユーザーをAWSにログインさせる |
| IAM Roles Anywhere | オンプレミスや他クラウドのサーバーからAWSリソースにアクセスする |
まとめ:4つの要素の比較表
改めてIAMの要素について整理しました。
| 要素 | 役割 | アタッチの対象 | キーワード |
|---|---|---|---|
| IAMユーザー | 個人の認証情報(社員証) | AWSの操作者(人・アプリ) | 1人1アカウント・最小権限 |
| IAMグループ | ユーザーの集合体(部署) | IAMユーザー | ネスト不可・ベストプラクティス |
| IAMポリシー | 権限のルール書(許可証) | ユーザー・グループ・ロール・リソース | JSON形式・デフォルト拒否 |
| IAMロール | 一時的な役割の鍵 | AWSサービス・他アカウント・外部ID | 一時認証情報・コードにキーを書かない |
SAA試験直前チェックリスト(IAM基本編)
SAA試験対策としては、以下の項目を理解しておきましょう。
- ルートユーザーは日常的に使わない。ルートにしかできない操作(アカウント解約・サポートプラン変更など)のみに限定する。
- IAMユーザーに直接ポリシーをアタッチせず、グループを経由して管理する。(AWSベストプラクティス)
- IAMグループのネスト(入れ子)はできない。
- EC2からAWS操作をするなら「IAMロール」一択。アクセスキーをコードに書かない。
- ポリシーのデフォルトはすべて拒否(暗黙的Deny)。Allowがあって初めて許可される。



他にも、AWS SAA試験の対策になる記事をまとめています。





