CloudWatch Logs のセキュリティベストプラクティス
Amazon CloudWatch Logs のセキュリティ確保は、コンプライアンスの維持、機密データの保護、適切な監査証跡の確保に不可欠です。このガイドでは、重要な削除保護機能を含む、ログ グループに関する堅牢なアクセス許可制御とセキュリティ ポリシーを実装するための包括的なベスト プラクティスを提供します。
はじめに
Amazon CloudWatch Logs を使用すると、システム、アプリケーション、AWS サービスからのログを単一の高度にスケーラブルなサービスに集約できます (Amazon CloudWatch Logs とは?)。ただし、適切なセキュリティコントロールがないと、ログデータは資産ではなく脆弱性になる可能性があります。このガイドでは、最小権限アクセス、暗号化、リソースベースのポリシー、削除保護、包括的な監査を実装して、ロググループを安全かつコンプライアンスに準拠した状態に保つことに焦点を当てています。
なぜこれが重要なのか
セキュリティへの影響
ログデータには、ユーザーアクティビティ、システム設定、API 呼び出し、および個人を特定できる情報 (PII) を含む機密情報が含まれていることがよくあります。ログへの不正アクセスは、インフラストラクチャ、アプリケーションの動作、およびビジネスオペレーションに関する重要なセキュリティの詳細を公開する可能性があります。さらに、ロググループの誤削除または悪意のある削除は、重要な監査証跡の損失やコンプライアンス違反につながる可能性があります。
コンプライアンス要件
多くの規制フレームワークでは、アクセス制限、保管時および転送時の暗号化、保持ポリシー、削除保護、監査証跡など、ログデータに関する特定の管理が求められます。適切なアクセス許可管理と削除保護は、これらの要件を満たすための基本となります。
オペレーショナルエクセレンス
適切に構造化された権限により、チームは必要なログにアクセスできる一方で、不要な変更や削除を防ぐことができます。このバランスにより、データの整合性を維 持しながら、セキュリティと運用効率の両方をサポートします。
セキュリティのベストプラクティス
CloudWatch Logs のセキュリティは、複数層のアクセス制御、削除保護、暗号化メカニズムを通じて動作し、これらが連携してログデータを保護します。包括的なセキュリティを実装するには、IAM ポリシー、削除保護、暗号化、リソースポリシー、継続的なモニタリングを組み合わせた多層的なアプローチが必要です。
1. CloudWatch Logs の階層とセキュリティ境界
CloudWatch Logs アーキテクチャを理解することは、効果的なセキュリティコントロールを実装するための基本です。適切なログの整理と階層設計は、他のすべてのセキュリティ対策の基盤となります。
CloudWatch Logs は、セキュリティコントロールに直接影響する 2 レベルの階層を使用します (ロググループとログストリームの操作)。
- ロググループ: 保持ポリシー、暗号化 設定、アクセス許可、削除保護を定義する最上位のコンテナです。各ロググループは、独自の IAM ポリシーと KMS 暗号化キーを持つセキュリティ境界として機能します
- ログストリーム: ロググループ内の個別のログイベントのシーケンスで、通常は単一のソース (EC2 インスタンス、Lambda 関数、アプリケーションプロセスなど) を表します。ログストリームは親ロググループからセキュリティ設定を継承しますが、きめ細かいアクセス制御のために IAM ポリシーで個別にターゲット設定できます
セキュリティ駆動型ロググループ設計
セキュリティ要件とアクセスパターンに合わせてロググループ構造を設計します (CloudWatch Logs アクセス許可リファレンス)。
- アプリケーションの分離: 特に機密データを扱う場合は、異なるアプリケーション用に個別のロググループを作成し、きめ細かい IAM ポリシーを有効にして、アプリケーション間のログアクセスを防止します
- 環境の分離: 本番環境、ステージング環境、開発環境には別々のロググループを使用して、異なるアクセス制御と保持ポリシーを適用します
- データ分類: ログを機密レベル (公開、内部、機密 、制限付き) ごとにグループ化して、適切な暗号化、アクセス制御、保持ポリシーを適用します
- コンプライアンス境界: 特別な取り扱いとより長い保持期間を必要とする監査ログ、セキュリティログ、コンプライアンス関連データ用に専用のロググループを作成します
Log Streams によるきめ細かなアクセス制御
ログループが主要なセキュリティ境界を提供する一方で、ログストリームはきめ細かなアクセスパターンを可能にします (CloudWatch Logs のアクション、リソース、および条件キー)。
- インスタンスレベルのアクセス: IAM ポリシーでログストリーム名を使用して、特定の EC2 インスタンスまたはコンテナからのログのみへのアクセスをユーザーに許可します
- 時間ベースのアクセス: 作成時刻または命名パターンに基づいてログストリームへのアクセスを制限するポリシーを実装します
- サービス固有のストリーム: アプリケーションが指定されたログストリームにのみ書き込みを許可し、同じロググループ内の他のストリームへのアクセスを防止します
- 監査証跡の整合性: 監査およびコンプライアンス戦略の一部と して、ログストリームの不変性 (作成後、ログイベントは変更できません) を使用します
2. アイデンティティベースのポリシー (IAM ポリシー)
-
IAM ポリシーを使用して、ロググループとログストリームを作成、読み取り、管理できるユーザーを制御します (CloudWatch Logs のアイデンティティベースのポリシーの使用)
- 最小権限の原則を適用する: 組織のニーズに基づいて特定のロググループへのアクセスを制限するカスタマー管理ポリシーを作成します
- 特定のリソース ARN を使用する: IAM ポリシーでは、ワイルドカード (*) を使用するのではなく、常に明示的なロググループ ARN を指定します。これにより、権限昇格を防ぎ、ユーザーが意図したロググループにのみアクセスできるようにします
- 管理権限と運用権限を分離する: 異なる権限レベルに対して個別のポリシーを作成します。たとえば、アナリスト向けの読み取り専用アクセス、アプリケーション向けの書き込み権限、インフラストラクチャチーム向けの管理権限などです。これらを単一の過度に許可されたポリシーに組み合わせないでください
- 削除操作を明示的に拒否する: 重要なロググループについては、削除保護を超えた追加の保護を提供するために、削除操作に対する明示的な拒否ステートメントを実装します
-
CloudWatch にログを記録する Lambda 関数の場合、IAM ロールに最低限必要な権限が含まれていることを確認してください。
logs:CreateLogGroup,logs:CreateLogStream、およびlogs:PutLogEvents(Lambda 実行ロール) -
ログループを変更または削除できる特権アカウントに MFA を実装します (アクセス許可の管理の概要)
-
タグベースのアクセス制御を実装する: ロググループのリソースタグと IAM 条件キー (
aws:ResourceTag) を使用して、環境 (本番/開発)、チーム所有権、データ分類レベルなどの属性に基づいてアクセスを動的に制御できます (CloudWatch Logs のアクション、リソース、および条件キー)
3. 重要なロググループの削除保護
削除保護は、Amazon CloudWatch Logs によって導入 された重要なセキュリティ機能で、ロググループとそれに関連するログストリームの誤削除や悪意のある削除を防ぎます。有効にすると、削除保護は明示的に無効化されるまですべての削除操作をブロックし、重要な運用データとコンプライアンスデータの保護に役立ちます。この機能は、トラブルシューティング、分析、規制要件のために保持する必要がある監査ログ、コンプライアンス記録、本番アプリケーションログを保護する上で特に有用です。(ロググループを削除から保護する)
主な特徴
- 予防的コントロール: 削除の試行が発生する前に停止する予防的セキュリティコントロールとして機能します
- 明示的な無効化が必要: 削除操作を実行する前に明示的に無効化する必要があります
- ログストリームに適用: ロググループとその中のすべてのログストリームを保護します
- パフォーマンスへの影響なし: ログの取り込み、クエリ、その他の操作には影響しません
- 監査証跡: 削除保護ステータスへのすべての変更は CloudTrail に記録されます