スキップしてコンテンツを表示

CloudFront ログから機密データを削除する方法を教えてください。

所要時間2分
0

デフォルトでは、Amazon CloudFront 標準ログは一部のフィールドの機密データをキャプチャします。プライバシーの懸念から、ログのこの部分を削除したいです。

簡単な説明

注: この記事では、Client-IP (c-ip) フィールドの例を使用します。

CloudFront ログは、デフォルトで c-ip をフィールドの 1 つとしてキャプチャします。ログから c-ip を削除する方法は 3 つあります。

  • Amazon Simple Storage Service (Amazon S3) へのログ配信でフィールドを削除する AWS Lambda 関数をトリガーする。
  • フィールドを削除するために一定の間隔で実行する Amazon Elastic Compute Cloud (Amazon EC2) プロセスを用意する。
  • CloudFront 標準ログを使用し、ログデータを Amazon S3 に送信する前に機密フィールドを削除する。

注: 標準ログを有効にするには、プロプランまたは従量制料金プランを使用する必要があります。詳細については、「Amazon CloudFront の料金」を参照してください。

解決策

Lambda 関数をトリガーする

c-ip フィールドを削除する 1 つの方法は、Amazon S3 通知イベントを使用することです。CloudFront がログファイルを Amazon S3 バケットに配信するときに、Lambda 関数をトリガーするようにバケットを設定します。

Lambda 関数を作成する

1.AWS Lambda コンソールを開きます。

2.[関数] で、次の構成を持つ新しい Lambda 関数を作成します。

  • Amazon S3 イベントのオブジェクト名を使用します。
  • S3 バケットからオブジェクトを取得します。

3.c-ip 列を削除するか、値を匿名化されたデータに置き換えます。

注: 他のアプリケーションでログをさらに処理する場合に備えて、同じ形式を維持するように値を置き換えてください。

4.ログを保存して Amazon S3 にアップロードします。

新しいイベントを作成する

1.ログターゲットバケットで、[プロパティ] に移動します。

2.[イベント通知] で、新しいイベントを作成します。

3.イベントタイプ Put と送信先の Lambda 関数を選択します。

4.ステップ 1 で作成した Lambda 関数を選択し、[保存] をクリックします。

重要: Lambda 関数での再帰呼び出し (無限ループ) を回避するには、次のアクションを実行します。

  • CloudFront ログを初期ステージングプレフィックスに配信します。(例: "original")。
  • Amazon S3 イベントをそのプレフィックスでのみトリガーするようにします。
  • Lambda 関数にログを別のプレフィックスに配信させます。(例: "processed")。

同じプレフィックスにログを配信すると、Lambda 関数が再びトリガーされ、再帰呼び出しが作成されます。詳細については、「Avoiding recursive invocation with Amazon S3 and AWS Lambda」(Amazon S3 と AWS Lambda による再帰呼び出しの回避) を参照してください。

注: Amazon S3 のコストを低く抑えるには、特定の期間が経過すると元のログが期限切れになるように Amazon S3 ライフサイクルポリシーを設定します。

Amazon EC2 プロセスを用意する

Amazon EventBridge を使用して、EC2 インスタンスを起動し、定期的にログファイルを処理するスケジュールルール (cron) を作成します。(例: 1 日に 1 回)。プロセスが完了したら、コストを節約するために次の繰り返しまで EC2 インスタンスを停止します。

1.特定の時間に EC2 インスタンスを起動するように EventBridge と Lambda を設定します。詳細については、「Lambda を使用して Amazon EC2 インスタンスを定期的に停止し、起動する方法を教えてください」を参照してください。

2.EC2 インスタンスに、一定期間のログをダウンロードするコードをデプロイします。(例: 丸 1 日)。c-ip 列を削除してログを処理するか、列値を匿名化されたデータに置き換えます。処理されたログを S3 バケットにアップロードします。

オプション: Amazon S3 ライフサイクルの移行コストを節約するために、処理されたすべてのログを 1 つのファイルにマージします。このプロセスは、ログを長期間保存する場合に便利です。

Kinesis Data Firehose を使用する

CloudFront リアルタイムログを使用して、保存するフィールドを選択します。後で、Amazon Kinesis Data Firehose にログデータを Amazon S3 に送信させます。

CloudFront リアルタイムログを設定すると、各リアルタイムログレコードに含まれるフィールドのリストが表示されます。各ログレコードには最大 40 のフィールドが含まれます。使用可能なすべてのフィールドを受け取るか、パフォーマンスを監視および分析する必要があるフィールドのみを受け取るかを選択できます。フィールド c-ip を無効にして、そのフィールドをログから除外します。

注: Amazon Kinesis Data Streams を使用しているため、このオプションは高額になる可能性があります。より費用対効果の高いソリューションとして、他の 2 つのオプション (Lambda 関数をトリガーする、または Amazon EC2 プロセスを用意する) を検討してください。


AWS公式更新しました 3年前
1コメント

This article was reviewed and updated on 2023-02-17.

エキスパート

応答済み 1ヶ月前

関連するコンテンツ