Überwachung von Auditprotokollen in Amazon OpenSearch Service - OpenSearch Amazon-Dienst

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Überwachung von Auditprotokollen in Amazon OpenSearch Service

Wenn Ihre Amazon OpenSearch Service-Domain eine differenzierte Zugriffskontrolle verwendet, können Sie Audit-Logs für Ihre Daten aktivieren. Audit-Logs sind hochgradig anpassbar und ermöglichen es Ihnen, Benutzeraktivitäten in Ihren OpenSearch Clustern nachzuverfolgen, einschließlich erfolgreicher und fehlgeschlagener Authentifizierungen OpenSearch, Anfragen an, Indexänderungen und eingehende Suchanfragen. Die Standardkonfiguration verfolgt einen beliebten Satz von Benutzeraktionen. Wir empfehlen jedoch, die Einstellungen genau an Ihre Bedürfnisse anzupassen.

Genau wie OpenSearch Anwendungsprotokolle und langsame Protokolle veröffentlicht OpenSearch Service CloudWatch Auditprotokolle in Logs. Wenn diese Option aktiviert ist, gelten die CloudWatch Standardpreise.

Anmerkung

Um Audit-Logs zu aktivieren, muss Ihre Benutzerrolle der security_manager Rolle zugeordnet sein, die Ihnen Zugriff auf die OpenSearch plugins/_security REST-API gewährt. Weitere Informationen hierzu finden Sie unter Hauptbenutzer ändern.

Einschränkungen

Prüfungsprotokolle haben folgende Einschränkungen:

  • Prüfungsprotokolle enthalten keine clusterübergreifenden Suchanforderungen, die von der Domain-Zugriffsrichtlinie des Ziels abgelehnt wurden.

  • Die Maximalgröße jeder Prüfungsprotokollmeldung beträgt 10 000 Zeichen. Die Prüfungsprotokollmeldung wird abgeschnitten, wenn sie diesen Grenzwert überschreitet.

Aktivieren von Prüfprotokollen

Die Aktivierung des Prüfungsprotokolls für einen Cluster ist ein zweistufiger Prozess. Zunächst konfigurieren Sie Ihre Domain so, dass Audit-Logs in Logs veröffentlicht werden CloudWatch . Anschließend aktivieren Sie Audit-Logs in OpenSearch Dashboards und konfigurieren sie so, dass sie Ihren Anforderungen entsprechen.

Wichtig

Wenn beim Ausführen dieser Schritte ein Fehler auftritt, finden Sie unter Prüfungsprotokolle können nicht aktiviert werden Informationen zur Fehlerbehebung.

Schritt 1: Aktivieren von Überwachungsprotokolle und Konfigurieren einer Zugriffsrichtlinie

In diesen Schritten wird beschrieben, wie Sie mithilfe der Konsole Prüfungsprotokolle aktivieren. Sie können sie auch mithilfe der oder der AWS CLIOpenSearch Service-API aktivieren.

Um Audit-Logs für eine OpenSearch Service-Domain (Konsole) zu aktivieren
  1. Wählen Sie die Domain aus, um ihre Konfiguration zu öffnen, und wechseln Sie dann zur Registerkarte Protokolle.

  2. Wählen Sie Prüfungsprotokolle und dann Aktivieren aus.

  3. Erstellen Sie eine CloudWatch Protokollgruppe oder wählen Sie eine bestehende aus.

  4. Wählen Sie eine Zugriffsrichtlinie mit den entsprechenden Berechtigungen aus, oder erstellen Sie eine Richtlinie mit dem in der Konsole verfügbaren JSON:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "es.amazonaws.com" }, "Action": [ "logs:PutLogEvents", "logs:CreateLogStream" ], "Resource": "cw_log_group_arn" } ] }

    Wir empfehlen Ihnen, die aws:SourceAccount- und aws:SourceArn-Bedingungsschlüssel zur Richtlinie hinzuzufügen, um sich vor dem Problem des verwirrten Stellvertreters zu schützen. Das Quellkonto ist der Eigentümer der Domain und der Quell-ARN ist der ARN der Domain. Ihre Domain muss zum Hinzufügen dieser Bedingungsschlüssel über Service-Software R20211203 oder höher verfügen.

    Beispielsweise können Sie der Richtlinie den folgenden Bedingungsblock hinzufügen:

    "Condition": { "StringEquals": { "aws:SourceAccount": "account-id" }, "ArnLike": { "aws:SourceArn": "arn:aws:es:region:account-id:domain/domain-name" } }
  5. Wählen Sie Aktivieren aus.

