AWS Certified Cloud Practitioner (CLF-C02) #4 Domain 2-1 セキュリティ — 責任共有モデル、IAM の基礎

読了 10分

#3 までで Domain 1 を終えました。ここから試験の 30% を占める最大のドメイン — Security and Compliance に入ります。このドメインは 2 編に分けて扱います。本記事は責任共有モデルと IAM の基礎、次の #5 はコンプライアンスと暗号化です。

責任共有モデル (Shared Responsibility Model) #

CLF-C02 で最も頻繁に出題される単一概念です。「AWS がどこまで責任を持ち、どこから顧客が責任を持つのか」を 1 枚の図にまとめたモデルです。

責任共有モデルの形
            ┌────────────────────────────────┐
            │   Customer responsibility      │
   IN       │   ── SECURITY IN THE CLOUD ──  │
   THE      │   顧客データ、プラットフォーム │
   CLOUD    │   IAM ポリシー、OS パッチ、FW  │
            │   ネットワーク / FW 設定       │
            │   クライアント / サーバー側暗号│
            └────────────────────────────────┘
            ┌────────────────────────────────┐
            │   AWS responsibility           │
   OF       │   ── SECURITY OF THE CLOUD ──  │
   THE      │   ハードウェア、ネットワーク   │
   CLOUD    │   ホスト OS / ハイパーバイザー │
            │   グローバルインフラ (Region) │
            │   サービス自体のソフトウェア   │
            └────────────────────────────────┘

中核となる用語は 2 つです。

  • Security OF the Cloud — AWS が責任 (クラウド自体のセキュリティ)
  • Security IN the Cloud — 顧客が責任 (クラウドの上に乗せたもののセキュリティ)

領域別の責任 #

領域責任
物理データセンターのセキュリティ・電源・冷却AWS
ハードウェアの廃棄とディスクの破壊AWS
仮想化レイヤー (ハイパーバイザー)AWS
ホスト OS のパッチAWS
グローバルネットワークインフラAWS
ゲスト OS のパッチ (EC2)顧客
ファイアウォール設定 (セキュリティグループ・NACL)顧客
IAM ユーザー・ロール・ポリシーの設定顧客
データ自体 (保存中・転送中)顧客
アプリケーションロジックのセキュリティ (SQL インジェクション・XSS など)顧客

サービスモデルによって変わる責任 #

同じ AWS でも どのサービスを使うか によって顧客責任の範囲が変わります。

サービスタイプ顧客が直接責任を持つ範囲
EC2 (IaaS)OS パッチ・アプリ・データ・ファイアウォールまで全部
RDS (PaaS、マネージド DB)OS・DB エンジンのパッチは AWS、データ・アクセス権限・暗号化キーは顧客
Lambda (サーバーレス)コードと IAM 権限のみ、ランタイム・OS は AWS
S3バケットポリシー・暗号化設定・データ分類は顧客、インフラは AWS
DynamoDBデータモデル・アクセス制御は顧客、DB の運用は AWS

要約: マネージドサービスであるほど AWS の責任が大きくなり、IaaS であるほど顧客の責任が大きくなります

常に顧客が責任を持つもの #

これはどのサービスを使っても顧客の責任です。

  • データ自体 (分類・所有権・アクセス権)
  • IAM ユーザー / ロール / ポリシー の設計
  • 資格情報の管理 (アクセスキーのローテーション、MFA)
  • クライアント側の暗号化 (オプションではあるが必要に応じて適用)

試験の出題パターン #

「OS パッチを自動で適用する責任は誰にあるか?」 → EC2 なら顧客 / RDS なら AWS。選択肢に両方出てくるときはサービス名で分けます。

「S3 バケットのデータを暗号化する責任は?」 → 顧客 (バケットポリシーで暗号化を強制、またはデータ自体を暗号化)。

「EC2 インスタンスで動作するアプリの SQL インジェクション対策の責任は?」 → 顧客

「AWS データセンターの物理セキュリティは?」 → AWS

IAM (Identity and Access Management) #

IAM は 誰が (WHO) AWS リソースに 何を (WHAT) できるかを管理するサービスです。グローバルサービスで、無料で提供されます。

実務トラック #2 でコンソールと CLI から直接触ってみました。資格試験の観点では 概念と語彙 に集中します。

IAM の 4 つの中核 #

