IAMユーザー・IAMロール・IAMポリシーの違いを初心者向けに解説
AWSの権限管理で重要なIAMユーザー、IAMロール、IAMポリシーの違い、試験ポイント、実務での使い分けを整理します。
比較対象サービス
サービス名をクリックすると、用語詳細ページで復習できます。
結論
IAMはAWSの権限管理サービスです。
IAMユーザー、IAMロール、IAMポリシーは、それぞれ役割が違います。
| 用語 | 一言でいうと | 主な使いどころ |
|---|---|---|
| IAMユーザー | 人やアプリに紐づくAWS利用者 | 管理者や開発者のログイン |
| IAMロール | 一時的に権限を引き受ける仕組み | Lambda、EC2、GitHub Actionsなど |
| IAMポリシー | 何を許可・拒否するかを書いた権限定義 | S3読み取り許可、DynamoDB書き込み許可など |
迷ったら、まずはこう判断します。
- 誰が使うか:IAMユーザー
- AWSサービスに権限を渡す:IAMロール
- 何を許可するか:IAMポリシー
比較表
| 項目 | IAMユーザー | IAMロール | IAMポリシー |
|---|---|---|---|
| 種類 | ID | 権限を引き受ける仕組み | 権限ルール |
| 主な対象 | 人、アプリケーション | AWSサービス、外部ID、別アカウント | ユーザー、グループ、ロール |
| 認証情報 | パスワード、アクセスキー | 一時的な認証情報 | 認証情報は持たない |
| 主な用途 | AWSコンソールログイン、CLI利用 | Lambda実行、EC2権限、OIDC連携 | 許可アクションと対象リソースの定義 |
| セキュリティ観点 | MFA、アクセスキー管理が重要 | 長期キー不要で安全にしやすい | 最小権限が重要 |
| このプロジェクトでの用途 | 管理者ログイン用 | Lambda実行ロール、GitHub Actionsロール | DynamoDB PutItem、S3デプロイ許可など |
初学者向け説明
IAMユーザー
IAMユーザーは、AWSを操作する人やアプリケーションを表すIDです。
AWSコンソールにログインしたり、AWS CLIから操作したりできます。
ただし、アクセスキーを発行すると漏えいリスクがあるため、取り扱いに注意が必要です。
IAMロール
IAMロールは、特定の主体が一時的に権限を引き受けるための仕組みです。
例えば、LambdaがDynamoDBに書き込む場合、Lambda関数にIAMロールを付与します。
このプロジェクトでは、問い合わせ送信LambdaにDynamoDBへの書き込み権限だけを持たせる設計にします。
IAMポリシー
IAMポリシーは、どの操作をどのリソースに対して許可するかをJSONで定義するものです。
例えば、問い合わせLambdaには dynamodb:PutItem だけを許可します。
不要な dynamodb:* や AdministratorAccess は付けません。
試験で問われるポイント
CLF-C02で問われやすいポイント
- IAMはAWSの認証・認可を管理するサービス
- IAMユーザーにはMFAを設定する
- rootユーザーは日常利用しない
- IAMポリシーで権限を定義する
- 最小権限の原則が重要
- IAMロールはAWSサービスに権限を付与するときによく使う
SAA-C03で問われやすいポイント
- EC2やLambdaに権限を与える場合はIAMロールを使う
- 長期アクセスキーよりIAMロールを優先する
- クロスアカウントアクセスではIAMロールを使う
- GitHub Actionsなど外部サービス連携ではOIDC + IAMロールが安全
- リソース単位でポリシーを絞る
*を多用した過剰権限は避ける
実務での使い分け
IAMユーザーを使うケース
- 開発者がAWSコンソールにログインする
- 管理者が請求やリソースを確認する
- 学習初期にAWS CLIを使う
ただし、MFAを必ず設定し、アクセスキーの発行は最小限にします。
IAMロールを使うケース
- LambdaからDynamoDBに書き込む
- EC2からS3を読む
- GitHub ActionsからS3へデプロイする
- 別AWSアカウントから一時的にアクセスする
このプロジェクトでは、以下のIAMロールが登場します。
- Lambda問い合わせ送信用ロール
- GitHub Actionsデプロイ用ロール
IAMポリシーを使うケース
- LambdaにDynamoDB PutItemだけを許可する
- GitHub ActionsにS3アップロードだけを許可する
- CloudFront Invalidationだけを許可する
- S3バケットへの読み取りをCloudFrontにだけ許可する
ポリシーでは、ActionとResourceを絞ることが重要です。
よくある間違い
間違い1:IAMユーザーにAdministratorAccessを常用する
学習初期は広い権限で進めたくなります。
ただし、本番やポートフォリオ説明では危険です。
長期的には、作業ごとに権限を分けるべきです。
間違い2:Lambda内にAWSアクセスキーを書く
LambdaにはIAMロールを付けます。
コード内にAWSアクセスキーを書くのは危険です。
このプロジェクトでも、秘密情報の直書きは禁止です。
間違い3:IAMロールとIAMポリシーを同じものだと思う
IAMロールは権限を引き受ける入れ物です。
IAMポリシーは権限の内容です。
ロールにポリシーを付けることで、何ができるかが決まります。
間違い4:Resourceを常に * にする
* はすべてを意味します。
実務では、対象のS3バケットやDynamoDBテーブルなどに絞ります。
関連用語
関連問題
まとめ
IAMユーザー、IAMロール、IAMポリシーはAWSセキュリティの基礎です。
IAMユーザーは利用者、IAMロールは一時的に権限を引き受ける仕組み、IAMポリシーは権限内容です。
この違いを説明できると、AWSポートフォリオのセキュリティ設計も説明しやすくなります。
次に学ぶ内容
比較で違いを理解したら、関連用語と模擬問題で知識を確認してください。 資格試験では「似ているサービスの使い分け」が問われます。