Schritt 2: Aktivieren Sie die Audit-Logs in den OpenSearch Dashboards

Nachdem Sie die Auditprotokolle in der OpenSearch Servicekonsole aktiviert haben, müssen Sie sie auch in den OpenSearch Dashboards aktivieren und entsprechend Ihren Anforderungen konfigurieren.

  1. Öffnen Sie OpenSearch Dashboards und wählen Sie im Menü auf der linken Seite Sicherheit aus.

  2. Wählen Sie Prüfungsprotokolle aus.

  3. Wählen Sie Überwachungsprotokollierung aktivieren aus.

Die Dashboards-Benutzeroberfläche bietet vollständige Kontrolle über die Prüfungsprotokolleinstellungen unter Allgemeine Einstellungen und Compliance-Einstellungen. Eine Beschreibung aller Konfigurationsoptionen finden Sie unter Prüfungsprotokolleinstellungen.

Aktivieren Sie die Audit-Protokollierung mithilfe der AWS CLI

Der folgende AWS CLI Befehl aktiviert Audit-Logs für eine bestehende Domain:

aws opensearch update-domain-config --domain-name my-domain --log-publishing-options "AUDIT_LOGS={CloudWatchLogsLogGroupArn=arn:aws:logs:us-east-1:123456789012:log-group:my-log-group,Enabled=true}"

Sie können Prüfungsprotokolle auch aktivieren, wenn Sie eine Domain erstellen. Weitere Informationen finden Sie in der AWS CLI -Befehlsreferenz.

Aktivieren der Prüfungsprotokollierung über die Konfigurations-API

Die folgende Anfrage an die Konfigurations-API aktiviert Prüfungsprotokolle für eine vorhandene Domain:

POST https://es.us-east-1.amazonaws.com/2021-01-01/opensearch/domain/my-domain/config { "LogPublishingOptions": { "AUDIT_LOGS": { "CloudWatchLogsLogGroupArn":"arn:aws:logs:us-east-1:123456789012:log-group1:sample-domain", "Enabled":true } } }

Weitere Informationen finden Sie in der Amazon OpenSearch Service API-Referenz.

Protokollebenen und -Kategorien prüfen

Cluster-Kommunikation erfolgt über zwei separate Ebenen: die REST- und die Transportebene.

  • Die REST-Schicht deckt die Kommunikation mit HTTP-Clients wie curl, Logstash, OpenSearch Dashboards, dem Java-High-Level-REST-Client und der Python-Anforderungsbibliothek ab — alle HTTP-Anfragen, die im Cluster ankommen.

  • Die Transportebene deckt die Kommunikation zwischen Knoten ab. Nachdem beispielsweise eine Suchanfrage im Cluster (über die REST-Ebene) eintrifft, sendet der koordinierende Knoten, der die Anfrage bedient, die Anfrage an andere Knoten, empfängt deren Antworten, sammelt die erforderlichen Dokumente und fasst sie in der endgültigen Antwort zusammen. Operationen wie Shard-Zuweisung und Neuverteilung erfolgen ebenfalls über die Transportebene.

Sie können Prüfungsprotokolle für ganze Ebenen sowie einzelne Prüfungskategorien für eine Ebene aktivieren oder deaktivieren. Die folgende Tabelle enthält eine Zusammenfassung der Überwachungskategorien und die Ebene, für die sie verfügbar sind.

Kategorie Beschreibung Für REST verfügbar Transportfähig

FAILED_LOGIN

Eine Anforderung enthielt ungültige Anmeldeinformationen und die Authentifizierung ist fehlgeschlagen. Ja Ja

MISSING_PRIVILEGES

Ein Benutzer hatte nicht die Berechtigung, die Anforderung zu stellen. Ja Ja

GRANTED_PRIVILEGES

Ein Benutzer hatte die Berechtigung, die Anforderung zu stellen. Ja Ja

OPENSEARCH_SECURITY_INDEX_ATTEMPT

Eine Anforderung hat versucht, den .opendistro_security-Index zu ändern. Nein Ja

AUTHENTICATED

