Zum Hauptinhalt springen
Jedes Mal, wenn in Ihrer Anwendung eine Anfrage gestellt wird, erfasst AppSignal die mit dieser Anfrage gesendeten Parameter. Dazu gehören Formulardaten (POST), Query-Parameter und Schlüssel in Routen (z. B. /user/:id/) in einigen Frameworks. Diese Daten könnten benutzeridentifizierbare Informationen wie Namen, E-Mail-Adressen, Passwörter, Zwei-Faktor-Authentifizierungs-Codes, API-Tokens usw. enthalten. Um die sensiblen Daten Ihrer Anwendung zu schützen, müssen Sie sicherstellen, dass diese Daten herausgefiltert werden, bevor sie an die AppSignal-Server gesendet werden. Auf diese Weise gibt Ihre Anwendung keine sensiblen Daten preis.
Lesen Sie mehr über die Parameter-Filterung in unserer Parameter-Filterung-Dokumentation.
Ihre Anwendung sollte keine personenidentifizierbaren Informationen (wie Personennamen, E-Mail-Adressen, Passwörter usw.) sammeln. Verwenden Sie die in diesem Leitfaden beschriebenen Tools, um diese Daten zu begrenzen und herauszufiltern.

Parameter-Filterung

Die grundlegende Parameter-Filterung in den AppSignal-Integrationen funktioniert mit einer Denylist, einer Liste von Schlüsseln, die herausgefiltert und nicht gesendet werden sollen. Sie können in der AppSignal-Konfiguration eine Option “Parameter filtern” mit einer Liste der zu filternden Parameter-Schlüssel setzen. Werte von Parametern, die Sie zum Herausfiltern konfiguriert haben, werden durch einen [FILTERED]-Wert ersetzt. Auf diese Weise enthält die Liste der Parameter in den App-Daten auf AppSignal.com weiterhin den Parameter-Schlüssel, aber nicht den Wert, sodass Sie immer noch die Sichtbarkeit haben, dass ein Wert mit potenziell sensiblen Daten gefiltert wurde, bevor er an AppSignal gesendet wurde.

Beispiel

Zum Beispiel führt eine Anwendung mit dieser AppSignal-Konfiguration:
filter_parameters: ["password"]
Zu dieser Ansicht für die Parameter einer Web-Anfrage auf AppSignal.com:
{
  "password": "[FILTERED]"
}
Dieser Leitfaden zeigt Ihnen, wie Sie die Parameter-Filterungs-Denylist Ihrer Anwendung basierend auf der von Ihrer Anwendung verwendeten Sprache konfigurieren:

Ruby

Das AppSignal-for-Ruby-Gem hat zwei Methoden zur Parameter-Filterung:

AppSignal-Parameter-Filterung

Verwenden Sie die Denylist für die grundlegende Parameter-Filterung. Diese Parameter-Filterung wird auf alle Query-Parameter in einer HTTP-Anfrage und alle Argumente für Background-Jobs angewendet. Diese Filterung unterstützt schlüsselbasierte Filterung für Hashes, deren Werte durch [FILTERED] ersetzt werden. Es gibt Unterstützung für verschachtelte Hashes und verschachtelte Hashes in Arrays. Jeder Hash, dem wir in Ihren Parametern begegnen, wird gefiltert. Um diese Filterung zu verwenden, fügen Sie Folgendes zu Ihrer config/appsignal.yml-Datei in der Umgebungsgruppe hinzu, in der sie gelten soll. Der filter_parameters-Wert ist ein Array von Strings.
Appsignal.configure do |config|
  config.filter_parameters << "password"
end

Rails-Parameter-Filterung

Glücklicherweise bietet Rails einen Mechanismus zur Filterung von Request-Parametern, um Daten aus Log-Dateien zu entfernen. AppSignal nutzt diesen Mechanismus zur Request-Parameter-Filterung, sodass sowohl Ihre Request-Logs als auch die an AppSignal gesendeten Request-Daten durch eine Konfiguration gefiltert werden. Angenommen, die Anwendung sollte dieselben Schlüssel für Request-Parameter und Job-Argumente filtern, die für verschiedene Ruby-Gems wie Sidekiq-Job-Argumente gemeldet werden. In diesem Fall ist es notwendig, die Parameter-Filterung in AppSignal mit der filter_parameters-Option zu konfigurieren, um auch die in der Rails-Konfiguration gesetzten Schlüssel einzubeziehen, da die Rails-Parameter-Filterungs-Konfiguration für diese Gems nicht wiederverwendet wird.

Denylist: Bestimmte Schlüssel filtern

Es gibt zwei Möglichkeiten zu bestimmen, welche Schlüssel gefiltert werden. Die erste besteht darin, bestimmte Schlüssel zur Denylist hinzuzufügen. Im folgenden Beispiel wird der Wert von :secret in jedem Post in der App durch [FILTERED] ersetzt.
module Blog
  class Application < Rails::Application
    config.filter_parameters << :secrets
  end
end
Der Nachteil dieses Ansatzes ist, dass er bei größeren, komplexeren Anwendungen komplizierter ist, insbesondere bei der Verwendung von Funktionen wie accepts_nested_attributes_for. Wenn wir vergessen, Schlüssel explizit hinzuzufügen, werden sie nicht gefiltert.

Allowlist: Bestimmte Schlüssel zulassen

Die Verwendung einer Lambda anstelle einer Liste von Schlüsseln bietet mehr Flexibilität. Im folgenden Beispiel verwenden wir eine Lambda, um eine Allowlist anstelle einer Denylist einzurichten.
ALLOWED_KEYS_MATCHER = /((^|_)ids?|action|controller|code$)/.freeze
SANITIZED_VALUE = '[FILTERED]'.freeze

