ベストプラクティスのログ記録 - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ベストプラクティスのログ記録

ログ記録レベル

過剰量のデータをログしないように注意してください。ログには、有用で実用的なデータが記録されるべきです。過剰なログ記録はパフォーマンスに悪影響を及ぼす可能性があるだけでなく、ログ記録のストレージと処理コストも増加する可能性があります。過剰なログ記録により問題が発生したり、セキュリティイベントが検出されなくなったりする可能性もあります。

HTTP 応答ステータスコードをログに記録すると、特に 200 レベル (成功) と 300 レベル (リダイレクト) のステータスコードなど、大量のログデータが生成される可能性があります。400 レベル (クライアント側のエラー) と 500 レベル (サーバー側のエラー) のステータスコードのみをログ記録するよう検討することを推奨します。

アプリケーションログ記録フレームワークでは、情報デバッグエラーなどさまざまなレベルのログ記録が可能です。開発環境では、開発者を支援するために情報デバッグなどの詳細なログ記録を使用したいと考えるかもしれません。ただし、過剰なログデータを生成する可能性があるため、本番稼働環境では情報レベルとデバッグレベルは無効にしておくことを推奨します。

注意事項と除外事項

  • ログ記録するデータが、特に組織が事業を展開する管轄地域で法的に許可されていることを確認してください。

  • 既知のユーザー (他の内部システムなど)、信頼できるサードパーティー、検索エンジンロボット、稼働時間モニター、プロセスモニター、その他のリモートモニタリングシステムからのイベントは除外しないでください。ただし、記録されたデータにはそれぞれに分類フラグを含めることができます。アプリケーションが生成するログファイルは、アプリケーションが処理する機密データを閲覧する権限を持たないサードパーティーのログモニタリングソリューションや外部のサービスプロバイダーなどによって使用される可能性があることを考慮してください。

  • 以下の属性はログに直接記録しないでください。以下を削除、マスキング、サニタイズ、ハッシュ、または暗号化します。

    • アプリケーションのソースコード

    • セッション ID 値 (セッション固有のイベントを追跡する必要がある場合は、これをハッシュ値に置き換えることを検討してください)

    • アクセストークン

    • 機密個人データと、健康情報や政府発行の識別子など何らかのかたちで個人を特定できる情報 (PII)

    • 認証パスワード

    • データベース接続文字列

    • 暗号化キーとその他のプライマリシークレット

    • 銀行口座または支払いカード名義人のデータ

    • ロギングシステムで保存が許可されているよりも高いセキュリティ分類のデータ

    • 商業的機密情報

    • 関連する管轄地域で収集が違法な情報

    • ユーザーが収集をオプトアウトした、または収集に明示的に同意していない情報

    • 収集への同意が失効した情報

特殊データ型

場合によっては、以下のデータがログに記録されることもあります。調査やトラブルシューティングには役立ちますが、システムに関する機密情報が明らかになる可能性があります。イベントを記録する前に、これらのデータ型を匿名化、ハッシュ、または暗号化する必要があるかもしれません。

  • ファイルパス

  • 内部ネットワーク名とアドレス

  • 個人名、電話番号、E メールアドレスなど、機密性の低い個人データ

個人の身元情報をログに記録する必要がない場合や、リスクが大きすぎると考えられる場合は、データの匿名化を使用してください。

アクセスと変更管理

  • 管理者以外のユーザーは、特にコンプライアンス要件を満たすために必要なイベントのログ記録を無効にできないようにする必要があります。

  • ログ記録サービスを一時停止または停止したり、設定を変更したりできるのは管理ユーザーのみとします。

  • ログ記録サービスにログファイルの整合性検証機能がある場合は、それを有効にします。これにより、ログファイルの変更、削除、または偽造を検出できます。AWS のサービス で利用できるこの機能の詳細については、このガイドの「CloudTrail の使用」を参照してください。

  • ログ記録の変更は、承認されたアルゴリズムに基づいてアプリケーションが自動的に行うなど、アプリケーション固有のものでなければなりません。また、設定データを変更したりソースコードを変更したりする場合など、承認された変更管理プロセスに従う必要があります。