Docs » Splunk APMのセットアップ » Splunk APMで機密データのコントロールを使用する

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

メールアドレス、クレジットカード情報、社会保障番号などの機密データは、ユーザーを保護し業界標準の順守を保証するため、慎重な取り扱いが必要です。デフォルトでは、Splunk APMは機密情報を取得しません。Splunk APMは、自身に向けて明示的に送信された情報のみを受信します。しかし、機密情報が誤って送信された場合、Splunk APMは、漏えいを防ぎ、緩和するための多くの制御を提供します。

機密データは、個人を特定できる情報(PII)、顧客を特定できる情報(CII)、カード所有者データ(CHD)、または保護対象保健情報(PHI)のカテゴリーに分類される場合があります。カード産業セキュリティデータ基準(PCI DSS)、米国医療保険の携行性と責任に関する法律(HIPAA)、EU一般データ保護規則(GDPR)などの業界要件に確実に準拠するためには、これらの種類のデータを保護する必要があります。

前提条件 🔗

Splunk APMで機密データを設定するには、adminロールが必要です。

Splunk Distribution of OpenTelemetry Collectorを使用して機密データを削除する 🔗

機密情報に対する防御の第一線は、機密データを決してキャプチャしないSplunkの自動インストルメンテーションを使用することです。

手動のインストルメンテーション中に機密データが Splunk Observability Cloudに送信された場合は、Splunk Distribution of OpenTelemetry Collector を使用して取り込み前に削除することができます。詳細は Collector を使用して取り込むデータを制御する を参照し、また、以下のシナリオをお読みください。

注釈

スパンの除外に関する注意事項

スパン内の特定の値を隠すことが、スパン内の機密情報を非表示にするための最良のアプローチです。OpenTelemetryのパイプラインからスパン全体を除外することはできません。

シナリオ:Splunk Distribution of OpenTelemetry Collectorでスパンからタグを削除、墨消し、ハッシュ化する 🔗

パフォーマンスエンジニアのMoiraはトレースデータを見ており、手動のインストルメンテーションが誤って機密データを checkoutService から送信していることに気づきました。この情報漏えいを防ぐためのインストルメンテーションの更新を実行する一方で、機密性の高い顧客情報を含む可能性のあるすべてのスパンタグの値を隠す必要があります。attributes プロセッサーを使用すると、機密情報を削除、墨消し、ハッシュ化することができます。

以下は、Moiraが Splunk Distribution of OpenTelemetry Collectorの設定ファイルに追加できるプロセッサーの例です。この例では、checkoutService に関連するスパンから user.password 属性のキーと値を削除します。これは、この値がアプリケーションパフォーマンスのデバッグには関係ないことが分かっているためです。

さらに、Moiraは user.name の値をハッシュして、PIIを含まない一意のハッシュ値でユーザー名を置き換えます。こうすることで、デバッグ中に、これらの一意のハッシュ値を使用して、ユーザー名を明らかにすることなく、1人または複数のユーザーに問題が影響を及ぼしているかどうかを確認することができます。

また、受信スパンから credit.card.numbercvvcredit.card.expiration.date のタグの値を墨消しします。これらのフィールドに値が入力されたことをデバッグ時に把握しておくことは有益ですが、その値の内容まで認識する必要はないためです。

extensions:
    ...
processors:
  attributes/update:
    actions:
      - key: user.password
        action: delete
      - key: user.name
        action: hash
      - key: credit.card.number
        value: redacted
        action: update
      - key: cvv
        value: redacted
        action: update
      - key: credit.card.expiration.date
        value: redacted
        action: update
service:
    ...
...

このプロセッサーを設定した後、Moiraは、OpenTelemetry Collectorの設定YAMLファイルで、attributes/update プロセッサーを pipelinesprocessors パイプラインに追加します:

...
service:
    pipelines:
    traces:
        receivers: ...
        processors: [..., attributes/update, ...]
        ...

Splunk APMで可視性フィルターAPIを使用してデータをブロックする 🔗

データが意図せずSplunk APMに送信され、データ取り込みパイプラインで削除されていないというケースに対処するため、管理者アクセスを持つユーザーは、APIを使用してSplunk APMで特定のスパンタグをブロックする可視性フィルターを設定できます。これにより、APIの応答だけでなく、Splunk APMのあらゆる場所から情報が隠されます。隠された情報は、デフォルトの保存期間である8日が経過して期限が切れるまで、Splunk APMから消去されません。

以下は、この種の情報をブロックしたい場合の3つのシナリオ例です。これらのAPIは設定可能であるため、サービス全体の可視性を損なうことなく、データを漏らした可能性のあるスパンタグを保護できるという点に注目してください。

注釈

これらのAPIの使用に関する詳細なガイダンスについては、開発者向けドキュメントの「 APMの可視性フィルターAPI 」を参照してください。

