Exportieren von Protokollen aus Amazon Cognito Cognito-Benutzerpools - Amazon Cognito

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.

Exportieren von Protokollen aus Amazon Cognito Cognito-Benutzerpools

Sie können Ihren Benutzerpool so konfigurieren, dass detaillierte Protokolle zusätzlicher Aktivitäten an einen anderen Benutzer gesendet werden AWS-Service, z. B. an eine CloudWatch Protokollgruppe. Diese Protokolle haben eine feinere Granularität als die darin enthaltenen Protokolle und können nützlich sein AWS CloudTrail, um Fehler in Ihrem Benutzerpool zu beheben und Benutzeranmeldeaktivitäten mit erweiterten Sicherheitsfunktionen zu analysieren. Wenn Sie Protokolle von Fehlern SMS und E-Mail-Benachrichtigungen streamen möchten, sendet Ihr Benutzerpool Protokolle ERROR auf der Ebene der Benutzer an eine Protokollgruppe. CloudWatch Wenn Sie Protokolle der Benutzeranmeldeaktivitäten streamen möchten, sendet Ihr Benutzerpool Protokolle INFO auf der Ebene von Benutzern an eine Protokollgruppe, einen Amazon Data Firehose-Stream oder einen Amazon S3 S3-Bucket. Sie können beide Optionen in einem Benutzerpool kombinieren.

Wissenswertes über den Log-Export

Auswirkung auf die Kosten

Für Amazon Data Firehose, Amazon S3 und CloudWatch Logs fallen Kosten für die Datenaufnahme und den Datenabruf an. Ihre Protokollierungskonfiguration könnte sich auf Ihre Rechnung auswirken. AWS Weitere Informationen finden Sie hier:

Die Exporte von Benutzeraktivitätsprotokollen enthalten Sicherheitsbewertungen und sind eine Funktion der erweiterten Sicherheitsfunktionen des Benutzerpools. Amazon Cognito generiert diese Protokolle nur, wenn erweiterte Sicherheitsfunktionen aktiv sind. Diese Funktionen erhöhen die Kosten pro monatlich aktivem Benutzer (MAU) in Ihrem Benutzerpool. Weitere Informationen finden Sie unter Amazon Cognito – Preise.

Lieferung nach bestem Aufwand

Die Bereitstellung von Protokollen von Amazon Cognito ist das optimale Szenario. Die Menge der Protokolle, die Ihr Benutzerpool liefert, und Ihre Servicekontingente für CloudWatch Logs, Amazon S3 und Firehose können sich auf die Übermittlung von Protokollen auswirken.

Bestehende externe Protokolle sind davon nicht betroffen

Diese Protokollierungsoptionen ersetzen oder ändern nicht die folgenden Protokollfunktionen von Benutzerpools.

  1. CloudTrail Protokolle von routinemäßigen Benutzeraktivitäten wie Registrierung und Anmeldung.

  2. Analyse der Benutzeraktivitäten im großen Maßstab mit CloudWatch Metriken.

Separat finden Sie auch Protokolle von Benutzerimportaufträgen und Lambda-Triggern unter CloudWatch Logs. Amazon Cognito und Lambda speichern diese Protokolle in anderen Protokollgruppen als denen, die Sie für detaillierte Aktivitätsprotokolle angeben.

Gilt nur für Benutzerpools

Für Identitätspools gibt es keine Protokollexportfunktionen.

Erfordert Benutzerberechtigungen und eine dienstbezogene Rolle

Der AWS Prinzipal, der den Protokollexport einrichtet, muss über Berechtigungen zum Ändern der Zielressourcen verfügen, wie in den folgenden Themen beschrieben. Amazon Cognito erstellt in Ihrem Namen eine serviceverknüpfte Rolle und übernimmt die Rolle, Protokolle an die Zielressource zu liefern.

Weitere Informationen zum Autorisierungsmodell für das Senden von Protokollen von Amazon Cognito finden Sie unter Protokollierung aktivieren AWS-Services im Amazon CloudWatch Logs-Benutzerhandbuch.

Die Protokollebene ist ausschließlich vom Protokolltyp abhängig

Bei der Nachrichtenzustellung handelt es sich um Protokolle des userNotification Typs und der ERROR Fehlerstufe. Benutzeraktivitätsprotokolle für erweiterte Sicherheitsanforderungen entsprechen dem userAuthEvents Typ und der Fehlerstufe. INFO Sie können zwei Mitglieder von kombinierenLogConfigurations, eines für userNotification to CloudWatch Logs und eines für userAuthEvents to Firehose, Amazon S3 oder CloudWatch Logs.