オブジェクト意味
User (ユーザー)人 1 人またはマシン 1 台に対応。ログイン用の資格情報を持つ
Group (グループ)複数のユーザーの束。グループにポリシーを付けるとグループ内のすべてのユーザーに適用
Role (ロール)ユーザーではなく 一時的な資格情報。EC2・Lambda・他のアカウントに付与
Policy (ポリシー)「何を許可 / 拒否するか」を定義した JSON ドキュメント

ユーザー (User) #

サインアップ後に IAM コンソールで作成したユーザーです。人またはサービスアカウントとして使用します。

IAM ユーザーが持てる資格情報
{
  "Console Login Password": "コンソール接続用パスワード",
  "Access Key ID + Secret Access Key": "CLI / SDK 用のキーペア",
  "MFA Device": "追加認証"
}

グループ (Group) #

同じ権限を複数のユーザーに与えたいときに使います。例: 「開発者グループ」に EC2 の読み取り / 書き込みポリシーを付けると、グループ内のすべての開発者に適用されます。

グループの制約:

  • グループにはユーザーしか入れられません。グループの中にグループは入れられません
  • グループ自体は資格情報を持ちません。ログインはできません。

ロール (Role) #

最も混同されやすいオブジェクトです。一時的な資格情報 として動作します。

ユースケース説明
EC2 が S3 にアクセスEC2 インスタンスにロールを付与すると、そのインスタンスのコードが S3 を呼び出せる
Lambda が DynamoDB にアクセスLambda 関数にロールを付与
他の AWS アカウントのリソースにアクセスクロスアカウントロール
外部ユーザー (SAML / OIDC) のフェデレーション外部 IdP のユーザーが AWS リソースに一時的にアクセス

ロールとユーザーの本質的な違い:

  • ユーザーは永続的な資格情報。キーが流出したら破棄・再発行が必要
  • ロールは 一時トークン で動作。通常 1 時間有効で自動更新

試験で「EC2 から S3 にアクセスするには資格情報をどう管理すべきか?」が出たら、正解は IAM ロールを付与する (アクセスキーを EC2 に保存するのではなく)。

ポリシー (Policy) #

権限を定義した JSON ドキュメント です。試験でポリシー JSON を直接書く必要はありませんが、構造と語彙 は知っておく必要があります。

