Docs » Splunk RUM で機密データのコントロールを使用する

Splunk RUM で機密データのコントロールを使用する 🔗

デフォルトでは、Splunk RUM はテキストボックスに入力されたデータ、ボタンの文字列やラベル、POST リクエストやレスポンスボディなどの機密情報をキャプチャしません。しかし、以下のような状況では機密情報が漏えいする可能性があります:

  • ページまたは画面要素の名前

  • 機密情報を含む可能性のあるURLのクエリパラメーター

Splunk RUM は、インストルメンテーションライブラリに追加のコントロールを提供し、データのサニタイズを可能にします。

機密データとは何ですか? 🔗

機微データは、個人を特定できる情報(PII)、顧客を特定できる情報(CII)、カード会員データ(CHD)、または保護された医療情報(PHI)のカテゴリに分類されます。Payment Card Industry Data Security Standard(PCI DSS)、Health Insurance Portability and Accountability Act(HIPAA)、General Data Protection Regulation(GDPR)などの業界要件に確実に準拠するためには、これらの種類のデータを保護する必要があります。

Splunk RUM for ブラウザインストルメンテーション 🔗

このインストルメンテーションは splunk-otel-js-web ライブラリを使用します。

シナリオ

コマンド

属性値の一部を削除または再編集します。名前を指定するか、名前によって指定された1つ以上の属性を解析し、正規表現を使って値を一致させます。

onAttributesSerializing

すべてのスパンまたはイベントにわたって特定の属性をドロップします。

onAttributesSerializing

スパン全体またはイベントをドロップします。

  • ignoreURLs

  • suppressTracing

🔗

onAttributesSerializing のあるこのコードスニペットは正規表現を使ってURLを変更します。

onAttributesSerializing: (attributes) => ({
        ...attributes,
        'http.url': typeof attributes['http.url'] === 'string'
          ? attributes['http.url'].replace(/([?&]token=)[^&]+(&|$)/g, '$1<token>$2')
          : attributes['http.url'],

このコードスニペットは、失敗したステータスを持つすべてのスパンを削除する方法を示しています。

context.with(suppressTracing(context.active()), () => {
      this._exporter.export([span], result => {
        if (result.code !== ExportResultCode.SUCCESS) {
          globalErrorHandler(
            result.error ??
              new Error(
                `SimpleSpanProcessor: span export failed (status ${result})`
              )
          );
        }

/payment/ を含むURLをすべて削除するには、(string\|regex)[] with ignoreUrls の形式を使用します:

ignoreUrls: [/\/payment\//]

Splunk RUM for Mobile Android インストルメンテーション 🔗

このインストルメンテーションは splunk-otel-android ライブラリを使用します。

シナリオ

コマンド

属性値の一部を削除または再編集します。

filterSpans(SpanFilterBuilder.replaceSpanAttribute)

すべてのスパンまたはイベントにわたって特定の属性をドロップします。

filterSpans(SpanFilterBuilder.removeSpanAttribute

スパン全体またはイベントをドロップします。

filterSpans(SpanFilterBuilder.rejectSpansByName)

🔗

このコードスニペットは、文字列のキーとスパン名によって再編集します。

.removeSpanAttribute(stringKey("http.user_agent"))
.rejectSpansByName(spanName -> spanName.contains("ignored"))
 // sensitive data in the login http.url attribute
 // is redacted before data moves to the exporter

このコードスニペットは、spanfilter を使ってスパンをドロップします。

options.spanFilter = { spanData in
  var spanData = spanData
  if spanData.name == "DropThis" {
    return nil // spans with this name aren't sent
  }
  var atts = spanData.attributes
  atts["http.url"] = .string("redacted") // change values for all urls
  return spanData.settingAttributes(atts)
}

モバイル iOS インストルメンテーションのための Splunk RUM 🔗

このインストルメンテーションは splunk-otel-ios ライブラリを使用します。

シナリオ

コマンド

属性値の一部を削除または再編集します。

options.spanFilter

すべてのスパンまたはイベントにわたって特定の属性をドロップします。

options.spanFilter

スパン全体またはイベントをドロップします。

  • ignoreURLs

  • options.spanFilter

🔗

/payment/ を含むURLをすべて削除するには、(string\|regex)[] with ignoreUrls の形式を使用します:

ignoreUrls: [/\/payment\//]

このコードスニペットは、spanfilter を使ってスパンをドロップします。

options.spanFilter = { spanData in
  var spanData = spanData
  if spanData.name == "DropThis" {
    return nil // spans with this name aren't sent
  }
  var atts = spanData.attributes
  atts["http.url"] = .string("redacted") // change values for all urls
  return spanData.settingAttributes(atts)
}

こちらも参照してください 🔗

これらのコマンドを使用して PII を曖昧にする方法の例を示した以下のサンプルアプリケーションは、Splunk OpenTelemetry GitHub で入手できます:

This page was last updated on 2023年09月11日.