Sie können Benutzeraktivitätsprotokolle nicht an mehrere Ziele senden. Sie können Benutzerbenachrichtigungsprotokolle nur an Logs senden. CloudWatch

Verschiedene Konfigurationsoptionen

Sie können Benutzerbenachrichtigungsprotokolle nur mit den Amazon Cognito Cognito-Benutzerpools API oder einem konfigurieren. AWS SDK Sie können erweiterte Sicherheitsprotokolle für Benutzeraktivitäten mit der API oder in der Amazon Cognito Cognito-Konsole konfigurieren. Um beide festzulegen, verwenden Sie die, API wie in der Beispielanforderung unter gezeigt. SetLogDeliveryConfiguration

Bei großen ressourcenbasierten Richtlinien ist eine zusätzliche Konfiguration erforderlich

Um Protokolle an Protokollgruppen mit einer Ressourcenrichtlinie mit einer Größe von mehr als 5 120 Zeichen zu senden, konfigurieren Sie eine Protokollgruppe mit einem Pfad, der mit /aws/vendedlogs beginnt. Weitere Informationen finden Sie unter Aktivieren der Protokollierung für bestimmte AWS Dienste.

Fehler beim Exportieren von E-Mails und SMS Nachrichtenzustellung

Bei E-Mail- und SMS Nachrichtenzustellungsfehlern können Sie Benutzerbenachrichtigungsprotokolle auf Fehlerebene aus Ihrem Benutzerpool bereitstellen. Wenn Sie diese Funktion aktivieren, können Sie die Protokollgruppe auswählen, an die Amazon Cognito Protokolle senden soll. Die Protokollierung von Benutzerbenachrichtigungen ist nützlich, wenn Sie den Status von E-Mails und SMS Nachrichten herausfinden möchten, die Ihr Benutzerpool mit Amazon SNS und Amazon zugestellt hatSES. Für diese Option zum Exportieren von Protokollen sind im Gegensatz zum Export von Benutzeraktivitäten keine erweiterten Sicherheitsfunktionen erforderlich.

Sie können detaillierte Benachrichtigungsprotokolle mit den Amazon Cognito Cognito-Benutzerpools API in einer SetLogDeliveryConfigurationAPIAnfrage konfigurieren. Sie können die Protokollierungskonfiguration eines Benutzerpools in einer GetLogDeliveryConfigurationAPIAnfrage einsehen. Im Folgenden finden Sie ein Beispiel für einen Anfragetext.

{ "LogConfigurations": [ { "CloudWatchLogsConfiguration": { "LogGroupArn": "arn:aws:logs:us-west-2:123456789012:log-group:example-user-pool-exported" }, "EventSource": "userNotification", "LogLevel": "ERROR" } ], "UserPoolId": "us-west-2_EXAMPLE" }

Sie müssen diese Anfragen mit AWS Anmeldeinformationen autorisieren, die über die folgenden Berechtigungen verfügen.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ManageUserPoolLogs", "Action": [ "cognito-idp:SetLogDeliveryConfiguration", "cognito-idp:GetLogDeliveryConfiguration", ], "Resource": [ "*" ], "Effect": "Allow" }, { "Sid": "CognitoLog", "Action": [ "logs:CreateLogDelivery", "logs:GetLogDelivery", "logs:UpdateLogDelivery", "logs:DeleteLogDelivery", "logs:ListLogDeliveries" ], "Resource": [ "*" ], "Effect": "Allow" }, { "Sid": "CognitoLoggingCWL", "Action": [ "logs:PutResourcePolicy", "logs:DescribeResourcePolicies", "logs:DescribeLogGroups" ], "Resource": [ "*" ], "Effect": "Allow" } ] }

Es folgt ein Beispielereignis in einem Benutzerpool. Dieses Protokollschema kann sich ändern. Einige Felder werden möglicherweise mit Nullwerten protokolliert.

{ "eventTimestamp": "1687297330677", "eventSource": "USER_NOTIFICATION", "logLevel": "ERROR", "message": { "details": "String" }, "logSourceId": { "userPoolId": "String" } }

Exportieren von Benutzeraktivitätsprotokollen für erweiterte Sicherheitsfunktionen

