第 1 章 セキュアなアーキテクチャの設計(30%)
この章で学ぶこと
この章に出てくる用語
arn:aws:s3:::my-bucket/report.pdf のように、サービス・リージョン・アカウント ID・リソース名を「:」で区切って並べる。ポリシーで対象を指定するときは、この ARN を書く。S3 だけは ARN にリージョンとアカウント ID が入らない(バケット名が世界で一意だから)。IAM(Identity and Access Management)がやっているのは、プリンシパル(誰が)・アクション(何を)・リソース(どれに)の 3 つを突き合わせて、許可か拒否かを返すことだけだ。料金はかからない。

3 つのうちどれが欠けても通らない。そして何も書かなければ拒否される。AWS には「とりあえず全部許可」の既定は無い。新しく作った IAM ユーザーは、ポリシーを付けるまで何もできない。
許可の内容は JSON で書く。覚える欄は 4 つだけだ。

| 欄 | 書くこと | 例 |
|---|---|---|
| Effect | 許可か拒否か | Allow / Deny |
| Action | 何をするか(サービス名:操作) | s3:GetObject、ec2:StartInstances |
| Resource | どれに対してか(ARN) | arn:aws:s3:::my-bucket/* |
| Condition | どんなときだけ許すか(任意) | 送信元 IP、MFA 済み、タグが一致 |
ポリシーには貼る場所で 2 種類ある。この区別が設問によく出る。
| アイデンティティベースのポリシー | リソースベースのポリシー | |
|---|---|---|
| 貼る先 | ユーザー・グループ・ロール | リソース自身(S3 バケット、KMS キー、SQS など) |
| 答えること | この人は何をしてよいか | このリソースは誰に触らせるか |
| Principal 欄 | 書かない(貼った相手がプリンシパル) | 書く(誰に許すかをここで指定) |
| 別アカウントへの許可 | できない(ロールを引き受けてもらう) | できる(相手のアカウントを Principal に書く) |
補足
リソースベースのポリシーを使えるサービスは限られている。S3・KMS・SQS・SNS・Lambda・Secrets Manager・ECR などが代表例で、EC2 や RDS には無い。「別アカウントから S3 を読ませたい」ならバケットポリシーで済むが、「別アカウントで EC2 を操作させたい」ならロールを引き受けてもらうしかない。
許可と拒否が混ざったとき、どちらが勝つか。明示的な Deny が 1 つでもあれば、他に何が書いてあっても拒否だ。この一文が IAM の設問のほぼ半分を解く。

試験では
「管理者権限を持っているのに操作できない」という設問は、ほぼ 1・2・3 のどれかだ。AdministratorAccess が付いていても、SCP で禁止されていれば通らないし、権限の境界が狭ければ通らない。「IAM ポリシーを広げる」という選択肢は、この型では誤り。
第 0 章で「ロールは一時的に借りる権限の入れ物」と書いた。借りる操作が AssumeRole で、実際に資格情報を発行するのが AWS STS だ。

ロールにはポリシーが 2 枚付く。ここを取り違える設問が多い。
| ポリシー | 答えること | 書く相手 |
|---|---|---|
| 信頼ポリシー(Trust policy) | 誰がこのロールを引き受けてよいか | プリンシパル(アカウント・サービス・IdP) |
| 権限ポリシー(Permissions policy) | 引き受けた人は何をしてよいか | アクションとリソース |
試験では
「ロールを引き受けられない」という設問では、信頼ポリシー側を疑う。権限ポリシーをいくら広げても、信頼ポリシーに相手が書かれていなければ引き受けられない。逆に「引き受けられるが操作できない」なら権限ポリシー側だ。
別アカウントのリソースを触らせる形はこうなる。相手のアカウントにロールを作り、その信頼ポリシーに自分のアカウントを書く。自分側のユーザーには sts:AssumeRole の許可を与える。この 2 つがそろって初めて通る。
補足
ロールを引き受けた先からさらに別のロールを引き受けること(ロールチェイニング)はできるが、その場合のセッションは最大 1 時間に制限される。12 時間に設定していても延びない。
実務ではアカウントを 1 つで使い続けない。本番と開発を分ける、部署ごとに分ける、請求をまとめる、といった理由でアカウントは増える。それをまとめるのが AWS Organizations だ。

| SCP | IAM ポリシー | |
|---|---|---|
| 役割 | 上限を決める(ガードレール) | 権限を与える |
| 付ける先 | ルート・OU・アカウント | ユーザー・グループ・ロール |
| 単体で操作できるか | できない | できる |
| 管理アカウントへの効き方 | 効かない | 効く |
| ルートユーザーへの効き方 | メンバーアカウントのルートには効く | 効かない(ルートは制限できない) |
試験では
SCP は管理アカウントには効かない。「組織全体で ap-northeast-1 以外を使えなくしたい」という要件で管理アカウントだけ制限が効かない、という設問が出る。対策は「管理アカウントでワークロードを動かさない」。
社員が 500 人いるとして、IAM ユーザーを 500 個作るのは誤りだ。既にある ID(Active Directory や社内の IdP)を使い、AWS 側ではロールに対応づける。これをフェデレーションと呼ぶ。

| 使うもの | 向いている相手 | 何をするか |
|---|---|---|
| IAM Identity Center | 社員(複数アカウントを使う) | 1 回のサインインで複数アカウント・複数ロールへ。外部 IdP とも繋げる |
| SAML 2.0 フェデレーション | 社員(既存の IdP がある) | IdP の認証結果を STS に渡してロールを引き受ける |
| AWS Directory Service | Active Directory を使っている組織 | マネージドな AD、または既存 AD への接続(AD Connector) |
| Amazon Cognito | アプリの利用者(一般ユーザー) | アプリのサインアップ/サインイン。AWS コンソールの話ではない |
試験では
Cognito は「アプリを使う一般ユーザー」用、IAM Identity Center は「社員」用。この 2 つを入れ替えた選択肢が必ず出る。問題文が「モバイルアプリの利用者が」と言っていたら Cognito、「従業員が複数アカウントに」と言っていたら IAM Identity Center。
補足
IAM Identity Center は以前「AWS Single Sign-On(AWS SSO)」という名前だった。試験ガイドにも両方の名前が併記されている。選択肢にどちらで出ても同じものと分かるようにしておく。
最後に、設問で「誤り」として並ぶ定番と、「どう確認するか」を問われたときの道具をまとめる。
| やりがちな形 | なぜ誤りか | 正しい形 |
|---|---|---|
| ルートユーザーで日常作業する | 権限を削れず、漏れたら終わり | MFA を付けてしまい、IAM ユーザー/ロールを使う |
| EC2 にアクセスキーを置く | 漏れる・期限が無い | インスタンスプロファイル(ロール) |
| ユーザーに直接ポリシーを付けて回る | 増えると管理できない | グループに付けて、ユーザーをグループに入れる |
| とりあえず * で許可する | 最小権限に反する | 必要なアクションとリソースだけ書く |
| アカウントを共有する | 誰がやったか分からない | 人ごとに ID を分ける(CloudTrail で追える) |
| 道具 | 分かること |
|---|---|
| IAM Access Analyzer | 外部に公開されているリソースを洗い出す(意図しない公開の検出) |
| 認証情報レポート(Credential Report) | 全ユーザーのキーの古さ・MFA の有無を一覧で出す |
| IAM ポリシーシミュレーター | このポリシーでその操作が通るかを、実行せずに試す |
| AWS CloudTrail | 誰がいつ何の API を呼んだか。監査の基本 |
| AWS Config | リソースの設定が決めた形から外れていないか |
試験では
CloudTrail は「誰が何をしたか」、CloudWatch は「どれだけ使われたか」、Config は「設定が決めた形か」。3 つとも監視に見えるので入れ替えた選択肢が出る。「操作の記録をたどりたい」なら CloudTrail で確定。
組織では全アカウントで ap-northeast-1 以外のリージョンを使えないようにしたい。ところが管理アカウントだけ制限が効かない。どうするか。
補足
答え:管理アカウントではワークロードを動かさない(SCP は管理アカウントに効かないため)。
SCP は管理アカウントに適用されない、という仕様をそのまま突いた設問。「管理アカウントにも SCP を適用する」という選択肢は存在しない操作なので落ちる。
監査法人の担当者に、本番アカウントの読み取り専用アクセスを 2 週間だけ渡したい。相手は別の AWS アカウントを持っている。最も適切な方法は。
補足
答え:本番アカウントに読み取り専用のロールを作り、信頼ポリシーに相手のアカウントを書いて引き受けてもらう。
IAM ユーザーを作って渡す案は、長期の認証情報が増えるので落ちる。リソースベースのポリシーは S3 などには書けるが、アカウント全体の読み取りには向かない。
この章のまとめ
この章の根拠
最終確認 2026-10-04 / 対応バージョン DEA 2026-05-04 改訂版