はじめに
AWS Certified Cloud Practitioner では、IAM(AWS Identity and Access Management)の基本概念が頻出です。特に混同しやすいのが、IAMユーザー、IAMグループ、IAMロール、IAMポリシーの違いです。
この4つはすべてアクセス管理に関係しますが、役割は同じではありません。試験対策では、まず次のように整理すると理解しやすくなります。
- IAMユーザー:個別の利用者やワークロードを表すID
- IAMグループ:複数のIAMユーザーをまとめる入れ物
- IAMロール:必要なときに引き受ける一時的な権限
- IAMポリシー:何を許可・拒否するかを定義するルール
まず押さえたい全体像
IAMでは、「誰に権限を与えるか」と「何を許可するか」を分けて考えることが重要です。
- IAMユーザー、IAMグループ、IAMロール:権限を持つ対象
- IAMポリシー:その対象に付与する権限の中身
つまり、ポリシーが権限そのものであり、ユーザー・グループ・ロールはその権限を受け取る側です。
4つの違いを一覧で整理
| 項目 | 役割 | 試験での見分け方 | 典型例 |
|---|---|---|---|
| IAMユーザー | 個別のID | 人やアプリごとに個別管理したい | 運用担当者Aのログイン用ID |
| IAMグループ | IAMユーザーの集合 | 複数ユーザーへ同じ権限をまとめて付与したい | Developersグループ、Adminsグループ |
| IAMロール | 一時的に引き受ける権限 | EC2やLambdaに権限を与えたい、クロスアカウントアクセスをしたい | EC2からS3にアクセスするための権限 |
| IAMポリシー | 許可・拒否ルール | 何ができるかを定義するJSON文書 | S3読み取りのみ許可する設定 |
1. IAMユーザーとは何か
IAMユーザーは、AWSアカウント内に作成する個別のIDです。人間の利用者だけでなく、場合によってはワークロードを表すためにも使われます。AWS公式ドキュメントでは、IAMユーザーは名前と認証情報を持つエンティティとして説明されています。
たとえば、運用担当者がAWSマネジメントコンソールへログインするためのアカウントや、CLIを使うための個別IDがIAMユーザーです。
試験で重要なポイント
- IAMユーザーは個別のIDである
- コンソール用パスワードやアクセスキーのような長期的な認証情報を持たせることができる
- AWSアカウントのルートユーザーとは別物
試験での注意点
AWSは現在、人間の利用者に対しては、長期認証情報を持つIAMユーザーを多用するよりも、フェデレーションや一時的認証情報の利用を推奨しています。そのため、試験では「できるだけ一時的な認証情報を使う」という思想を理解しておくと有利です。
2. IAMグループとは何か
IAMグループは、複数のIAMユーザーをまとめるための機能です。グループ自体がログインするわけではなく、同じ権限を持たせたいユーザーをまとめて管理するために使います。
たとえば、開発者10人全員に同じ読み取り権限を付けたい場合、各ユーザーへ個別に設定するのではなく、DevelopersというIAMグループにポリシーを付与し、そのグループへユーザーを所属させると効率的です。
試験で重要なポイント
- IAMグループはIAMユーザーの集合
- 権限管理をまとめて行うための仕組み
- 1人のIAMユーザーは複数グループに所属できる
試験での注意点
- IAMグループに入れられるのはIAMユーザーであり、ロールは入れられない
- IAMグループは認証主体ではないため、Principalとして扱うものではない
3. IAMロールとは何か
IAMロールは、特定の権限を持つIDですが、IAMユーザーのように特定の1人に固定されるものではありません。必要なときに誰か、または何かがそのロールを引き受ける(Assume Role)ことで、一時的な認証情報を使ってAWSへアクセスします。
Cloud Practitioner試験では、IAMロールは特に重要です。なぜなら、AWSサービスに安全に権限を与えるときの基本手段だからです。
代表例
- EC2インスタンスにS3アクセス権限を与える
- Lambda関数にDynamoDBアクセス権限を与える
- 別AWSアカウントの利用者へ安全にアクセスを許可する
試験で重要なポイント
- IAMロールは一時的な認証情報を使う
- 長期のアクセスキーをアプリへ埋め込まなくてよい
- EC2、Lambda、ECSなどのAWSサービスへ権限を付与するときによく使う
- クロスアカウントアクセスでも多用される
試験でよくある出題パターン
「EC2からS3へ安全にアクセスさせたい」という問題で、IAMユーザーとアクセスキーを作る選択肢は不適切になりやすく、正解はIAMロールになることが多いです。これは、ロールを使えば一時的認証情報で安全にアクセスできるためです。
4. IAMポリシーとは何か
IAMポリシーは、AWSリソースに対して何を許可し、何を拒否するかを定義するJSON形式のルールです。ユーザー、グループ、ロールなどに関連付けて使います。
たとえば、「S3バケットの中身を読むことはできるが、削除はできない」といった権限の内容を定義するのがポリシーです。
ポリシーでよく出る要素
- Effect:Allow または Deny
- Action:どの操作を許可・拒否するか
- Resource:どのリソースを対象にするか
- Condition:どんな条件で適用するか
試験で重要なポイント
- ポリシーは権限の中身である
- ユーザー、グループ、ロールに付与できる
- JSONベースで定義される
ポリシーの種類
- AWS管理ポリシー:AWSが用意している再利用可能なポリシー
- カスタマー管理ポリシー:利用者が自分で作成・管理する再利用可能なポリシー
- インラインポリシー:特定の1つのユーザー、グループ、ロールに直接埋め込むポリシー
試験で非常に重要なルール
- AWSは基本的にデフォルト拒否
- 明示的にAllowされていなければ許可されない
- 明示的DenyはAllowより優先
Cloud Practitioner試験向けの覚え方
次の一行で覚えると、かなり整理しやすくなります。
- IAMユーザー:人ごとの個別ID
- IAMグループ:ユーザーをまとめる箱
- IAMロール:必要時に借りる権限
- IAMポリシー:権限のルール本体
よくある引っかけ問題
引っかけ1:複数人へ同じ権限を付与したい
正解の基本はIAMグループです。各ユーザーにバラバラにポリシーを付けるより、グループでまとめた方が管理しやすく、試験でも定番の考え方です。
引っかけ2:EC2に権限を与えたい
正解の基本はIAMロールです。IAMユーザーのアクセスキーをEC2に保存するのは、より安全な方法があるため不適切と判断されやすいです。
引っかけ3:Allowしたのにアクセスできない
明示的Denyがどこかに設定されている可能性があります。試験では、DenyがAllowより優先というルールを覚えておくことが重要です。
引っかけ4:IAMグループそのものをアクセス主体として使う
IAMグループは権限整理の単位であり、ログイン主体や引受主体ではありません。ここを混同しないようにしましょう。
試験直前チェックリスト
- IAMユーザーは個別ID
- IAMグループは複数ユーザーへの一括権限付与に向く
- IAMロールは一時的認証情報を使う
- AWSサービスに権限を与えるときはロールが基本
- IAMポリシーは許可・拒否ルールのJSON
- 明示的DenyはAllowより優先
- ルートユーザーとIAMユーザーは別物
まとめ
IAMの4要素は、Cloud Practitioner試験の中でも基礎でありながら非常に重要です。単語の意味だけでなく、「どの場面でどれを使うか」を整理して覚えると、問題文の選択肢をかなり絞りやすくなります。
特に試験では、個別IDはIAMユーザー、複数人の一括管理はIAMグループ、AWSサービスやクロスアカウントにはIAMロール、権限内容そのものはIAMポリシーという対応関係を確実に押さえておくと得点しやすくなります。
参考にしたAWS公式情報
- IAMユーザー:https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html
- IAMグループ:https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html
- IAMロール:https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html
- IAMポリシー:https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html
- IAMポリシーの種類:https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html
- ポリシー評価ロジック:https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic_policy-eval-denyallow.html
- 一時的な認証情報:https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html
- EC2でのIAMロール利用:https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html
