IAMポリシーの権限を広めに設定したまま放置していたことに、セキュリティ監査で気づかされた経験がある。「動けばいい」で終わらせず、各サービスの役割を正しく理解しておくことの重要性を書いている。
IAM — 認証・認可の根幹
図1: IAM・WAF・KMS・Shield・Cognito のセキュリティ層
AWS IAM(Identity and Access Management) は AWS のすべての操作に関わる認証・認可サービスです。 「誰が」「何を」「どのリソースに対して」操作できるかを JSON ポリシーで細かく制御します。
⚠️ ルートアカウントの扱い
AWS アカウントのルートユーザーは日常業務に使用しないことが鉄則です。ルートアカウントは MFA を設定したうえで厳重に管理し、通常操作は適切な権限を持つ IAM ユーザー・ロールで行います。
✅ 最小権限の原則
IAM ポリシーは必要最小限の権限のみを付与します。*(ワイルドカード)を使った過剰な権限付与は、セキュリティインシデント時の影響範囲を拡大させます。
WAF — Webアプリケーションファイアウォール
AWS WAF は HTTP/HTTPS レベルの攻撃を検知・ブロックするファイアウォールです。 CloudFront・ALB・API Gateway にアタッチして使用します。
KMS — 暗号化キー管理
AWS KMS(Key Management Service) は暗号化キーの作成・管理・使用を一元化するサービスです。 S3・RDS・EBS・Secrets Manager など多くの AWS サービスが KMS と統合されており、データを暗号化する際のキー管理を担います。
| キータイプ | 管理者 | 用途 |
|---|---|---|
| AWS 管理キー | AWS が自動作成・管理 | S3・RDS のデフォルト暗号化など。カスタマイズ不可 |
| カスタマー管理キー(CMK) | ユーザーが作成・管理 | ローテーションポリシーやアクセスポリシーを細かく制御したい場合 |
| インポート済みキー | ユーザーがキーマテリアルを持ち込み | 既存の HSM・PKI からキーをインポートする場合 |
Shield — DDoS防御
AWS Shield は DDoS(分散型サービス拒否)攻撃からAWSリソースを保護するサービスです。
Shield Standard はすべての AWS ユーザーに無料で自動適用され、L3/L4 レベルの一般的な DDoS 攻撃を防御します。 Shield Advanced は有料オプションで、L7 の高度な DDoS 攻撃への対応・DDoS コスト保護・AWS DDoS レスポンスチーム(DRT)へのアクセスが追加されます。
Cognito — ユーザー認証
Amazon Cognito はWebアプリ・モバイルアプリのユーザー認証基盤をマネージドで提供するサービスです。
Secrets Manager — シークレット管理
AWS Secrets Manager は DB パスワード・API キー・OAuth トークンなどのシークレットを安全に保存・ローテーションするサービスです。 アプリケーションのコード中にパスワードをハードコーディングする代わりに、実行時に Secrets Manager から取得する設計パターンが推奨されます。 RDS / Aurora のパスワードを自動ローテーションする機能も提供しています。
💡 Parameter Store との使い分け
Secrets Manager:シークレットの自動ローテーションが必要な場合・コスト許容できる場合。Systems Manager Parameter Store:設定値(非シークレット)や簡単なシークレット管理。無料枠が広い。
セキュリティサービス一覧
| サービス | 分類 | 主な役割 |
|---|---|---|
| IAM | 認証・認可 | AWS リソース操作の認証・認可の根幹。すべての設計の起点 |
| Cognito | ユーザー認証 | アプリユーザーのサインアップ・ログイン・MFA 管理 |
| WAF | 防御(L7) | SQLi・XSS・レートリミット・ボット対策 |
| Shield | 防御(L3/L4) | DDoS 攻撃の自動検知・軽減 |
| KMS | 暗号化 | 各種サービスのデータ暗号化キー管理 |
| Secrets Manager | シークレット管理 | パスワード・APIキーの保管・自動ローテーション |
| GuardDuty | 脅威検知 | 異常な API コール・マルウェア通信の検知(機械学習) |
| Security Hub | 一元管理 | 複数セキュリティサービスの検出結果を集約・可視化 |
AWSセキュリティ設定でよくある誤り
IAM・KMS・CloudTrailなどセキュリティサービスの設定漏れは、侵害検知の遅延や権限昇格リスクにつながります。
| 誤り/失敗パターン | 何が起きるか | 正しい対処/防止策 |
|---|---|---|
| rootアカウントのアクセスキーを日常業務で使用する | キー漏洩時にアカウント全体が乗っ取られる最大リスクになる | rootアカウントのアクセスキーは作成せずMFAを有効化し、日常業務はIAMユーザー/ロールを使う |
| IAMポリシーで「Action: *」「Resource: *」を広く付与する | 最小権限の原則が守られず侵害時の被害範囲が拡大する | 必要最低限のアクションとリソースARNを明示したポリシーを作成する |
| CloudTrailを有効化せずにAWS操作ログを残さない | 不正操作や誤設定の原因究明が困難になる | 全リージョンでCloudTrailを有効化してS3に操作ログを保存する |