Sensitive Data Scanner プロセッサー This product is not supported for your selected
Datadog site . (
).
概要 Sensitive Data Scanner プロセッサーは、ログをスキャンして、PII、PCI、カスタム機密データなどの機密情報を検出し、マスクまたはハッシュ化します。Datadog の定義済みルールライブラリから選択するか、カスタム Regex ルールを入力して機密データをスキャンできます。
パイプラインとプロセッサーは、UI 、API 、または Terraform で設定できます。
リソース使用量を削減するためのヒントについては、パフォーマンスを最適化するためのベストプラクティス を参照してください。
UI でプロセッサーを設定する プロセッサーをセットアップするには、以下の手順に従います。
[filter query ] (フィルタークエリ) を定義します。詳細については、ログ検索構文 を参照してください。フィルターに一致するイベントのみがスキャンおよび処理されます。 フィルタークエリに一致するかどうかにかかわらず、すべてのイベントがパイプラインの次のステップに送信されます。 [Add Scanning Rule ] (スキャンルールの追加) をクリックします。 次のいずれかを選択します。 ドロップダウンメニューで、使用するライブラリルールを選択します。 選択したライブラリルールに基づいて、推奨キーワードが自動的に追加されます。スキャンルールを追加した後、さらにキーワードを追加したり、推奨キーワードを削除したり できます。 Define rule target and conditions セクションで、ドロップダウンメニューから Entire Event 、Specific Attributes 、Exclude Attributes のいずれをスキャンするかを選択します。イベント全体をスキャンする場合、オプションで特定の属性をスキャン対象から除外できます。ネストされたキーにアクセスするには、パス表記 (outer_key.inner_key) を使用してください。ネストされたデータを持つ指定された属性の場合、ネストされたすべてのデータが除外されます。 特定の属性をスキャンする場合は、スキャンする属性を指定してください。ネストされたキーにアクセスするには、パス表記 (outer_key.inner_key) を使用してください。ネストされたデータを持つ指定された属性の場合、すべてのネストされたデータがスキャンされます。 Define actions on match には、一致した情報に対して実行するアクションを選択してください。注 : マスク、部分的なマスク、およびハッシュ化はすべて元に戻せないアクションです。Redact : 一致するすべての値を [Replacement text ] (置換テキスト) フィールドで指定したテキストに置き換えます。Partially Redact : 一致したすべてのデータの指定された部分を置き換えます。[Redact ] (マスク) セクションで、マスクする文字数と、一致したデータのどの部分をマスクするかを指定します。Hash : 一致したすべてのデータを一意の識別子に置き換えます。一致した UTF-8 バイトは FarmHash の 64 ビットフィンガープリントでハッシュ化されます。必要に応じて、[Add Field ] (フィールドを追加) をクリックして、一致したイベントに関連付けるタグを追加します。 スキャンルールの名前を追加します。 必要に応じて、ルールの説明を追加します。 [Save ] (保存) をクリックします。 さらにキーワードを追加する ライブラリからスキャンルールを追加した後、各ルールを個別に編集して、キーワード辞書に他のキーワードを追加できます。
パイプライン に移動します。編集するルールがある Sensitive Data Scanner プロセッサーで、[Manage Scanning Rules ] (スキャンルールの管理) をクリックします。 ルールで推奨キーワードを使用する場合は、[Use recommended keywords ] (推奨キーワードの使用) を切り替えてください。それ以外の場合は、[Create keyword dictionary ] (キーワード辞書の作成) フィールドに独自のキーワードを追加します。これらのキーワードが一致した値から指定された文字数以内に存在するよう条件を設定することも可能です。デフォルトでは、キーワードは一致した値の前に 30 文字以内にあることが必要です。 [Update ] (更新) をクリックします。 [Define match conditions ] (一致条件の定義) セクションで、Define the regex (正規表現の定義) フィールドにイベントとの照合に使用する正規表現パターンを指定してください。詳細については、正規表現を使用した効果的な Grok パースルールの作成 を参照してください。
Sensitive Data Scanner は Perl 互換正規表現 (PCRE) をサポートしていますが、以下のパターンはサポートされていません。後方参照、およびサブマッチ文字列のキャプチャ (ルックアラウンド) 任意のゼロ幅マッチ サブルーチン参照および再帰的パターン 条件付きパターン バックトラック制御動詞 \C “シングルバイト” ディレクティブ (UTF-8 の文字列を分割)\R 改行コードのマッチ\K マッチの開始位置のリセットディレクティブコールアウトおよび埋め込みコード アトミックグループおよび絶対最大量指定子 正規表現パターンが有効であることを確認するには、[Add sample data ] (サンプルデータの追加) フィールドにサンプルデータを入力してください。 [Create keyword dictionary ] (キーワード辞書の作成) については、正規表現条件と一致させる際に検出精度を高めるためのキーワードを追加してください。たとえば、16 桁の Visa クレジットカード番号をスキャンする場合、visa、credit、card のようなキーワードを追加できます。これらのキーワードが一致した値から指定された文字数以内に存在するよう条件を設定することも可能です。デフォルトでは、キーワードは一致した値の前に 30 文字以内にあることが必要です。 Define rule target and conditions セクションで、ドロップダウンメニューから Entire Event 、Specific Attributes 、Exclude Attributes のいずれをスキャンするかを選択します。イベント全体をスキャンする場合、オプションで特定の属性をスキャン対象から除外できます。ネストされたキーにアクセスするには、パス表記 (outer_key.inner_key) を使用してください。ネストされたデータを持つ指定された属性の場合、ネストされたすべてのデータが除外されます。 特定の属性をスキャンする場合は、スキャンする属性を指定してください。ネストされたキーにアクセスするには、パス表記 (outer_key.inner_key) を使用してください。ネストされたデータを持つ指定された属性の場合、すべてのネストされたデータがスキャンされます。 Define actions on match には、一致した情報に対して実行するアクションを選択してください。注 : マスク、部分的なマスク、およびハッシュ化はすべて元に戻せないアクションです。Redact : 一致するすべての値を [Replacement text ] (置換テキスト) フィールドで指定したテキストに置き換えます。Partially Redact : 一致したすべてのデータの指定された部分を置き換えます。[Redact ] (マスク) セクションで、マスクする文字数と、一致したデータのどの部分をマスクするかを指定します。Hash : 一致したすべてのデータを一意の識別子に置き換えます。一致した UTF-8 バイトは、FarmHash の 64 ビットフィンガープリントでハッシュ化されます。必要に応じて、[Add Field ] (フィールドを追加) をクリックして、一致したイベントに関連付けるタグを追加します。 スキャンルールの名前を追加します。 必要に応じて、ルールの説明を追加します。 [Add Rule ] (ルールの追加) をクリックします。 ルールを削除する Sensitive Data Scanner でルールを削除するには、以下の手順に従います。
Observability Pipelines に移動します。パイプラインを選択します。 Sensitive Data Scanner プロセッサーをクリックして展開してください。 [Manage Scanning Rules ] (スキャンルールの管理) をクリックしてください。 削除するルールを選択してください。 [Delete ] (削除) をクリックします。 パス表記の例 For this log structure example:
{
"outer_key" : {
"inner_key" : "inner_value" ,
"a" : {
"double_inner_key" : "double_inner_value" ,
"b" : "b value"
},
"c" : "c value"
},
"d" : "d value"
}
Follow these reference rules:
Use outer_key.inner_key to reference the key with the value inner_value. Use outer_key.a.double_inner_key to reference the key with the value double_inner_value. To specify a nested field with a literal . in the attribute key, wrap the key in escaped quotes in the search query. For example, the search query "service.status":disabled matches the event {"service.status": "disabled"}.
Datadog Observability Pipeline Terraform リソース を使用して、Sensitive Data Scanner プロセッサーを含むパイプラインをセットアップできます。Terraform を使用して Sensitive Data Scanner プロセッサーにルールを追加するには、以下の手順に従います。
Datadog Sensitive Data Scanner Standard Pattern データソースを使用して、Sensitive Data Scanner ライブラリルール のルール ID を取得します。
Copy
data "datadog_sensitive_data_scanner_standard_pattern" "<RULE_IDENTIFIER>" {
filter = "<RULE_NAME>"
}
以下のようにプレースホルダーの値を置き換えてます。
<RULE_IDENTIFIER> は、後ほど Observability Pipelines リソースで Sensitive Data Scanner プロセッサーをセットアップする際に使用する名前に置き換えます。<RULE_NAME> は、ルールの正確な名前に置き換えます。ルールの一覧については、「ライブラリルール 」を参照してください。たとえば、AWS Access Key ID Scanner を使用する場合は、以下のようにデータソースを構成します。
Copy
data "datadog_sensitive_data_scanner_standard_pattern" "aws_access_key" {
filter = "AWS Access Key ID Scanner"
}
複数のルールのためのデータソースを追加する方法については、詳細な構成例 を参照してください。ライブラリルール用に、Observability Pipelines リソースに rule ブロックを追加してください。
Copy
...
sensitive_data_scanner {
rule {
name = "<YOUR_RULE_NAME>"
tags = []
on_match {
redact {
replace = "***"
}
}
pattern {
library {
id = data . datadog_sensitive_data_scanner_standard_pattern . < RULE_IDENTIFIER > . id
use_recommended_keywords = true
}
}
scope {
all = true
}
}
}
以下のようにプレースホルダーの値を置き換えてます。
<YOUR_RULE_NAME> は、ルールの名前に置き換えます。この名前は Pipelines UI に表示されます。<RULE_IDENTIFIER> は、ステップ 1 でデータソースに使用したルール識別子に置き換えます。たとえば、ステップ 1 の AWS Access Key ID Scanner データソースを使用する場合、ルールブロックを次のように構成します。
Copy
...
sensitive_data_scanner {
rule {
name = "Redact AWS Access Key IDs"
tags = []
on_match {
redact {
replace = "***"
}
}
pattern {
library {
id = data . datadog_sensitive_data_scanner_standard_pattern . aws_access_key . id
use_recommended_keywords = true
}
}
scope {
all = true
}
}
}
複数のルールを追加する方法については、詳細な構成例 を参照してください。
追加するすべてのライブラリルールについて、ステップ 1 と 2 を繰り返します。
詳細な構成例 Sensitive Data Scanner プロセッサーを使用して AWS Access Key ID と米国社会保障番号をスキャンし、それらを文字列 *** に置き換えてマスクする場合は、次のようにします。
Datadog Sensitive Data Scanner Standard Pattern データソースを使用して、AWS Access Key ID Scanner および US Social Security Number Scanner のルール ID を取得します。Datadog Observability Pipeline リソースの Sensitive Data Scanner プロセッサーで、データソースで定義された Sensitive Data Scanner ルールを使用します。
Copy
data "datadog_sensitive_data_scanner_standard_pattern" "aws_access_key" {
filter = "AWS Access Key ID Scanner"
}
data "datadog_sensitive_data_scanner_standard_pattern" "us_ssn" {
filter = "US Social Security Number Scanner"
}
resource "datadog_observability_pipeline" "sensitive_data_pipeline" {
name = "Sensitive Data Pipeline"
config {
source {
id = "source-0"
datadog_agent {}
}
processor_group {
display_name = "Processors"
enabled = true
id = "group-0"
include = "*"
inputs = [ "source-0" ]
processor {
display_name = "Sensitive Data Scanner"
enabled = true
id = "processor-sds-0"
include = "*"
sensitive_data_scanner {
rule {
name = "Redact AWS Access Key IDs"
tags = []
on_match {
redact {
replace = "***"
}
}
pattern {
library {
id = data . datadog_sensitive_data_scanner_standard_pattern . aws_access_key . id
use_recommended_keywords = true
}
}
scope {
all = true
}
}
rule {
name = "Redact US SSNs"
tags = []
on_match {
redact {
replace = "***"
}
}
pattern {
library {
id = data . datadog_sensitive_data_scanner_standard_pattern . us_ssn . id
use_recommended_keywords = true
}
}
scope {
all = true
}
}
}
}
}
destination {
id = "destination-0"
inputs = [ "group-0" ]
datadog_logs {}
}
}
} Sensitive Data Scanner プロセッサーは CPU 集中型です。パフォーマンスを最適化するため、以下のベストプラクティスに従ってください。
Observability Pipelines Overview ダッシュボードでスキャンルールの使用状況を確認する Observability Pipelines には、すぐに使用できる Observability Pipelines Overview ダッシュボードと、Observability Pipelines によって検出された機密データ セクションがあります。そのセクションのウィジェットを使用して、どのスキャンルールがデータに一致しているかを確認します。
[Dashboards] (ダッシュボード) > [Observability Pipelines Overview ] (Observability Pipelines 概要) に移動します。 ダッシュボード上部のテンプレート変数 (pipeline_id、host、worker_uuid、component_type、component_kind、component_id) を使用して、特定のパイプラインまたは Worker に表示を絞り込みます。 時間セレクターを使用して、より広い時間枠を範囲にします。 以下のウィジェットを使用して、Sensitive Data Scanner プロセッサーのスキャンルールの使用状況を評価します。
スキャンルールに基づく機密データを含むログ : 各ルールを名前 (例: visa_card_scanner_1x16_1x19_digits または redact_ipv4) で一覧表示し、選択した時間枠内の一致数を表示します。一致数が多いルールは、アクティブにデータと一致しています。これは、どのルールが使用されているかを確認するための主要なウィジェットです。機密データを含むログの合計数 : すべてのルールで一致した機密データの総量を示します。パイプライン別の機密データを含むログ : 機密データを含む一致ログを表示します。pipeline_idで一致を絞り込むことができます。これは、機密データを含むログがすべてのパイプラインで見つかるのか、特定のパイプラインのみで見つかるのかを確認するのに役立ちます。ホスト別の機密データを含むログ : Worker ホスト別に機密データの一致を分類します。このウィジェットを使用して、デプロイメント全体でのカバレッジを確認してください。機密情報を含むパターン および機密データを含むログの一覧 : 機密データが見つかったログパターンとサンプルイベントを表示します。代表的な期間中に一致がなかったルールを特定したら、それらが不要であることを確認して削除できます。ルールを削除する を参照してください。
注 : 一致件数がゼロのルールは、そのルールが無効であることを意味するのではなく、選択した期間内に一致しなかったことを意味します。
必要なルールのみを有効にする 有効になっているが使用されていないルールは、不要なリソースを消費します。Sensitive Data Scanner プロセッサーをチェックして、過去 24 時間に各ルールで何件の一致があったかを表示してください。
Observability Pipelines に移動します。パイプラインを選択します。 Sensitive Data Scanner プロセッサーをクリックして展開してください。 [View Scanning Rules ] (スキャンルールの表示) をクリックしてサイドパネルを開き、各ルールの [Matches in the last 24 hours ] (過去 24 時間に一致) を確認してください。 未使用のルールを削除するには、『ルールを削除する 』を参照してください。
機密データをスキャンする必要があるイベントとフィールドのみをスキャンする Sensitive Data Scanner がイベントをスキャンするのにかかる時間は、イベントのサイズにほぼ比例します。プロセッサーのパフォーマンスを最適化するには、以下のようにします。
pipelines.component_latency_seconds メトリクスを使用して、次のことを行ってください。
ルールを追加するときのプロセッサーパフォーマンスのベンチマーク スキャンされるフィールド数の削減や未使用ルールの削除など、最適化の変更を行った後のパフォーマンスの評価 pipelines.component_latency_seconds メトリクスを表示するには、以下の手順に従います。
Metrics Explorer に移動します。メトリクスフィールドに pipelines.component_latency_seconds を入力します。 from フィールドにタグ component_id:<COMPONENT_ID> を入力します。ここで <COMPONENT_ID> は Sensitive Data Scanner プロセッサーの ID です。注 : pipelines.component_latency_seconds は分布メトリクスであるため、そのメトリクスについてはパーセンタイルを有効にする必要があります。手順については、高度なクエリ機能の有効化 を参照してください。
健全性メトリクス すべてのプロセッサーから送信される コンポーネントメトリクス および プロセッサーバッファメトリクス については、Pipelines 使用状況メトリクス のドキュメントを参照してください。
Sensitive Data Scanner メトリクス component_id タグを使用して、個々のコンポーネントでフィルタリングまたはグループ化します。component_type タグは、Sensitive Data Scanner プロセッサーメトリクスの場合 sensitive_data_scanner です。pipelines.sds_rule_matched_total説明 : Sensitive Data Scanner ルールに一致したイベントの数。一致したルール名でタグ付けされます。メトリクスタイプ : カウントpipelines.scanned_events説明 : Sensitive Data Scanner エンジンによってスキャンされたイベントの数。メトリクスタイプ : カウントpipelines.scanning.match_count説明 : Sensitive Data Scanner によって検出された一致の数。メトリクスタイプ : カウントpipelines.scanning.suppressed_match_count説明 : Sensitive Data Scanner によって抑制された一致の数。メトリクスタイプ : カウントpipelines.scanning.duration説明 : イベントのスキャンに費やされた累積ウォールクロック時間 (秒)。このメトリクスを使用して、プロセッサーパフォーマンスをベンチマークし、最適化を評価してください。メトリクスタイプ : カウントpipelines.scanning.cpu_duration説明 : イベントのスキャンに費やされた累積 CPU 時間 (秒)。メトリクスタイプ : カウントpipelines.scanner.total_count説明 : 現在実行中の Sensitive Data Scanner プロセッサーの数。メトリクスタイプ : ゲージpipelines.scanner.total_regexes説明 : すべての Sensitive Data Scanner 全体で保持されている正規表現の数。メトリクスタイプ : ゲージ参考資料