はじめに
AWSを安全に運用するうえで、セキュリティ設定は一度きりではなく、常に見直し・改善されるべき「継続的な運用領域」です。IAMロールやポリシーだけでなく、鍵やシークレット、操作ログの管理も含めたトータルなセキュリティ設計が必要です。
本記事では、AWSセキュリティを実務レベルで徹底するための4つの柱を解説します:
- IAMアクセスアナライザーとポリシーシミュレーター
- AWS KMSによる暗号鍵の管理とローテーション
- Secrets ManagerとParameter Storeの安全な運用
- CloudTrail + GuardDuty + Security Hubの統合運用
1. IAMアクセスアナライザーとポリシーシミュレーター活用
IAMアクセスアナライザー
IAMアクセスアナライザーは、外部からアクセス可能なリソースを検出し、意図しない公開設定を早期に発見するためのツールです。
# アクセスアナライザーの作成(CLI) aws accessanalyzer create-analyzer \ --analyzer-name my-analyzer \ --type ACCOUNT
検出対象の例:
- S3バケットが全公開設定になっている
- KMSキーに他アカウントからのアクセスが可能
- IAMロールがクロスアカウントAssumeされている
IAMポリシーシミュレーター
アクセス権の検証において非常に有効なのが IAMポリシーシミュレーターです。
「このIAMユーザーは、特定の操作を本当に実行できるか?」を事前に検証できます。
# 例:指定ユーザーに対するS3のGetObject許可をシミュレート aws iam simulate-principal-policy \ --policy-source-arn arn:aws:iam::123456789012:user/test-user \ --action-names s3:GetObject \ --resource-arns arn:aws:s3:::my-bucket/*
ポリシーの誤設定や予期せぬアクセス許可のリスクを事前に排除できます。
2. AWS KMSによる暗号鍵の管理
KMS(Key Management Service)とは
AWS KMSは、暗号化・復号化に必要な暗号鍵(CMK: Customer Master Key)を安全に管理するサービスです。S3, RDS, Lambda, EBSなど、主要サービスとシームレスに連携します。
ベストプラクティス
- カスタマー管理キー(CMK)を作成し、用途ごとに分離
- CloudTrailでKMSキーの利用状況をログ化
- 自動ローテーションを有効化して鍵の長期利用を防止
# KMSキーのローテーションを有効にする aws kms enable-key-rotation --key-id <KMSキーARN>
IAMポリシーとキーのポリシー
KMSでは、IAMポリシーとKMSキー自体のポリシーを組み合わせて制御します。設定ミスを防ぐためには、ポリシーシミュレーターでの確認を推奨します。
3. Secrets ManagerとParameter Storeの徹底運用
AWS Secrets Manager
Secrets Managerは、データベース認証情報、APIキー、OAuthトークンなどの機密情報を安全に保存・取得・ローテーションできるサービスです。
特徴:
- 自動ローテーション機能あり
- KMSでの暗号化が標準
- IAMでアクセス制御可能(IRSAとの連携も◎)
# シークレット作成例(CLI) aws secretsmanager create-secret \ --name MyDBSecret \ --secret-string '{"username":"admin","password":"P@ssw0rd"}'
Systems Manager Parameter Store
Parameter Storeは、設定値や非機密の情報を中心に管理するのに向いています。SecureStringタイプを使えば、Secrets Managerに近い機能も実現可能です。
# SecureStringパラメータ登録 aws ssm put-parameter \ --name "/prod/db/password" \ --value "MySecurePassword123" \ --type SecureString \ --key-id alias/aws/ssm
使い分けの目安:
| 用途 | 推奨サービス |
|---|---|
| DBパスワード/APIキー(自動ローテーションしたい) | Secrets Manager |
| アプリ設定値/環境変数 | Parameter Store |
4. CloudTrail + GuardDuty + Security Hubの統合
CloudTrail:操作ログを全記録
CloudTrailは、AWS上でのすべての操作(APIコール)を記録するサービスです。誰が、いつ、どのリソースに何をしたかを確認できます。
ログはS3へ保管し、Athenaで分析可能。さらに、EventBridge連携で異常操作時に自動通知も構築できます。
GuardDuty:不正アクセス検知
GuardDutyは、ログ(VPC Flow Logs、CloudTrail、DNSログ)を分析し、マルウェアや外部からの攻撃兆候を検知するサービスです。
- SSHブルートフォース
- 不審な地理からのAPIコール
- 既知の悪性IPとの通信
Security Hub:脅威情報の統合管理
Security Hubは、GuardDutyやInspector、Config、MacieなどAWSセキュリティサービスからのFindings(検出結果)を統合可視化するサービスです。
# Security Hubの有効化 aws securityhub enable-security-hub --region ap-northeast-1
運用例:
- GuardDuty → 脅威検知
- EventBridge → Lambda実行(インスタンス隔離)
- Security Hub → セキュリティダッシュボードで一元管理
これら3サービスの統合により、検知 → 可視化 → 自動対応 というセキュリティ運用の自動化が実現できます。
まとめ
AWSのセキュリティ強化は、単なる設定だけでなく日々の見直しと仕組み化が重要です。本記事で紹介した4つの観点を軸に、継続的に強化していきましょう。
- IAMアクセスアナライザーとシミュレーターで最小権限を確認・検証
- KMSで鍵の管理・ローテーションを自動化
- Secrets ManagerとParameter Storeでシークレットを安全に保管
- CloudTrail + GuardDuty + Security Hubで可視化と自動対応を構築
次章では、これらセキュリティ施策をTerraformでコード化し、セキュリティ設定の自動監査・自動修復につなげる手法を紹介します。