Benutzerpools mit erweiterten Sicherheitsfunktionen protokollieren Benutzeraktivitätsereignisse: Einzelheiten und Sicherheitsbeurteilungen von Benutzeranmeldungen, Abmeldungen und anderen Authentifizierungsvorgängen in Ihrem Benutzerpool. Möglicherweise möchten Sie die Benutzeraktivitätsprotokolle in Ihrem eigenen Protokollverwaltungssystem überprüfen oder ein Archiv erstellen. Sie können diese Daten in eine Amazon CloudWatch Logs-Protokollgruppe, einen Amazon Data Firehose-Stream oder einen Amazon Simple Storage Service (Amazon S3) -Bucket exportieren. Von dort aus können Sie diese Daten in andere Systeme aufnehmen, die Daten so analysieren, normalisieren oder anderweitig verarbeiten, dass sie zu Ihren betrieblichen Abläufen passen. Um Daten dieses Typs zu exportieren, müssen erweiterte Sicherheitsfunktionen in Ihrem Benutzerpool aktiv sein.

Anhand der Informationen in diesen Benutzeraktivitätsprotokollen können Sie sich ein Profil der Benutzeranmelde- und Kontoverwaltungsaktivitäten anzeigen lassen. Standardmäßig erfasst Amazon Cognito diese Ereignisse in einem Speicher, der in Ihrem Benutzerpool basiert. Das folgende Beispiel ist ein Beispielereignis für einen Benutzer, der sich angemeldet hat und bei dem festgestellt wurde, dass er keine Risikofaktoren aufweist. Sie können diese Informationen mit dem AdminListUserAuthEvents API Vorgang abrufen. Im Folgenden finden Sie ein Beispiel für eine Ausgabe:

{ "AuthEvents": [ { "EventId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE22222", "EventType": "SignIn", "CreationDate": "2024-06-27T10:49:59.139000-07:00", "EventResponse": "Pass", "EventRisk": { "RiskDecision": "NoRisk", "CompromisedCredentialsDetected": false }, "ChallengeResponses": [ { "ChallengeName": "Password", "ChallengeResponse": "Success" } ], "EventContextData": { "IpAddress": "192.0.2.1", "DeviceName": "Chrome 126, Windows 10", "Timezone": "-07:00", "City": "null", "Country": "United States" } } ], "NextToken": "a1b2c3d4-5678-90ab-cdef-EXAMPLE22222#2024-06-27T17:49:59.139Z" }

Sie können den Protokollexport für Benutzeraktivitäten in der Amazon Cognito Cognito-Konsole oder während des SetLogDeliveryConfigurationAPIVorgangs aktivieren.

AWS Management Console
  1. Wenn Sie noch keinen haben, den Sie verwenden möchten, erstellen Sie einen S3-Bucket, einen Firehose-Stream oder eine CloudWatch Protokollgruppe.

  2. Melden Sie sich bei der Amazon Cognito-Konsole an.

  3. Wählen Sie User Pools (Benutzerpools) aus.

  4. Wählen Sie einen vorhandenen Benutzerpool aus der Liste aus oder erstellen Sie einen neuen Benutzerpool.

  5. Wählen Sie die Registerkarte Erweiterte Sicherheit. Suchen Sie nach Benutzeraktivitätsprotokolle exportieren und wählen Sie Bearbeiten

  6. Markieren Sie unter Protokollierungsstatus das Kontrollkästchen neben Export von Benutzeraktivitätsprotokollen aktivieren.

  7. Wählen Sie unter Logging-Ziel AWS-Service das aus, für das Sie Ihre Logs verwalten möchten: CloudWatch Log-Gruppe, Amazon Data Firehose-Stream oder S3-Bucket.

  8. Ihre Auswahl füllt die Ressourcenauswahl mit dem entsprechenden Ressourcentyp. Wählen Sie eine Protokollgruppe, einen Stream oder einen Bucket aus der Liste aus. Sie können auch auf die Schaltfläche Erstellen klicken, um AWS Management Console zum ausgewählten Service zu navigieren und eine neue Ressource zu erstellen.

  9. Wählen Sie Änderungen speichern aus.

API

Wählen Sie einen Zieltyp für Ihre Benutzeraktivitätsprotokolle.

Im Folgenden finden Sie ein Beispiel für einen SetLogDeliveryConfiguration Anforderungstext, der einen Firehose-Stream als Protokollziel festlegt.