Eine Anforderung enthielt gültige Anmeldeinformationen und die Authentifizierung ist erfolgreich. Ja Ja

INDEX_EVENT

Eine Anforderung führte einen administrativen Vorgang für einen Index aus, z. B. das Erstellen eines Indexes, das Festlegen eines Alias oder das Ausführen einer erzwungenen Zusammenführung. Die vollständige Liste der indices:admin/ Aktionen, die diese Kategorie umfasst, ist in der Dokumentation verfügbar. OpenSearch Nein Ja

Zusätzlich zu diesen Standardkategorien bietet die fein abgestufte Zugriffskontrolle mehrere zusätzliche Kategorien, die darauf ausgelegt sind, die Anforderungen an die Daten-Compliance zu erfüllen.

Kategorie Beschreibung

COMPLIANCE_DOC_READ

Eine Anforderung führte ein Leseereignis für ein Dokument in einem Index aus.

COMPLIANCE_DOC_WRITE

Eine Anforderung führte ein Schreibereignis für ein Dokument in einem Index aus.

COMPLIANCE_INTERNAL_CONFIG_READ

Eine Anforderung führte ein Leseereignis auf dem .opendistro_security-Index aus.

COMPLIANCE_INTERNAL_CONFIG_WRITE

Eine Anforderung führte ein Schreibereignis auf dem .opendistro_security-Index aus.

Es kann eine beliebige Kombination von Kategorien und Nachrichtenattributen vorliegen. Wenn Sie beispielsweise eine REST-Anforderung senden, um ein Dokument zu indizieren, werden möglicherweise die folgenden Zeilen in den Prüfungsprotokollen angezeigt:

  • Authentifiziert auf REST-Ebene (Authentifizierung)

  • GRANTED_PRIVILEGE auf Transportebene (Autorisierung)

  • COMPLIANCE_DOC_WRITE (Dokument in einen Index geschrieben)

Prüfprotokolleinstellungen

Prüfungsprotokolle verfügen über zahlreiche Konfigurationsoptionen.

Allgemeine Einstellungen

Mit den allgemeinen Einstellungen können Sie einzelne Kategorien oder ganze Ebenen aktivieren oder deaktivieren. Wir empfehlen, GRANTED_PRIVILEGES und AUTHENTICATED als ausgeschlossene Kategorien. Andernfalls werden diese Kategorien für jede gültige Anforderung an den Cluster protokolliert.

Name Backend-Einstellung Beschreibung

REST-Ebene

enable_rest

Aktivieren oder Deaktivieren von Ereignissen, die auf der REST-Ebene auftreten.

REST-Kategorien

disabled_rest_categories

Geben Sie Prüfungskategorien an, die auf der REST-Ebene ignoriert werden sollen. Durch Ändern dieser Kategorien kann die Größe der Prüfungsprotokolle erheblich erhöht werden.

Transportebene

enable_transport

Aktivieren oder deaktivieren Sie Ereignisse, die auf der Transportebene auftreten.

Transportkategorien

disabled_transport_categories

Geben Sie Prüfungskategorien an, die auf der Transportebene ignoriert werden müssen. Durch Ändern dieser Kategorien kann die Größe der Prüfungsprotokolle erheblich erhöht werden.

Mit Attributeinstellungen können Sie die Detailmenge in jeder Protokollzeile anpassen.

Name Backend-Einstellung Beschreibung

Massenanfragen

resolve_bulk_requests

Wenn Sie diese Einstellung aktivieren, wird für jedes Dokument in einer Massenanforderung ein Protokoll generiert, das die Größe der Prüfungsprotokolle erheblich erhöhen kann.

Anforderungstext

log_request_body

Fügen Sie den Anforderungstext der Anforderungen ein.

Lösen von Indizes

resolve_indices

Alias in Indizes auflösen.

Verwenden Sie Ignorier-Einstellungen, um eine Gruppe von Benutzern oder API-Pfaden auszuschließen:

Name Backend-Einstellung Beschreibung

Ignorierte Benutzer

ignore_users

Geben Sie die Benutzer an, die Sie ausschließen möchten.

Ignorierte Anforderungen

ignore_requests

Geben Sie Anforderungsmuster an, die Sie ausschließen möchten.

Compliance-Einstellungen

Mit den Compliance-Einstellungen können Sie den Zugriff auf Index-, Dokument- oder Feldebene optimieren.