特定のサービスの特定のスパンタグをブロックする 🔗

あるサービスの特定のスパンタグに機密情報が含まれている可能性があることが分かっている場合、Splunk APMのUIのあらゆる場所で、そのスパンタグとその値を非表示にすることができます。

例えば、MoiraがSplunk APMで精算サービスを手動でインストルメントし、サービスのインストルメンテーションで user.emailcredit.card.number のスパンタグを使用するタグをブロックし忘れたとします。次の例のAPI呼び出しは、checkoutService のすべての readCartDetails 操作から2つのスパンタグをブロックします。

リクエスト:

POST https://api.<YOUR_REALM>.signalfx.com/v2/apm/visibility-filter

JSONペイロード:

{

    "description": "Data blocked due to leak on 04/03/21",
    "startTime": "2021-04-03T15:00:00.073876Z",
    "matcher": {

        "sf_service": "checkoutService",
        "sf_operation": "readCartDetails"
    },
    "hiddenTags": ["user.email", "credit.card.number"]
}

注釈

レルムについて

レルムとは、あなたの組織がホストされているSplunk Observability Cloudの自己完結型のデプロイメントのことです。異なるレルムには異なるAPIエンドポイントがあります。例えば、us1 レルムでデータを送信するためのエンドポイントは https://ingest.us1.signalfx.com で、eu0 レルムでデータを送信するためのエンドポイントは https://ingest.eu0.signalfx.com、というようになります。

<YOUR_REALM> のようなプレースホルダのレルム名がドキュメントに記載されている場合は、実際のレルム名に置き換えてください。自分のレルム名を見つけるには、Splunk Observability Cloudのナビゲーションメニューを開き、Settings を選択し、ユーザー名を選択します。レルム名は Organizations セクションにあります。エンドポイントを指定する際にレルム名を含めない場合は、Splunk Observability Cloudがデフォルトで us0 レルムを設定します。

サービス内の特定の操作からタグをブロックする 🔗

特定のサービスの特定の操作に関連付けられた特定のタグのインスタンスから機密情報が漏れる可能性があることがわかっている場合、Splunk APMのUI内の特定の操作に関連付けられた場所で、そのタグとその値を非表示にすることができます。

例えば、Moiraの checkoutService で最近 readCartDetails という新しい操作を導入し、この操作が顧客情報を漏洩する可能性を持っているとします。そこで、以下のAPI呼び出しを行うことで、指定したサービスにおいてのみ、この操作に関連するカスタムスパンタグを非表示にすることができます。また、漏えいの可能性の開始時刻と終了時刻を設定して、この操作のリリースからサービスのセキュリティパッチのデプロイ予定までの期間のみブロッキングを実行することもできます。このようなきめ細かなデータ非表示設定により、非表示にしたいものを限定することができ、チームのモニタリングやトラブルシューティングのエクスペリエンスに最小限の影響しか与えないようにすることができます。

リクエスト:

POST https://api.<YOUR_REALM>.signalfx.com/v2/apm/visibility-filter

JSONペイロード:

{
    "description": "Data blocked due to leak on 04/03/21",
    "startTime": "2021-04-03T15:00:00.073876Z",
    "endTime": "2021-04-21T17:00:00.073876Z",

    "matcher": {

        "sf_service": "checkoutService",
        "sf_operation": "readCartDetails"
    },
    "visibleTags": ["sf_environment", "sf_service", "sf_endpoint", "sf_operation", "sf_httpMethod", "sf_kind", "sf_workflow", "sf_failure_root_cause_service", "sf_error"],
}

データベースクエリから機密情報を削除する 🔗

データベースクエリの分析を提供するために、Splunk APMは、各コールが発生するスパンからSQLステートメント(クエリ)をキャプチャします。データベースクエリ(ステートメント)には機密情報が含まれている可能性があります。

Collectorの attributes プロセッサーを使用して特定可能情報を削除した後、Splunk APMは、すべての動的要素を ? の文字に置き換えます。これは、標準化とも呼ばれる手順です。

次のスクリーンショットは、Database Query Performanceでのデータベースクエリの正規化を示しており、動的要素が置換されています:

正規化されたクエリ内でハイライトされている「?」の文字は、動的要素を置き換えてカーディナリティを減らし、機密情報からデータをサニタイズするためのものです。

SQLデータベースの db.statement 属性とNoSQLデータベースの db.operation 属性には、正規化後も機密情報が含まれている可能性があるため、Splunk APMで可視性フィルターを使用してその情報を非表示にします。詳細は Splunk APMで可視性フィルターAPIを使用してデータをブロックする を参照してください。

注釈

データベースクエリの正規化を無効にする場合は、データベースクエリの正規化を無効にする を参照してください。

This page was last updated on 2024年04月23日.