この記事の目的(AWS Certified Cloud Practitioner 対策)
AWS Certified Cloud Practitioner(CLF-C02)では、「代表的なセキュリティの考え方」と「主要セキュリティサービスの役割分担」を、実装レベルではなく“説明できる”ことが重要です。試験の公式範囲は、試験ガイドで確認できます。
- https://d1.awsstatic.com/ja_JP/training-and-certification/docs-cloud-practitioner/AWS-Certified-Cloud-Practitioner_Exam-Guide.pdf
- https://aws.amazon.com/jp/certification/certified-cloud-practitioner/
まず押さえる:攻撃は「どこ」を狙うかで対策が変わる
同じ“セキュリティ”でも、狙われる場所(レイヤー)が違います。CLFレベルでは、次の切り分けができると理解が一気に楽になります。
| 狙い | 攻撃例 | 主に効くAWSサービス(代表) |
|---|---|---|
| Webリクエストの中身(アプリ層/L7) | SQLインジェクション、XSS、不正なURL/パス探索、ボット | AWS WAF |
| 大量トラフィック(ネットワーク/トランスポート層中心) | DoS / DDoS | AWS Shield(+必要に応じてWAFのレート制限) |
| ユーザー認証(ログイン) | なりすまし、弱いパスワード運用、認証基盤の作り込み不備 | Amazon Cognito |
| データ(S3に置かれた機密情報) | 個人情報・機密情報の混入、意図しない公開 | Amazon Macie |
アプリに対する代表的な攻撃(試験でイメージできればOK)
1) 不正なURL/パス探索(“直打ち”や“推測”で入口を探す)
例:管理画面や非公開APIのURLを推測してアクセスする(/admin、/internalなど)。
ポイント:WAFは「特定パスをブロック」などのルールで入口対策に使える一方、最終的にはアプリ側の認可(アクセス権チェック)も重要です。
2) SQLインジェクション(SQLi)
入力欄などにSQLの断片を混ぜ、DBへの問い合わせを不正に変える攻撃です。AWS WAFはSQLiのパターン検知(ルール)を提供します。
3) OSコマンドインジェクション
サーバーがOSコマンドを実行する仕組みに入力が混ざり、不正コマンドが実行されるタイプです。原則はアプリ実装(安全な引数処理、そもそもシェル実行を避ける等)で防ぎます。
4) XSS(クロスサイトスクリプティング)
悪意あるスクリプトをページに混入させ、閲覧者のブラウザで実行させる攻撃です。AWS WAFにはXSS検知のステートメントもあります。
- XSS一致ステートメント:https://docs.aws.amazon.com/ja_jp/waf/latest/developerguide/waf-rule-statement-type-xss-match.html
5) DoS / DDoS
大量アクセスでサービスを使えなくする攻撃です。AWSではDDoS保護の中核としてAWS Shieldが位置づけられます。
AWS WAF:Webアプリへのリクエストを検査してブロックする(L7の門番)
AWS WAFの役割(CLF向け要点)
- HTTP/HTTPSリクエストを検査し、ルールに基づいて許可/遮断/カウントする
- SQLiやXSSなど、Webアプリの典型的攻撃パターンやボット対策に使う
公式ドキュメント(概念):https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html
どこに適用できる?(試験で聞かれやすい)
AWS WAFはWeb ACL(ウェブACL)を、CloudFrontやALBなどのリソースに関連付けて保護します。保護対象の例は公式に列挙されています。
- 保護できるリソース種別の一覧(例:CloudFront、ALB、API Gateway、AppSync、Cognito user pool など):https://docs.aws.amazon.com/waf/latest/developerguide/what-is-aws-waf.html
- 関連付け(日本語):https://docs.aws.amazon.com/ja_jp/waf/latest/developerguide/web-acl-associating-aws-resource.html
マネージドルール(運用を簡単にする“既製品ルール”)
CLFでは「WAFにはマネージドルールがあり、一般的な攻撃パターンを素早く対策できる」点が重要です。例として、ベースラインのルールグループではXSSパターンの検査が説明されています。
- ベースラインルールグループ:https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-baseline.html
レート制限(“短時間に多すぎるアクセス”を抑える)
DoSの入口やボットの連打など、「同じ条件のリクエストが急増」するケースに対して、WAFのレートベースルールが使えます。
- レートベースルール(英語):https://docs.aws.amazon.com/waf/latest/developerguide/waf-rule-statement-type-rate-based.html
- レートベースルール(日本語):https://docs.aws.amazon.com/ja_jp/waf/latest/developerguide/waf-rule-statement-type-rate-based.html
試験の引っかけ(WAFでできること/できないことの感覚)
- できる(代表):SQLiやXSSなど“Webリクエストのパターン”をルールで検査・遮断
- 単独では完結しない(代表):“認可ミス”(他人のデータを見られる等)や、アプリ内部の実装不備はアプリ側対策も必要
AWS Shield:DDoS保護(Standard と Advanced)
Shieldの位置づけ(CLF向け)
AWS Shieldは、DDoS(分散型サービス拒否)攻撃に対する保護を提供します。Standardは自動的に提供され、Advancedはより高い保護のためにサブスクライブします。
- Shieldの概要(ドキュメント):https://docs.aws.amazon.com/waf/latest/developerguide/ddos-overview.html
- 製品ページ(日本語):https://aws.amazon.com/jp/shield/
Standard と Advanced の違い(覚え方)
- Shield Standard:基本のDDoS保護。AWS利用時に自動的に提供される(追加料金なし、と説明されている)
- Shield Advanced:高度なDDoS保護と運用支援(例:専門チームの支援など)を含む
補足として、Shield AdvancedにはShield Response Team(SRT)による支援が説明されています(利用要件も記載)。
Amazon Cognito:アプリのユーザー認証(ユーザープール / IDプール)
まず結論:User Pools と Identity Pools は役割が違う
公式ドキュメントでも「主要コンポーネントは user pools と identity pools」と整理され、役割が説明されています。
- 代表シナリオ(user pools / identity pools の説明あり):https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-scenarios.html
User Pool(ユーザープール):アプリの“会員DB+ログイン”
- サインアップ(登録)・サインイン(ログイン)など、アプリ利用者の認証を提供
- アプリ視点ではOIDC(OpenID Connect)のIdPとして機能する、と説明されている
- User Pools(公式):https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools.html
Identity Pool(IDプール):一時的なAWS認証情報で“他のAWSサービス利用”を許可
- 認証済みユーザー(またはゲスト)に、他のAWSサービスへアクセスするための一時的認証情報を提供
- 例:ログインしたユーザーだけがS3へアップロードできる、など
- Identity Pools(公式):https://docs.aws.amazon.com/cognito/latest/developerguide/identity-pools.html
Amazon Macie:S3内の機密データを“発見・可視化”する
Macieの役割(CLF向け要点)
- S3にあるデータを対象に、機密データの検出(発見)とレポートを自動化できる
- 自動(継続)検出と、ジョブ(指定範囲の検出)の2つのやり方がある
- 機密データを検出すると、詳細なレポートを含むFinding(検出結果)を作成する、と説明されている
- Macieとは(公式):https://docs.aws.amazon.com/macie/latest/user/what-is-macie.html
- 機密データ検出(公式):https://docs.aws.amazon.com/macie/latest/user/data-classification.html
- 自動(継続)検出(公式):https://docs.aws.amazon.com/macie/latest/user/discovery-asdd.html
- 製品ページ:https://aws.amazon.com/macie/
例:どんなときにMacieが効く?
- ログやCSVをS3に置いたが、個人情報が混ざっていた(混入の早期発見)
- データが増えて把握できなくなった(どこに機密情報があるか棚卸し)
試験での“選び分け”ミニ問題(直前復習)
- Q:SQLiやXSSのようなWeb攻撃をブロックしたい
→ A:AWS WAF(Webリクエストをルール検査) - Q:大規模DDoSから守りたい
→ A:AWS Shield(Standard / Advancedの違いも押さえる) - Q:アプリのログイン機能(ユーザー管理・認証)を用意したい
→ A:Amazon Cognito User Pool - Q:ログイン後、S3など他AWSサービスへのアクセス権を一時的に渡したい
→ A:Amazon Cognito Identity Pool - Q:S3に機密データが含まれていないか自動的に検出したい
→ A:Amazon Macie
不確かな点の扱い(断定せずに整理)
(1) 確実に言えること
- AWS WAFはHTTP/HTTPSリクエストを検査し、CloudFrontやALBなどの保護対象にWeb ACLを関連付けて防御する、と公式ドキュメントに記載がある:https://docs.aws.amazon.com/waf/latest/developerguide/what-is-aws-waf.html
- AWS ShieldはDDoS保護を提供し、StandardとAdvancedがある、と公式ドキュメントに記載がある:https://docs.aws.amazon.com/waf/latest/developerguide/ddos-overview.html
- Amazon Cognitoはuser poolsとidentity poolsが主要コンポーネントで、user poolsはサインアップ/サインイン、identity poolsは一時的なAWS認証情報を提供する、と公式ドキュメントに記載がある:https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-scenarios.html
- Amazon MacieはS3の機密データ検出(自動検出やジョブ)を提供し、検出するとFindingを作る、と公式ドキュメントに記載がある:https://docs.aws.amazon.com/macie/latest/user/what-is-macie.html
(2) 推測(可能性が高い/低い、根拠つき)
- 可能性が高い:OSコマンドインジェクションの“根本対策”はWAFよりアプリ実装(安全なコマンド実行・入力処理)であることが多い。
根拠:OSコマンドインジェクションはアプリ内部の実行ロジックに依存し、HTTPリクエストパターン検知だけで万能に防げるとは一般に言いづらいため(CLFで求められるのは概念理解)。
(3) 不明点(追加で確認すべき点)
- 特定のアプリ要件に対して「WAFだけでOSコマンドインジェクションをどこまで防げるか」は、アプリの実装・入力経路・ルール設計に依存するため一概に断定できない。必要なら、実際のリクエスト形式とWAFルール設計(マネージドルール適用範囲)を追加確認する。
まとめ(CLF-C02向け暗記フレーズ)
- WAF:Webリクエストの中身をルール検査(SQLi/XSS/ボット/レート制限)
- Shield:DDoS保護(Standard / Advanced)
- Cognito:ログイン基盤(User Pool)+ AWS権限の一時付与(Identity Pool)
- Macie:S3内の機密データを検出・可視化(自動検出/ジョブ)