Name Backend-Einstellung Beschreibung

Compliance-Protokollierung

enable_compliance

Aktivieren oder deaktivieren Sie die Compliance-Protokollierung.

Sie können die folgenden Einstellungen für die Lese- und Schreibereignisprotokollierung festlegen.

Name Backend-Einstellung Beschreibung

Interne Konfigurationsprotokollierung

internal_config

Aktivieren oder deaktivieren Sie die Protokollierung von Ereignissen im .opendistro_security-Index.

Sie können die folgenden Einstellungen für Lese-Ereignisse festlegen.

Name Backend-Einstellung Beschreibung

Lesen von Metadaten

read_metadata_only

Nur Metadaten für Leseereignisse einschließen. Fügen Sie keine Dokumentfelder ein.

Ignorierte Benutzer

read_ignore_users

Schließen Sie bestimmte Benutzer nicht für Leseereignisse ein.

Beobachtete Felder

read_watched_fields

Geben Sie die Indizes und Felder an, die auf Leseereignisse überwacht werden sollen. Durch das Hinzufügen überwachter Felder wird ein Protokoll pro Dokumentzugriff generiert, wodurch die Größe der Prüfungsprotokolle erheblich vergrößert wird. Beobachtete Felder unterstützen Indexmuster und Feldmuster:

{ "index-name-pattern": [ "field-name-pattern" ], "logs*": [ "message" ], "twitter": [ "id", "user*" ] }

Sie können die folgenden Einstellungen für Schreibereignisse festlegen.

Name Backend-Einstellung Beschreibung

Schreiben von Metadaten

write_metadata_only

Nur Metadaten für Schreibereignisse einschließen. Fügen Sie keine Dokumentfelder ein.

Protokoll-Differenzen

write_log_diffs

Wenn write_metadata_only false ist, schließen Sie nur die Unterschiede zwischen Schreibereignissen ein.

Ignorierte Benutzer

write_ignore_users

Geben Sie bestimmte Benutzer für Schreibereignisse nicht ein.

Angesehene Indizes

write_watched_indices

Geben Sie die Indizes oder Indexmuster an, die auf Schreibereignisse überwacht werden sollen. Durch das Hinzufügen überwachter Felder wird ein Protokoll pro Dokumentzugriff generiert, wodurch die Größe der Prüfungsprotokolle erheblich vergrößert wird.

Prüfungsprotokollbeispiel

Dieser Abschnitt enthält eine Beispielkonfiguration, eine Suchanforderung und das resultierende Prüfungsprotokoll für alle Lese- und Schreibereignisse eines Indexes.

Schritt 1: Konfigurieren von Prüfungsprotokollen

Nachdem Sie die Veröffentlichung von Audit-Logs in einer CloudWatch Logs-Gruppe aktiviert haben, navigieren Sie zur Seite „Audit-Protokollierung“ der OpenSearch Dashboards und wählen Sie Audit-Protokollierung aktivieren aus.

  1. Wählen Sie unter Allgemeine Einstellungen Konfigurieren und stellen Sie sicher, dass die REST-Ebene aktiviert ist.

  2. Wählen Sie in den Compliance-Einstellungen die Option Konfigurieren aus.

  3. Fügen Sie unter Schreiben in Beobachtete Felder accounts für alle Schreibereignisse zu diesem Index hinzu.

  4. Fügen Sie unter Lesen in Beobachtete Felder ssn- und id--Felder des accounts-Index hinzu:

    { "accounts-": [ "ssn", "id-" ] }

Schritt 2: Ausführen von Lese- und Schreibereignissen

  1. Navigieren Sie zu OpenSearch Dashboards, wählen Sie Dev Tools und indexieren Sie ein Beispieldokument:

    PUT accounts/_doc/0 { "ssn": "123", "id-": "456" }
  2. Um ein Leseereignis zu testen, senden Sie die folgende Anforderung:

    GET accounts/_search { "query": { "match_all": {} } }