Rails.application.config.filter_parameters << lambda do |key, value|
  unless key.match(ALLOWED_KEYS_MATCHER)
    value.replace(SANITIZED_VALUE) if value.is_a?(String)
  end
end
Sie können die Lambda jeden beliebigen Schlüssel prüfen lassen, sodass Sie eine Filtermethode bestimmen und verwenden können, die am besten zu den Anforderungen Ihrer Anwendung passt. Weitere Informationen zur Filterung von Parametern finden Sie in den Rails-Leitfäden zu ActionController.

Elixir

Wenn Ihre App Phoenix verwendet, können Sie die Phoenix-Parameter-Filterung verwenden. Sie können die eingebaute Filterung von AppSignal verwenden, wenn Ihre App ein anderes Elixir-Framework verwendet.

AppSignal-Parameter-Filterung

Verwenden Sie die Denylist für die grundlegende Parameter-Filterung. Diese Parameter-Filterung wird auf alle Query-Parameter in einer HTTP-Anfrage angewendet. Richten Sie die Parameter-Filterung mit der filter_parameters-Konfigurationsoption ein. Der filter_parameters-Wert ist eine Liste von Strings.
config :appsignal, :config,
  filter_parameters: ["password", "secret"]

Phoenix-Konfiguration filter_parameters

Verwenden Sie die Parameter-Filterung von Phoenix, um Ihre Konfiguration zentral zu halten, die verwendet wird, um sensible Informationen aus den Logs herauszuhalten. AppSignal folgt diesen Filterregeln.
config :phoenix,
  :filter_parameters, ["password", "secret"]
Wenn die Konfigurationsoption filter_parameters nicht gesetzt ist, verwendet Phoenix standardmäßig ["password"] als Konfiguration. Dies bedeutet, dass eine Phoenix-App ohne Konfiguration keine Passwörter an AppSignal sendet.

Node.js

Verwenden Sie die filterParameters-Denylist für die grundlegende Parameter-Filterung. Diese Filterung wird auf alle Parameter einer HTTP-Anfrage angewendet. Sie können die Parameter-Filterung mit der filterParameters-Konfigurationsoption einrichten. Der filterParameters-Wert ist ein Array von Strings.
const { Appsignal } = require("@appsignal/nodejs");

new Appsignal({
  // Andere Konfigurationsoptionen
  filterParameters: ["password", "secret"],
});

Python

Verwenden Sie die filter_parameters-Denylist für die grundlegende Parameter-Filterung. Diese Filterung wird auf alle Parameter einer HTTP-Anfrage angewendet. Sie können die Parameter-Filterung mit der filter_parameters-Konfigurationsoption einrichten. Der filter_parameters-Wert ist ein Array von Strings.
from appsignal import Appsignal

appsignal = Appsignal(
    # Andere Konfiguration
    filter_parameters: ["password", "secret"]
)

Go

Für Go melden wir die Request-Parameter als Query-Parameter (?query=text) und Payload-Daten (POST-Request-Payload). Verwenden Sie die filter_request_query_parameters-Denylist für die Filterung von Request-Query-Parametern. Setzen Sie die send_request_query_parameters-Option auf false, um überhaupt keine Request-Query-Parameter zu senden. Verwenden Sie die filter_request_payload-Denylist für die Filterung von Request-Payload-Daten. Setzen Sie die send_request_payload-Option auf false, um überhaupt keine Request-Payload-Daten zu senden. Weitere Informationen zur Konfiguration von OpenTelemetry für Go-Apps finden Sie auf der Go-Konfigurationsseite.
res := resource.NewWithAttributes(
	attribute.StringSlice("appsignal.config.filter_request_query_parameters", []string{"password", "cvv"}),
	attribute.StringSlice("appsignal.config.filter_request_payload", []string{"password", "cvv"}),
)

Java

Für Java melden wir die Request-Parameter als Query-Parameter (?query=text) und Payload-Daten (POST-Request-Payload). Verwenden Sie die filter_request_query_parameters-Denylist für die Filterung von Request-Query-Parametern. Setzen Sie die send_request_query_parameters-Option auf false, um überhaupt keine Request-Query-Parameter zu senden. Verwenden Sie die filter_request_payload-Denylist für die Filterung von Request-Payload-Daten. Setzen Sie die send_request_payload-Option auf false, um überhaupt keine Request-Payload-Daten zu senden. Weitere Informationen zur Konfiguration von OpenTelemetry für Java-Apps finden Sie auf der Java-Konfigurationsseite.
function encode() {
  echo -n "$@" | sed 's/,/%2C/g'
}

export OTEL_RESOURCE_ATTRIBUTES="\
  appsignal.config.filter_request_query_parameters=$(encode "password,cvv"),\
  appsignal.config.filter_request_payload=$(encode "password,cvv"),\
  ..."

PHP

Für PHP melden wir die Request-Parameter als Query-Parameter (?query=text) und Payload-Daten (POST-Request-Payload). Verwenden Sie die filter_request_query_parameters-Denylist für die Filterung von Request-Query-Parametern. Setzen Sie die send_request_query_parameters-Option auf false, um überhaupt keine Request-Query-Parameter zu senden. Verwenden Sie die filter_request_payload-Denylist für die Filterung von Request-Payload-Daten. Setzen Sie die send_request_payload-Option auf false, um überhaupt keine Request-Payload-Daten zu senden. Weitere Informationen zur Konfiguration von AppSignal für PHP finden Sie auf der PHP-Konfigurationsseite.
return [
    'filter_request_query_parameters' => ['password', 'cvv'],
    'filter_request_payload' => ['password', 'cvv'],
    // ... andere Optionen
];