{ "LogConfigurations": [ { "EventSource": "userAuthEvents", "FirehoseConfiguration": { "StreamArn": "arn:aws:firehose:us-west-2:123456789012:deliverystream/example-user-pool-activity-exported" }, "LogLevel": "INFO" } ], "UserPoolId": "us-west-2_EXAMPLE" }

Im Folgenden finden Sie ein Beispiel für einen SetLogDeliveryConfiguration Anfragetext, der einen Amazon S3 S3-Bucket als Protokollziel festlegt.

{ "LogConfigurations": [ { "EventSource": "userAuthEvents", "S3Configuration": { "BucketArn": "arn:aws:s3:::DOC-EXAMPLE-LOGGING-BUCKET" }, "LogLevel": "INFO" } ], "UserPoolId": "us-west-2_EXAMPLE" }

Im Folgenden finden Sie ein Beispiel für einen SetLogDeliveryConfiguration Anfragetext, der eine CloudWatch Protokollgruppe als Protokollziel festlegt.

{ "LogConfigurations": [ { "EventSource": "userAuthEvents", "CloudWatchLogsConfiguration": { "LogGroupArn": "arn:aws:logs:us-west-2:123456789012:log-group:DOC-EXAMPLE-LOG-GROUP" }, "LogLevel": "INFO" } ], "UserPoolId": "us-west-2_EXAMPLE" }

Der Benutzer, der die Protokollzustellung konfiguriert, muss ein Benutzerpooladministrator sein und über die folgenden zusätzlichen Berechtigungen verfügen:

Amazon S3
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ManageUserPoolLogs", "Action": [ "cognito-idp:SetLogDeliveryConfiguration", "cognito-idp:GetLogDeliveryConfiguration", ], "Resource": [ "*" ], "Effect": "Allow" }, { "Sid": "ManageLogsS3", "Effect": "Allow", "Action": [ "logs:CreateLogDelivery", "s3:PutBucketPolicy", "s3:GetBucketPolicy" ], "Resource": "*" } ] }
CloudWatch Logs
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ManageUserPoolLogs", "Action": [ "cognito-idp:SetLogDeliveryConfiguration", "cognito-idp:GetLogDeliveryConfiguration", ], "Resource": [ "*" ], "Effect": "Allow" }, { "Sid": "ManageLogsCWL", "Action": [ "logs:CreateLogDelivery", "logs:GetLogDelivery", "logs:UpdateLogDelivery", "logs:DeleteLogDelivery", "logs:ListLogDeliveries", "logs:PutResourcePolicy", "logs:DescribeResourcePolicies", "logs:DescribeLogGroups" ], "Resource": [ "*" ], "Effect": "Allow" } ] }
Amazon Data Firehose
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ManageUserPoolLogs", "Action": [ "cognito-idp:SetLogDeliveryConfiguration", "cognito-idp:GetLogDeliveryConfiguration", ], "Resource": [ "*" ], "Effect": "Allow" }, { "Sid": "ManageUserPoolLogsFirehose", "Effect": "Allow", "Action": [ "logs:CreateLogDelivery", "iam:CreateServiceLinkedRole", "firehose:TagDeliveryStream" ], "Resource": "*" } ] }

Es folgt ein Beispielereignis in einem Benutzerpool. Dieses Protokollschema kann sich ändern. Einige Felder werden möglicherweise mit Nullwerten protokolliert.

{ "eventTimestamp": "1687297330677", "eventSource": "USER_ACTIVITY", "logLevel": "INFO", "message": { "version": "1", "eventId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "eventType": "SignUp", "userSub": "a1b2c3d4-5678-90ab-cdef-EXAMPLE22222", "userName": "test-user", "userPoolId": "us-west-2_EXAMPLE", "clientId": "1example23456789", "creationDate": "Wed Jul 17 17:25:55 UTC 2024", "eventResponse": "InProgress", "riskLevel": "", "riskDecision": "PASS", "challenges": [], "deviceName": "Other, Other", "ipAddress": "192.0.2.1", "requestId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE33333", "idpName": "", "compromisedCredentialDetected": "false", "city": "Seattle", "country": "United States", "eventFeedbackValue": "", "eventFeedbackDate": "", "eventFeedbackProvider": "" }, "logSourceId": { "userPoolId": "us-west-2_EXAMPLE" } }