IAM ポリシーの基本形
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::my-bucket/*"
    }
  ]
}
キー意味
EffectAllow または Deny
Actionどの API 呼び出し (s3:GetObjectec2:RunInstances など)
Resourceどのリソース ARN
Condition (オプション)追加条件 (IP 帯域・MFA 適用など)

ポリシーの種類 #

種類説明
AWS Managed PolicyAWS が作成・管理するポリシー (AdministratorAccessReadOnlyAccess など)
Customer Managed Policy顧客が自分で作成した再利用可能なポリシー
Inline Policy特定のユーザー / グループ / ロールに直接埋め込まれたポリシー。再利用不可

推奨: AWS Managed Policy → Customer Managed Policy → Inline Policy の順で使うことが推奨されます。

最小権限 (Least Privilege) #

IAM 設計で最も重要な原則です。必要最小限の権限だけ を付与します。

試験の選択肢によく出るアンチパターン:

  • 「すべてのユーザーに AdministratorAccess を付与する」— 常に誤答
  • 「便宜上すべての IAM ユーザーが同じポリシーを使う」— 誤答
  • 「1 人のユーザーにすべての権限を付与し、必要に応じて使う」— 誤答

正解になるパターン:

  • ロール (Role) を定義して必要な人に付与する
  • グループごとにポリシーを分離する (開発者・読み取り専用・管理者)
  • 定期的な権限監査 (IAM Access Analyzer)

MFA (Multi-Factor Authentication) #

パスワードに加えて 2 つ目の認証手段 を要求するセキュリティ強化メカニズムです。

MFA の種類 #

種類
Virtual MFAGoogle Authenticator、Authy のようなスマホアプリ
Hardware MFAYubiKey、Gemalto トークン
U2F Security KeyUSB セキュリティキー (FIDO 標準)
SMS MFASMS でコードを受信 — AWS は 2022 年に廃止

誰に MFA を強制するか #

  • root ユーザー — 無条件で MFA (試験出題頻度は最上位)
  • IAM 管理者クラスのユーザー — 強く推奨
  • コンソールにログインできるすべてのユーザー — ポリシーで強制可能

試験で「AWS アカウントのセキュリティを強化する最初のステップは?」 → root ユーザーに MFA を適用 + IAM ユーザーを作成

Root ユーザーガイド #

サインアップ直後に受け取るアカウントには root ユーザー がいます。すべての権限を持つので、最も保護されるべき資格情報です。

Root でしかできない作業 (試験によく出る) #

作業理由
アカウントを閉じるAWS のサインアップ情報の変更
請求情報の変更クレジットカード・請求先住所の変更
AWS Support プランの変更Basic ↔ Developer ↔ Business ↔ Enterprise
アカウント名・メールの変更サインアップ情報
リージョンの有効化 / 無効化一部のリージョン (Opt-in) は root のみ可能
S3 バケットの MFA Delete 有効化削除保護
一部の請求レポートへのアクセスCost Explorer の一部

Root 使用の原則 #

  • 日常作業は絶対禁止 — IAM ユーザーで
  • MFA 必須 — Hardware MFA 推奨
  • アクセスキーを作らない — 既にあるなら即座に削除
  • パスワードは強力に — 非常に複雑なものを安全な場所に保管

アクセスキー (Access Key) の運用 #

CLI / SDK で使うキーペアです。

アクセスキーの形
Access Key ID:     AKIAIOSFODNN7EXAMPLE
Secret Access Key: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

運用原則 #

  • コードへのハードコード禁止 — git にプッシュされると数分以内にボットが発見
  • EC2 ではアクセスキーの代わりに IAM ロールを使う
  • 定期的なキーのローテーション (Access Key Rotation)
  • 使っていないキーは無効化
  • 2 つを同時に持てる — ローテーション時は新しいキーを作成 → コードを更新 → 古いキーを無効化 → 削除

IAM Identity Center (旧 AWS SSO) #

複数の AWS アカウントと外部 SaaS アプリに 1 つの資格情報 でログインできるサービスです。実務トラック #5 で扱いました。

試験の観点では:

  • 複数の AWS アカウントを使う組織 に推奨
  • 外部 IdP 連携 可能 (Okta・Azure AD など)
  • IAM ユーザーの代わりに 一時的な資格情報 を使用

よく出会う落とし穴 #

1) 「root は常に安全だから日常作業も OK」 #

最も頻繁に出題される罠です。root での日常作業は絶対禁止。IAM ユーザーを作成してそれで作業します。

2) 「最大権限を付与して後で削る」 #

これも選択肢によくあるアンチパターンです。正解は 最小権限から始めて 必要に応じて追加。

3) IAM はグローバルサービスではなくリージョンサービスだという誤解 #

IAM は グローバルサービス です。コンソールで IAM を開くとリージョンセレクターが「Global」に切り替わります。

4) グループの中にグループ #

グループにはユーザーしか入りません。グループの中にグループは 不可

5) 「EC2 上のコードが S3 にアクセスするためにアクセスキーを EC2 に保存」 #

これはアンチパターンです。正解は IAM ロールを EC2 に付与

6) MFA をオプション扱いにする #

root の MFA はオプションではありません。必ず適用 します。

7) Inline Policy の乱用 #

再利用性がないため管理が大変になります。Customer Managed Policy として作成し、複数のオブジェクトに付ける方が良いです。

まとめ #

この記事で押さえたこと:

  • 責任共有モデル — Security OF the Cloud (AWS) vs Security IN the Cloud (顧客)
  • サービスモデルによって責任の境界が変わる — IaaS であるほど顧客の責任が大きい
  • データ・IAM・資格情報は常に顧客の責任
  • IAM の 4 つの中核 — User / Group / Role / Policy
  • ユーザーは永続的な資格情報、ロールは一時的な資格情報 (EC2・Lambda・クロスアカウント)
  • ポリシーは JSON ドキュメント — Effect / Action / Resource / Condition
  • 最小権限の原則 — 必要最小限のみ付与
  • MFA — root には必須、コンソールユーザーには強く推奨
  • Root ユーザー は日常作業禁止。MFA 必須。アクセスキーを作らない
  • 落とし穴 — root の日常使用 / 最大権限の付与 / IAM はリージョンサービスという誤解 / グループの中にグループ / EC2 にアクセスキー保存 / MFA のオプション扱い

次へ — Domain 2-2 コンプライアンスと暗号化 #

Domain 2 の後半に移ります。

#5 Domain 2-2 コンプライアンス — ガバナンス、AWS Artifact、GDPR / HIPAA では、AWS のコンプライアンス認証の種類とその意味、AWS Artifact による認証ドキュメントへのアクセス、ガバナンスツール (CloudTrail・Config)、そしてデータ暗号化 (保存中・転送中) と KMS の役割をまとめます。

X