AWS CloudTrailでのセキュリティのベストプラクティス - AWS CloudTrail

AWS CloudTrailでのセキュリティのベストプラクティス

AWS CloudTrail には、独自のセキュリティポリシーを開発および実装する際に考慮する必要のあるいくつかのセキュリティ機能が用意されています。以下のベストプラクティスは一般的なガイドラインであり、完全なセキュリティソリューションに相当するものではありません。これらのベストプラクティスはお客様の環境に適切ではないか、十分ではない場合があるため、これらは処方箋ではなく、有用な考慮事項と見なしてください。

CloudTrail 検出に関するセキュリティのベストプラクティス

証跡を作成します

AWS アカウントのイベントの継続的な記録については、証跡を作成します。CloudTrail は証跡を作成せずに CloudTrail コンソールで管理イベントの 90 日間のイベント履歴情報を提供していますが、これは永久的な記録ではなく、すべてのタイプのイベントについての情報を提供しているわけではありません。進行中のレコード、および指定したすべてのイベントタイプを含むレコードの場合は、指定した Amazon S3 バケットにログファイルを配信する証跡を作成する必要があります。

CloudTrail データを管理しやすいように、すべての AWS リージョン で管理イベントをログに記録する 1 つの証跡を作成すること、および Amazon S3 バケットアクティビティや AWS Lambda 関数など、リソースの特定のイベントタイプを記録する追加の証跡を作成することを検討してください。

以下に示しているのは、実行できるいくつかのステップです。

証跡をすべての AWS リージョン に適用します

AWS アカウントでユーザー、ロール、またはサービスが実行したイベントの完全な記録を取得するには、すべての AWS リージョン でイベントをログに記録するように各証跡を設定する必要があります。すべての AWS リージョン でイベントをログに記録することで、AWS アカウントで発生したすべてのイベントが、発生した AWS リージョンにかかわらず、ログに記録されます。これには、そのサービスに固有の AWS リージョンに記録されるグローバルサービスイベントのログ記録が含まれます。すべてのリージョンに適用される証跡を作成すると、CloudTrail は、各リージョンでイベントを記録し、指定した S3 バケットに CloudTrail イベントログファイルを配信します。すべてのリージョンに適用される証跡を作成した後で AWS リージョンを追加した場合、その新しいリージョンは自動的に含まれ、そのリージョンのイベントがログに記録されます。これは、CloudTrail コンソールで証跡を作成するときのデフォルトのオプションです。

以下に示しているのは、実行できるいくつかのステップです。

CloudTrail ログファイルの整合性を有効にする

検証されたログファイルは、セキュリティおよびフォレンシック調査で特に重要です。たとえば、検証されたログファイルを使用すると、ログファイル自体が変更されていないこと、または特定のユーザーの認証情報が特定の API アクティビティを実行したことを確実にアサートできます。CloudTrail ログファイルの整合性の検証プロセスでは、ログファイルが削除または変更されたかどうかを知ることもできます。また、指定された期間内にログファイルがアカウントに配信されていないことを確実にアサートします。CloudTrail ログファイルの整合性の検証では、ハッシュ用の SHA-256 とデジタル署名用の RSA を持つ SHA-256 という業界標準のアルゴリズムを使用します。これにより、CloudTrail ログファイルを検出せずに変更、削除、または偽造することは計算上実行不可能になります。詳細については、「検証の有効化とファイルの検証」を参照してください。

Amazon CloudWatch Logs との統合

CloudWatch Logs を使用すると、CloudTrail によってキャプチャされた特定のイベントに関するアラートを監視および受信できます。CloudWatch Logs に送信されるイベントは証跡によって記録されるように設定されているため、監視するイベントタイプ (管理イベントやデータイベント) を記録するために証跡を設定してください。

例えば、失敗した AWS Management Console サインインイベントなど、主要なセキュリティおよびネットワーク関連の管理イベントをモニタリングできます。

以下に示しているのは、実行できるいくつかのステップです。

CloudTrail 予防的セキュリティのベストプラクティス

CloudTrail の以下のベストプラクティスはセキュリティ問題を防ぐのに役立ちます。

専有および一元化された Amazon S3 バケットへのログ

CloudTrail ログファイルは、ユーザー、ロール、または AWS サービスによって実行されたアクションの監査ログです。これらのログの整合性、完全性、および可用性は、フォレンジックおよび監査目的にとって非常に重要です。専有および一元化された Amazon S3 バケットにログに記録することで、厳格なセキュリティ管理、アクセス、および役割分担を実施できます。

