AWS SAP / SAA 頻出
IAM 入門
AWSリソースへのアクセスを安全に管理するサービス。試験の全領域に関わる最重要サービスです。
1. IAM とは?
- AWS Identity and Access Management(IAM)
- AWSリソースへのアクセスを安全に管理するサービス
- グローバルサービス(リージョン非依存)
- 誰が(Who)何を(What)どのリソースに(Resource)できるかを定義する
2. IAM の 4 つの構成要素
ユーザー(User)
AWSコンソールやAPIにアクセスする人・アプリケーション。長期的な認証情報(パスワード・アクセスキー)を持つ。
グループ(Group)
ユーザーの集合。グループにポリシーをアタッチすることで、複数ユーザーへ一括で権限を付与できる。
ロール(Role)
AWSサービスやアカウント間で一時的に権限を委任する仕組み。EC2・Lambda・別アカウントなどが「引き受ける」。
ポリシー(Policy)
許可・拒否するアクションをJSONで定義したドキュメント。ユーザー / グループ / ロールにアタッチして使う。
関係図
ポリシー → ユーザー / グループ / ロール にアタッチ
グループ → 複数のユーザーを含む
ロール → EC2, Lambda, 別アカウントなどが引き受ける
3. ポリシーの種類
| 種類 | 説明 |
|---|---|
| AWS 管理ポリシー | AWSが提供する既製品ポリシー(例: AmazonS3ReadOnlyAccess)。再利用可能・複数エンティティにアタッチ可。 |
| カスタマー管理ポリシー | 自分で作成・管理するポリシー。バージョン管理対応で柔軟にカスタマイズできる。 |
| インラインポリシー | ユーザー / グループ / ロールに直接埋め込む。対象を削除すると一緒に削除される。1対1の関係。 |
| リソースベースポリシー | S3バケットポリシーなどリソース側に設定するポリシー。プリンシパルを明示的に指定する。 |
4. ポリシーの評価ロジック
- デフォルト拒否(Implicit Deny)— すべてのリクエストは最初に拒否
- 明示的な Deny があれば拒否(最優先・例外なし)
- 明示的な Allow があれば許可
- 上記以外はすべて拒否
試験ポイント: 「Deny は常に優先する」— Allow が何件あっても Deny が 1 件あれば拒否されます。
5. IAM ロールと AssumeRole
- EC2インスタンスにロールをアタッチ → インスタンスプロファイル経由で権限取得
- Lambda・ECS・EKSなどもロールで権限を持つ(アクセスキー不要)
sts:AssumeRoleで一時的な認証情報(トークン)を取得- クロスアカウントアクセスには信頼ポリシー(Trust Policy)の設定が必要
試験ポイント: 「EC2からS3にアクセスさせたい → EC2にIAMロールをアタッチ」— アクセスキーの埋め込みは NG。
6. 最小権限の原則
- 必要最小限の権限だけ付与するセキュリティのベストプラクティス(Least Privilege)
- root アカウントは日常使用しない(MFA を必ず有効化)
- アクセスキーの代わりに IAM ロールを使用する
- 使用していないユーザー・アクセスキーは定期的に棚卸しして削除する
7. 条件キー(よく出る)
aws:MultiFactorAuthPresent
MFA認証済みかどうかを確認。MFAなしのアクセスを拒否する条件として使用。
aws:RequestedRegion
リクエストが向かうリージョンを制限する。特定リージョン以外への操作を禁止可能。
aws:SourceIp
送信元 IP アドレスを制限する。社内ネットワークからのみアクセスを許可するなど。
s3:prefix
S3 オブジェクトのプレフィックスを制限する。特定フォルダへのアクセス制限に使用。
8. Organizations と SCP
- AWS Organizations: 複数の AWS アカウントを一元管理する仕組み
- SCP(サービスコントロールポリシー): 組織・OU・アカウントレベルで最大権限を制限
- SCP は IAM ポリシーより上位 — SCP で拒否されれば IAM が Allow しても不可
- SCP で許可しただけでは権限は与えられない(IAM ポリシーとの AND 条件)
試験ポイント: 「全アカウントで特定のサービス禁止 → SCP」— 組織全体へ一括適用できる。
9. 試験頻出ポイント まとめ
よく問われるシナリオ
- 「アクセスキーの代わりに → IAM ロール(ベストプラクティス)」
- 「クロスアカウントアクセス → AssumeRole + 信頼ポリシー」
- 「全アカウントで特定のサービス禁止 → SCP(Organizations)」
- 「Deny は何があっても優先 → 明示的 Deny が 1 つでもあれば拒否」
- 「EC2 から S3 にアクセス → IAM ロールをアタッチ(アクセスキー埋め込みは NG)」
- 「グループはネストできない → グループの中にグループは入れられない」