概要
クラウド上の Sensitive Data Scanner は、アプリケーションログ、APM イベント、RUM イベント、Event Management のイベントなど、テレメトリデータをスキャンします。スキャンおよびマスキングの対象となるデータは次のとおりです。
- ログ: ログメッセージや属性値など、構造化・非構造化を含むすべてのログ内容
- APM: スパンの属性値のみ
- RUM: イベントの属性値のみ
- イベント: イベントの属性値のみ
オプションで、各製品のサンプリングレートを 10% から 99% の間で設定できます。これにより、機密情報のスキャン対象となるデータ量が減少し、開始時のコスト管理に役立ちます。
スキャンルールごとに、一致した機密データに次のいずれかのアクションを適用できます。
- Redact: 一致したデータ全体を
[sensitive_data] などの選択した単一のトークンで置き換えます。 - Partially redact: 一致するすべての値の特定の部分を置き換えます。
- Hash: 一致したデータ全体を非可逆の一意の識別子で置き換えます。
- Mask (ログにのみ利用可能): 一致するすべての値を難読化します。
Data Scanner Unmask の権限を持つユーザーは、このデータを Datadog で難読化解除 (マスク解除) して表示できます。詳細については、マスクアクションを参照してください。
注:
- : サンプリングデータをスキャンするときは、スキャンするデータを難読化するアクションは選択できません。
- Sensitive Data Scanner は、整数、浮動小数点数、および倍数をスキャンしません。数値が文字列形式の場合、その文字列がスキャンされます。
ログやイベントを Datadog バックエンドに送信するため、マスキングが行われる前にデータは環境外へ出ます。ログやイベントは処理中に Datadog バックエンドでスキャンおよびマスキングされるため、機密データはイベントがインデックスされ、Datadog UI に表示される前にマスキングされます。
マスキングされる前にデータが環境外に出ないようにするには、Observability Pipelines および Sensitive Data Scanner プロセッサーを使用して、機密データをスキャンおよびマスキングします。パイプラインとそのコンポーネントの設定方法については、パイプラインをセットアップを参照してください。
クラウド上で Sensitive Data Scanner を使用するには、スキャングループを設定してスキャン対象のデータを定義し、次にスキャンルールを追加してデータ内でマッチングさせる機密情報を決定します。
このドキュメントでは、以下について説明します。
セットアップ
権限
デフォルトでは、Datadog 管理者ロールを持つユーザーは、スキャンルールを表示および設定するためのアクセス権を持っています。他のユーザーにアクセスを許可するには、Compliance で data_scanner_read または data_scanner_write の権限をカスタムロールに付与します。ロールと権限のセットアップ方法の詳細については、Access Control を参照してください。
スキャンルールがマスクアクション (ログでのみ利用可能) を使用して一致する機密データを処理する場合、data_scanner_unmask の権限を持つユーザーは、Datadog でデータのマスキングを解除して表示できます。注: Datadog は、すべての漏洩した資格情報に対応し、ローテーションする計画がない限り、資格情報に対してマスクアクションを使用することを推奨しません。詳細については、マスクアクションを参照してください。
スキャングループの追加
スキャングループは、スキャンするデータを決定します。これは、クエリフィルター、ログ、APM、RUM、およびイベントのスキャンを有効にするためのボタンのセット、各プロダクトのサンプリングレートを 10% から 99% の間で設定するオプションで構成されています。クエリフィルターの詳細については、ログ検索構文のドキュメントを参照してください。
Terraform については、Datadog Sensitive Data Scanner グループのリソースを参照してください。
スキャングループをセットアップするには、以下の手順を実行します。
- Sensitive Data Scanner 設定ページに移動します。
- スキャングループの追加をクリックします。または、ページ右上にある追加ドロップダウンメニューをクリックし、スキャングループの追加を選択します。
- スキャンしたいデータのクエリフィルターを入力します。上部で APM スパンをクリックして、フィルタリングされたスパンをプレビューします。ログをクリックして、フィルタリングされたログを表示します。
- グループの名前と説明を入力します。
- オプションボタンをクリックして、希望するプロダクト (例: ログ、APM スパン、RUM イベント、Datadog イベント) に対して Sensitive Data Scanner を有効にします。
- オプションで、希望するプロダクトのサンプリングレートを 10-99% に設定します。サンプリングが有効なグループにスキャンルールを追加すると、スキャン対象のデータをマスキングするアクションを選択できなくなります。一致するデータをマスキングするには、グループクエリフィルターに一致するすべてのデータをスキャンするように設定する必要があります。
- 作成をクリックします。
デフォルトでは、新しく作成されたスキャングループは無効になっています。スキャングループを有効にするには、右側の対応するトグルをクリックします。
スキャンルールの追加
スキャンルールは、スキャングループで定義されたデータ内のどの機密情報をマッチングさせるかを決定します。Datadog のスキャンルールライブラリから事前定義されたスキャンルールを追加するか、正規表現 (regex) パターンを使って独自のルールを作成することができます。データは、処理の中で取り込みが行われる際にスキャンされます。ログの場合、これはインデックス化やその他のルーティング関連の決定の前にスキャンが行われることを意味します。
可能な限り、Datadog のすぐに使えるライブラリルールを使用してください。これらのルールは、メールアドレス、クレジットカード番号、API キー、認可トークン、ネットワークおよびデバイス情報など、一般的なパターンを検出する、あらかじめ定義されたルールです。各ルールには、マッチング精度を向上させるためにキーワード辞書の推奨キーワードがあります。独自のキーワードを追加することもできます。
Terraform については、Datadog Sensitive Data Scanner ルールのリソースを参照してください。
スキャンルールを追加するには、以下の手順を実行します。
- Sensitive Data Scanner 設定ページに移動します。
- スキャンルールを追加する対象のスキャングループをクリックします。
- スキャンルールの追加をクリックします。または、ページ右上にある追加ドロップダウンメニューをクリックし、スキャンルールの追加を選択します。
- ライブラリルールを追加するか、カスタムスキャンルールを作成するかを選択します。
スキャンルールライブラリには、メールアドレスやクレジットカード番号、API キー、認証トークンなどの一般的なパターンを検出するための、あらかじめ定義されたルールが含まれています。
- このルールをスキャングループ内で作成していない場合は、スキャングループを選択します。
- 優先度ドロップダウンメニューで、ビジネスニーズに基づいてルールの優先度を選択します。
- ライブラリルールの追加セクションで、使用したいライブラリルールを選択します。
- In the Action on Match section, select if you want to scan the Entire Event or Specific Attributes. See Scan or exclude specific-attributes on how to make pattern matching more precise.
- If you are scanning the entire event, you can optionally exclude specific attributes from getting scanned.
- If you are scanning specific attributes, specify which attributes you want to scan.
- For Define actions on match, select the action you want to take for the matched information. Note: Redaction, partial redaction, and hashing are all irreversible actions.
- Redact: Replaces all matching values with the text you specify in the Replacement text field.
- Partially Redact: Replaces a specified portion of all matched data. In the Redact section, specify the number of characters you want to redact and which part of the matched data to redact.
- Hash: Replaces all matched data with a unique identifier. The UTF-8 bytes of the match is hashed with the 64-bit fingerprint of FarmHash.
- Mask (available for logs only): Obfuscates all matching values. Users with the
Data Scanner Unmask permission can de-obfuscate (unmask) and view this data. See Mask action for more information.
- (Optional) Add tags you want to associate with events where the values match the specified regex pattern.
- Datadog recommends using
sensitive_data and sensitive_data_category tags. These tags can then be used in searches, dashboards, and monitors. - See Control access to logs with sensitive data for information on how to use tags to determine who can access logs containing sensitive information.
- ルールの追加をクリックします。
カスタムキーワードの追加
ライブラリルールが追加されると、推奨キーワードがデフォルトで使用されます。ライブラリルールを追加した後、各ルールを個別に編集し、キーワード辞書にキーワードを追加したりキーワード辞書から削除したりできます。例えば、16 桁の Visa クレジットカード番号をスキャンする場合、visa、credit、card のようなキーワードを追加できます。
- Sensitive Data Scanner 設定ページに移動します。
- 編集したいルールがあるスキャングループをクリックします。
- ルールにカーソルを合わせ、鉛筆アイコンをクリックします。
- マッチ条件セクションで、カスタムキーワードをクリックします。
- キーワードを追加するには、キーワードを入力し、プラスアイコンをクリックしてキーワードをリストに追加します。
- キーワードを削除するには、削除したいキーワードの横にある X をクリックします。
- これらのキーワードがマッチした値から指定された文字数以内に存在するよう条件を設定することも可能です。デフォルトでは、キーワードはマッチした値の前に 30 文字以内に配置されている必要があります。
- 構造化イベントの場合、キーワードはイベントパス内の属性名にもマッチします。属性名に含まれる
-、_、. などの区切り文字は単語の境界としてカウントされるため、キーワード card は card_number または card-type という名前の属性にマッチします。文字数制限は属性名のマッチングには適用されません。 - 注: 1 つのルールに 20 個以上のキーワードを設定することはできません。
- イベントデータを入力するか貼り付けてルールをテストするセクションで、ルールを評価するためのイベントデータを追加し、マッチ条件を絞り込むためにキーワードを追加します。
- 更新をクリックします。
抑制の追加
- (Optional) In the Suppress specific match types to ignore risk-accepted data section, you can add conditions to ignore certain matches. See Suppress specific matches to ignore risk-accepted data for more information
To add a suppression:- Click Add New Suppression and choose a condition:
- Match exactly: For precise values such as,
[email protected]. - Start with: For prefixes or ranges. For example:
10.0.0 for all IP ranges under 10.0.0.X. - End with: For domains such as
@company.org.
- Enter a value (for example:
@company.org) and click the plus sign (+) to add it. - (Optional) Enter additional suppression terms.
- Click Add New Suppression to add more suppression conditions to the same rule.
正規表現パターンを使用して機密データをスキャンするカスタムスキャンルールを作成できます。
- このルールをスキャングループ内で作成していない場合は、スキャングループを選択します。
- ルールの名前を入力します。
- 優先度ドロップダウンメニューで、ビジネスニーズに基づいてルールの優先度を選択します。
- (任意) ルールの説明を入力します。
- マッチ条件セクションで、正規表現パターンフィールドのイベントとマッチングするために使用する正規表現パターンを指定します。できるだけ正確な正規表現パターンを定義します。一般的なパターンは、より多くの誤検知を引き起こすからです。
機密データスキャナーは Perl 互換正規表現 (PCRE) をサポートしていますが、以下のパターンはサポートされていません。- 後方参照、およびサブマッチ文字列のキャプチャ (ルックアラウンド)
- 任意のゼロ幅マッチ
- サブルーチン参照および再帰的パターン
- 条件付きパターン
- バックトラック制御動詞
\C “シングルバイト” ディレクティブ (UTF-8 の文字列を分割)\R 改行コードのマッチ\K マッチの開始位置のリセットディレクティブ- コールアウトおよび埋め込みコード
- アトミックグループおよび絶対最大量指定子
- 正規表現条件とのマッチング時にノイズを低減するために周囲のマッチコンテキスト内のキーワードをチェックし、検出精度を向上させるためのキーワードを追加します。例えば、16 桁の Visa クレジットカード番号をスキャンする場合、
visa、credit、card のようなキーワードを追加できます。- キーワードを追加するには、キーワードを入力し、プラスアイコンをクリックしてキーワードをリストに追加します。
- キーワードを削除するには、削除したいキーワードの横にある X をクリックします。
- これらのキーワードがマッチした値から指定された文字数以内に存在するよう条件を設定することも可能です。デフォルトでは、キーワードはマッチした値の前に 30 文字以内に配置されている必要があります。
- 構造化イベントの場合、キーワードはイベントパス内の属性名にもマッチします。属性名に含まれる
-、_、. などの区切り文字は単語の境界としてカウントされるため、キーワード card は card_number または card-type という名前の属性にマッチします。文字数制限は属性名のマッチングには適用されません。
注: 1 つのルールに 20 個以上のキーワードを設定することはできません。
- (Optional) In the Suppress specific match types to ignore risk-accepted data section, you can add conditions to ignore certain matches. See Suppress specific matches to ignore risk-accepted data for more information
To add a suppression:- Click Add New Suppression and choose a condition:
- Match exactly: For precise values such as,
[email protected]. - Start with: For prefixes or ranges. For example:
10.0.0 for all IP ranges under 10.0.0.X. - End with: For domains such as
@company.org.
- Enter a value (for example:
@company.org) and click the plus sign (+) to add it. - (Optional) Enter additional suppression terms.
- Click Add New Suppression to add more suppression conditions to the same rule.
- イベントデータを入力するか貼り付けてルールをテストするセクションで、ルールを評価するためのイベントデータを追加し、マッチ条件を絞り込むためにキーワードを追加します。
- In the Action on Match section, select if you want to scan the Entire Event or Specific Attributes. See Scan or exclude specific-attributes on how to make pattern matching more precise.
- If you are scanning the entire event, you can optionally exclude specific attributes from getting scanned.
- If you are scanning specific attributes, specify which attributes you want to scan.
- For Define actions on match, select the action you want to take for the matched information. Note: Redaction, partial redaction, and hashing are all irreversible actions.
- Redact: Replaces all matching values with the text you specify in the Replacement text field.
- Partially Redact: Replaces a specified portion of all matched data. In the Redact section, specify the number of characters you want to redact and which part of the matched data to redact.
- Hash: Replaces all matched data with a unique identifier. The UTF-8 bytes of the match is hashed with the 64-bit fingerprint of FarmHash.
- Mask (available for logs only): Obfuscates all matching values. Users with the
Data Scanner Unmask permission can de-obfuscate (unmask) and view this data. See Mask action for more information.
- (Optional) Add tags you want to associate with events where the values match the specified regex pattern.
- Datadog recommends using
sensitive_data and sensitive_data_category tags. These tags can then be used in searches, dashboards, and monitors. - See Control access to logs with sensitive data for information on how to use tags to determine who can access logs containing sensitive information.
- ルールを追加をクリックします。
注:
- 追加または更新するルールは、ルールが定義された後に Datadog に送られるデータにのみ影響します。
- Sensitive Data Scanner は、Datadog Agent で直接定義するルールには影響しません。
- ルールが追加されたら、スキャングループのトグルが有効になっていることを確認してスキャンを開始します。
- サンプリングが有効なスキャングループにルールを追加すると、Redact、Partially redact、または Hash アクションを選択できなくなります。完全にマスキングするには、スキャングループ設定でサンプリングを無効にします。
検出結果ページを使用して機密データをトリアージする方法の詳細については、機密データの検出結果を調査するを参照してください。
除外されるネームスペース
Datadog プラットフォームが機能上必要とする予約キーワードがあります。これらの単語がスキャンされるログ内にある場合、一致した単語の後の 30 文字は無視され、マスキングされません。例えば、ログの date という単語の後に来るのは通常イベントのタイムスタンプです。もしタイムスタンプが誤ってマスキングされると、ログの処理に問題が生じ、後でクエリを実行することができなくなります。そのため、除外されるネームスペースの動作は、製品機能にとって重要な情報が意図せずにマスキングされるのを防ぐためのものです。
除外されるネームスペースは以下のとおりです。
hosthostnamesyslog.hostnameservicestatusenvdd.trace_idtrace_idtrace iddd.span_idspan_idspan id@timestamptimestamp_timestampTimestampdatepublished_datesyslog.timestamperror.fingerprintx-datadog-parent-id
metrics._dd.metrics.dd.metrics._dd1.metrics.otel.trace_idmetrics.otlp.metrics._sampling_priority_v1metrics._sample_ratemeta._dd.meta.api.endpoint.meta.dd.meta_struct.dd.meta_struct._dd.meta_struct.api.endpoint.meta_struct.appsec.meta_struct.threat_intel.results.meta.otel.trace_idmeta.otel.library.meta.otlp.trace_idspan_idstarttimestampenddurationparent_idtyperesourceresource_hashingest_size_in_bytesingestion_reasonerrorflagsstatuschunk_idhosthost_idhostnameenvserviceoperation_namenameversionmeta._dd.error_trackingmeta.error.fingerprintmeta.issue
application.idsession.idsession.initial_view.idsession.last_view.idview.idaction.idresource.idgeoerror.fingerprinterror.binary_images.uuidissue_dd.trace_id_dd.span_id_dd.usage_attribution_tag_names_dd.error.unminified_frames_dd.error.threads
リスク受容データを無視するために特定のマッチを抑制する
抑制を使用して、運用上安全と考えられる機密データの一致を無視します (例: 内部メールドメインやプライベート IP 範囲)。
注:
- 抑制されたマッチは、マスキングもハッシュ化もされません。
- 抑制されたマッチは、検出結果ページ、ダッシュボード、アラート、およびその他のレポートワークフローから除外されます。
- 抑制はスキャングループ内のルールごとに定義されます。
特定の属性をスキャンまたは除外する
マッチをより正確にするために、次のいずれかを行うこともできます。
- イベント全体をスキャンしますが、特定の属性がスキャンされないように除外します。例えば、物理的な住所のような個人を特定できる情報 (PII) をスキャンしている場合、
ip_address のような属性を除外することを検討できるかもしれません。 - スキャンされるデータスコープを狭めるために、特定の属性をスキャンします。例えば、物理的な住所をスキャンしている場合、
street や city のような特定の属性を選択できます。
注: 属性名を指定する際に、属性パスに @ プレフィックスを使用しないでください。例えば、@function.request.body.password の代わりに function.request.body.password を使用します。検索クエリや Datadog の他の部分で使用される @ プレフィックスは、このフィールドではサポートされていません。
スキャンルールの編集
スキャンルールを編集するには
- Sensitive Data Scanner 設定ページに移動します。
- 編集するスキャンルールにカーソルを合わせ、Edit (鉛筆) アイコンをクリックします。
- ルールに対して希望する変更を行います。編集しているルールのタイプに応じて、ライブラリルールの追加またはカスタムルールの追加を参照して各設定セクションの詳細を確認できます。
- 更新をクリックします。
機密データを含むログへのアクセス制御
機密データを含むログへのアクセスを制御するには、Sensitive Data Scanner によって追加されたタグを使用して、ロールベースアクセス制御 (RBAC) によるクエリを構築します。保持期間が過ぎてデータが古くなるまで、特定の個人やチームへのアクセスを制限できます。詳細については、ログのための RBAC のセットアップ方法を参照してください。
アクションをマスキングする
When you set up or edit a scanner rule, there is an Action on Match section where you can set the rule to use the mask action for matched sensitive data. The mask action obfuscates the sensitive data, but users with the Data Scanner Unmask permission can de-obfuscate (unmask) and view the data in Datadog.
Notes:
- Unmasking is available for indexed logs, APM spans, and RUM events within Datadog.
- Masked data that is accessed programmatically, such as by using the API or Terraform, or within archives, always appears obfuscated and cannot be unmasked.
- Unmasking does not work on rehydrated logs.
- Datadog does not recommend using the mask action for credentials, unless you have a plan to respond to and rotate all leaked credentials.
To unmask sensitive data, navigate to the Findings page, click on a scanning rule, and then click on a finding. If you have permission to see masked data, that data has an eye icon next to it. Click the eye icon to reveal the data. You can also use the Log Explorer, Trace Explorer, or RUM Explorer to view masked data.
タグ内の機密データをマスキングするには、タグを属性にリマップしてから属性をマスキングする必要があります。リマッパープロセッサーの Preserve source attribute のチェックを外して、リマッピング中にタグが保持されないようにします。
タグを属性にリマップするには
- ログパイプライン に移動します。
- プロセッサーを追加をクリックします。
- プロセッサーの種類のドロップダウンメニューでリマッパーを選択します。
- プロセッサーに名前を付けます。
- タグキーを選択します。
- タグキーを入力します。
- タグキーをリマップする属性の名前を入力します。
- ソース属性を保持するを無効にします。
- 作成をクリックします。
属性をマスキングするには
- スキャングループに移動します。
- スキャンルールの追加をクリックします。
- 使用したいライブラリルールをチェックします。
- イベント全体またはその一部をスキャンするで特定の属性を選択します。
- あらかじめ作成しておいた属性の名前を入力し、スキャンの対象に指定します。注: 属性パスに
@ プレフィックスを使用しないでください。例えば、@function.request.body.password の代わりに function.request.body.password を使用します。 - マッチングした場合のアクションを選択します。
- オプションで、タグを追加します。
- ルールの追加をクリックします。
ログのリハイドレート
アーカイブからログをリハイドレートする際、Sensitive Data Scanner はそれらのログを再スキャンしません。代わりに、Datadog がアーカイブに書き込まれた通りにログを復元します。
アーカイブが Datadog タグを含むように構成されており、Sensitive Data Scanner によってログが初めて取り込まれて処理された際にタグが追加されている場合は、それらのタグを使用してリハイドレートされたログが以前に機密データを含んでいたかどうかを特定できます。これにより、sensitive_data:<rule_tag_name> のようなクエリを使用してリハイドレートされたログをフィルタリングできます。
マッチした機密データのメタデータはアーカイブされたログに保存されないため、それらのログがリハイドレートされる際に機密データのマッチは強調表示されません。アーカイブ形式には、元のログペイロードと保持されたタグのみが含まれます。検出された値を視覚的に強調表示するために Datadog UI で Sensitive Data Scanner が使用する位置情報は含まれていません。
リハイドレートされたログでできること:
- アーカイブにタグが含まれている場合、スキャンルールに以前マッチしたログをフィルタリングします。
- 機密データを含む過去のイベントを調査します。
リハイドレートされたログでできないこと:
- UI 内でインライン強調表示された機密データのマッチを表示: マスク、削除、一部削除、またはハッシュがマッチ時のアクションとして選択された場合でも、マッチは依然として隠された状態のままです。
- 遡及的スキャンをトリガー: Sensitive Data Scanner はリハイドレートされたログを再スキャンしません。
Sensitive Data Scanner を無効にする
Sensitive Data Scanner を完全にオフにするには、各スキャングループのトグルをオフに設定して無効化します。
参考資料