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
のあるこのコードスニペットは正規表現を使って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
ライブラリを使用します。
シナリオ |
コマンド |
---|---|
属性値の一部を削除または再編集します。 |
|
すべてのスパンまたはイベントにわたって特定の属性をドロップします。 |
|
スパン全体またはイベントをドロップします。 |
|
例 🔗
このコードスニペットは、文字列のキーとスパン名によって再編集します。
.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
ライブラリを使用します。
シナリオ |
コマンド |
---|---|
属性値の一部を削除または再編集します。 |
|
すべてのスパンまたはイベントにわたって特定の属性をドロップします。 |
|
スパン全体またはイベントをドロップします。 |
|
例 🔗
/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 で入手できます:
splunk-otel-js-web サンプルアプリケーション。
splunk-otel-android サンプルアプリケーション。