Schritt 3: Beobachten der Protokolle

  1. Öffnen Sie die CloudWatch Konsole unter https://console.aws.amazon.com/cloudwatch/.

  2. Wählen Sie im Navigationsbereich Protokollgruppen aus.

  3. Wählen Sie die Protokollgruppe aus, die Sie beim Aktivieren von Prüfungsprotokollen festgelegt haben. Innerhalb der Protokollgruppe erstellt OpenSearch Service einen Protokollstream für jeden Knoten in Ihrer Domain.

  4. Wählen Sie unter Protokollströme die Option Alle durchsuchen aus.

  5. Die Lese- und Schreibereignisse finden Sie in den entsprechenden Protokollen. Sie können eine Verzögerung von 5 Sekunden erwarten, bevor das Protokoll angezeigt wird.

    Beispiel für Schreibprüfungsprotokoll

    { "audit_compliance_operation": "CREATE", "audit_cluster_name": "824471164578:audit-test", "audit_node_name": "be217225a0b77c2bd76147d3ed3ff83c", "audit_category": "COMPLIANCE_DOC_WRITE", "audit_request_origin": "REST", "audit_compliance_doc_version": 1, "audit_node_id": "3xNJhm4XS_yTzEgDWcGRjA", "@timestamp": "2020-08-23T05:28:02.285+00:00", "audit_format_version": 4, "audit_request_remote_address": "3.236.145.227", "audit_trace_doc_id": "lxnJGXQBqZSlDB91r_uZ", "audit_request_effective_user": "admin", "audit_trace_shard_id": 8, "audit_trace_indices": [ "accounts" ], "audit_trace_resolved_indices": [ "accounts" ] }

    Beispiel für Leseprüfungsprotokoll

    { "audit_cluster_name": "824471164578:audit-docs", "audit_node_name": "806f6050cb45437e2401b07534a1452f", "audit_category": "COMPLIANCE_DOC_READ", "audit_request_origin": "REST", "audit_node_id": "saSevm9ASte0-pjAtYi2UA", "@timestamp": "2020-08-31T17:57:05.015+00:00", "audit_format_version": 4, "audit_request_remote_address": "54.240.197.228", "audit_trace_doc_id": "config:7.7.0", "audit_request_effective_user": "admin", "audit_trace_shard_id": 0, "audit_trace_indices": [ "accounts" ], "audit_trace_resolved_indices": [ "accounts" ] }

Um den Text der Anfrage einzubeziehen, kehren Sie zu den Compliance-Einstellungen in den OpenSearch Dashboards zurück und deaktivieren Sie die Option Metadaten schreiben. Um Ereignisse eines bestimmten Benutzers auszuschließen, fügen Sie den Benutzer zu Ignorierte Benutzer hinzu.

Eine Beschreibung der einzelnen Prüfungsprotokoll-Felder finden Sie unter Referenz des Prüfungsprotokolls. Informationen zur Suche und Analyse Ihrer Audit-Protokolldaten finden Sie unter Analysieren von Protokolldaten mit CloudWatch Logs Insights im Amazon CloudWatch Logs-Benutzerhandbuch.

Konfigurieren von Prüfungsprotokollen mit der REST-API

Wir empfehlen die Verwendung von OpenSearch Dashboards zur Konfiguration von Audit-Logs, Sie können aber auch die detaillierte REST-API für die Zugriffskontrolle verwenden. Dieser Abschnitt enthält eine Beispielanforderung. Die vollständige Dokumentation zur REST-API ist in der Dokumentation verfügbar. OpenSearch

PUT _opendistro/_security/api/audit/config { "enabled": true, "audit": { "enable_rest": true, "disabled_rest_categories": [ "GRANTED_PRIVILEGES", "AUTHENTICATED" ], "enable_transport": true, "disabled_transport_categories": [ "GRANTED_PRIVILEGES", "AUTHENTICATED" ], "resolve_bulk_requests": true, "log_request_body": true, "resolve_indices": true, "exclude_sensitive_headers": true, "ignore_users": [ "kibanaserver" ], "ignore_requests": [ "SearchRequest", "indices:data/read/*", "/_cluster/health" ] }, "compliance": { "enabled": true, "internal_config": true, "external_config": false, "read_metadata_only": true, "read_watched_fields": { "read-index-1": [ "field-1", "field-2" ], "read-index-2": [ "field-3" ] }, "read_ignore_users": [ "read-ignore-1" ], "write_metadata_only": true, "write_log_diffs": false, "write_watched_indices": [ "write-index-1", "write-index-2", "log-*", "*" ], "write_ignore_users": [ "write-ignore-1" ] } }