以下に示しているのは、実行できるいくつかのステップです。

  • ログアーカイブアカウントとして別の AWS アカウントを作成します。AWS Organizations を使用する場合は、このアカウントを組織に登録し、組織内のすべての AWS アカウントのデータを記録するための組織証跡を作成することを検討してください。

  • Organizations を使用せずに複数の AWS アカウントのデータをログに記録する場合は、このログアーカイブアカウントにアクティビティを記録するための証跡を作成します。このアカウントへのアクセスを、アカウントおよび監査データへのアクセス権限を有する信頼された管理ユーザーだけに制限します。

  • 証跡の作成の一環として、組織の証跡でも、単一の AWS アカウントの証跡でも、この証跡のログファイルを保存するための専用の Amazon S3 バケットを作成します。

  • 複数の AWS アカウントのアクティビティを記録する場合、AWS アカウントアクティビティを記録するすべての AWS アカウントの記録とログファイルの保存を許可するバケットのポリシーを変更します。

  • 組織証跡を使用していない場合は、ログアーカイブアカウントで Amazon S3 バケットを指定して、すべての AWS アカウントで証跡を作成します。

AWS KMS で管理されたキーを使用したサーバー側の暗号化

デフォルトでは、CloudTrail によってバケットに配信されるログファイルは、Amazon の Amazon S3 で管理された暗号化キーによるサーバー側の暗号化 (SSE-S3) によって暗号化されます。直接管理可能なセキュリティレイヤーを提供するには、代わりに CloudTrail ログファイルのAWS KMS によって管理されたキー (SSE-KMS) を使用したサーバー側の暗号化 を使用できます。CloudTrail で SSE-KMS を使用するには、AWS KMS key とも呼ばれる KMS キーを作成して管理します。

注記

SSE-KMS とログファイルの検証を使用していて、SSE-KMS で暗号化されたファイルのみを許可するように Amazon S3 バケットポリシーを変更した場合は、次の例のポリシー行に示すように、バケットポリシーを AES256 暗号化を特に許可するように変更しない限り、そのバケットを活用する証跡を作成することはできません。

"StringNotEquals": { "s3:x-amz-server-side-encryption": ["aws:kms", "AES256"] }

以下に示しているのは、実行できるいくつかのステップです。

デフォルトの Amazon SNS トピックポリシーに条件キーを追加する

Amazon SNS に通知を送信するように証跡を設定すると、CloudTrail は SNS トピックアクセスポリシーに、CloudTrail が SNS トピックにコンテンツを送信できるようにするポリシーステートメントを追加します。セキュリティのベストプラクティスとして、aws:SourceArn (またはオプションで aws:SourceAccount) 条件キーを CloudTrail ポリシーステートメントに追加することが奨励されます。これにより、SNS トピックへの不正なアカウントアクセスを防止できます。詳細については、「CloudTrail の Amazon SNS トピックポリシー」を参照してください。

ログファイルを保存する Amazon S3 バケットへの最低限のアクセス権限を実装する

CloudTrail 証跡は、指定した Amazon S3 バケットにイベントをログに記録します。これらのログファイルには、ユーザー、ロール、および AWS サービスによって実行されたアクションの監査ログが含まれています。これらのログファイルの整合性と完全性は、監査とフォレンジック用に非常に重要です。整合性を確実にするために、CloudTrail ログファイルを保存するために使用される Amazon S3 バケットへのアクセスを作成または変更するときは、最小権限の原則に従う必要があります。

次のステップを実行します。

ログファイルを保存する Amazon S3 バケットで MFA Delete を有効にする

多要素認証 (MFA) を設定すると、バケットのバージョニング状態を変更したり、オブジェクトバージョンを完全に削除しようとした場合に、追加の認証が必要になります。これにより、ユーザーが Amazon S3 オブジェクトを完全に削除するアクセス許可を持つ IAM ユーザーのパスワードを取得した場合でも、ログファイルの整合性が損なわれる可能性のある操作を防ぐことができます。

以下に示しているのは、実行できるいくつかのステップです。

ログファイルを保存する Amazon S3 バケットにオブジェクトライフサイクル管理を設定する

CloudTrail 証跡のデフォルトでは、証跡に対して設定された Amazon S3 バケットにログファイルは無期限に保存されます。Amazon S3 オブジェクトライフサイクル管理ルールを使用して、独自の保持ポリシーを定義し、ビジネスおよび監査のニーズをより適切に満たせるようになります。たとえば、1 年以上経過しているログファイルを Amazon Glacier にアーカイブしたり、一定の時間が経過した後にログファイルを削除できます。

AWSCloudTrail_FullAccess ポリシーへのアクセスを制限する

AWSCloudTrail_FullAccess ポリシーを持つユーザーは、自分の AWS アカウントで最も機密性の高い重要な監査機能を無効したり再設定することができます。このポリシーは、AWS アカウントのユーザーおよびロールに共有または広く適用されることを想定していません。このポリシーの適用は、AWS アカウント管理者として行動すると思われるできるだけ少ない個人に制限してください。