Amazon Redshift unterstützt ab dem 1. November 2025 nicht mehr die Erstellung neuer Python-UDFs. Wenn Sie Python-UDFs verwenden möchten, erstellen Sie die UDFs vor diesem Datum. Bestehende Python-UDFs funktionieren weiterhin wie gewohnt. Weitere Informationen finden Sie im Blog-Posting
Datenbank-Prüfungsprotokollierung
Amazon-Redshift-Protokolle stellen Informationen zu Verbindungen und Benutzeraktivitäten in Ihrer Datenbank bereit. Diese Protokolle helfen Ihnen, die Datenbank zu Sicherheits- und Fehlerbehebungszwecken zu überwachen. Dieser Prozess wird häufig als Datenbankprüfung bezeichnet. Die Protokolle können an folgenden Orten gespeichert werden:
-
Amazon-S3-Buckets – Diese bieten Benutzern, die für die Überwachung der Aktivitäten in der Datenbank verantwortlich sind, Zugriff mit Datensicherheitsfunktionen.
-
Amazon CloudWatch – Sie können Prüfungsprotokollierungsdaten mithilfe der in CloudWatch integrierten Funktionen wie z. B. Visualisierungsfunktionen und Einstellungsaktionen anzeigen.
Anmerkung
SYS_CONNECTION_LOG sammelt Verbindungsprotokolldaten für Amazon Redshift Serverless. Beachten Sie, dass wenn Sie Prüfungsprotokolldaten für Amazon Redshift Serverless sammeln, diese nicht an Protokolldateien, sondern nur an CloudWatch gesendet werden können.
Themen
Amazon-Redshift-Protokolle
Amazon Redshift protokolliert Informationen in den folgenden Protokolldateien:
-
Verbindungsprotokoll – Protokolliert Authentifizierungsversuche, Verbindungen und Verbindungstrennungen.
-
Benutzerprotokoll – Protokolliert Informationen über Änderungen an Datenbankbenutzerdefinitionen.
-
Benutzeraktivitätenprotokoll – Protokolliert jede Abfrage vor ihrer Ausführung in der Datenbank.
Die Verbindungs- und Benutzerprotokolle sind vor allem aus Zwecken der Sicherheit nützlich. Mit dem Verbindungsprotokoll können Sie Informationen über die Benutzer, die sich mit der Datenbank verbinden, und die zugehörigen Verbindungsinformationen überwachen. Diese Informationen können ihre IP-Adresse beim Stellen der Anfrage, die Art der verwendeten Authentifizierung und vieles mehr sein. Sie können das Benutzerprotokoll verwenden, um Änderungen der Definitionen von Datenbankbenutzern zu überwachen.
Das Benutzeraktivitätsprotokoll ist vor allem aus Zwecken der Fehlerbehebung nützlich. Es verfolgt Informationen über die Arten von Abfragen nach, die von Benutzern und vom System in der Datenbank ausgeführt werden.
Das Verbindungsprotokoll und das Benutzerprotokoll korrespondieren mit Informationen, die in den Systemtabellen in Ihrer Datenbank gespeichert sind. Sie können dieselben Informationen auch über die Systemtabellen erhalten. Die Protokolldateien bieten jedoch einen einfacheren Mechanismus für Abruf und Prüfung. Die Protokolldateien sind von Amazon-S3-Berechtigungen anstatt Datenbankberechtigungen abhängig, um Abfragen für die Tabellen ausführen zu können. Zusätzlich reduzieren Sie die Auswirkungen von Interaktionen auf die Datenbank, da Sie die Informationen in Protokolldateien anzeigen, statt Abfragen für die Systemtabellen auszuführen.
Anmerkung
Protokolldateien sind nicht so aktuell wie die Systemprotokolltabellen STL_USERLOG und STL_CONNECTION_LOG. Datensätze, die älter sind als, aber nicht einschließlich, der letzte Datensatz, der in Protokolldateien kopiert wurde.
Anmerkung
Für Amazon Redshift Serverless sammelt SYS_CONNECTION_LOG Verbindungsprotokolldaten. Wenn Sie Prüfungsprotokolldaten für Amazon Redshift Serverless sammeln, können diese nicht an Protokolldateien, sondern nur an CloudWatch gesendet werden.
Verbindungsprotokoll
Protokolliert Authentifizierungsversuche sowie Verbindungen und Verbindungstrennungen. Die folgende Tabelle beschreibt die Informationen im Verbindungsprotokoll. Weitere Informationen zu diesen Feldern finden Sie unter STL_CONNECTION_LOG im Datenbankentwicklerhandbuch zu Amazon Redshift. Weitere Informationen zu gesammelten Verbindungsprotokolldaten für Amazon Redshift Serverless finden Sie unter SYS_CONNECTION_LOG.
| Spaltenname | Beschreibung |
|---|---|
| event | Verbindungs- oder Authentifizierungsereignis. |
| recordtime | Uhrzeit, zu der das Ereignis aufgetreten ist. |
| remotehost | Name oder IP-Adresse des Remote-Hosts. |
| remoteport | Portnummer für den Remote-Host. |
| pid | Die mit der Anweisung verbundene Prozess-ID. |
| dbname | Datenbankname. |
| username | Benutzername. |
| authmethod | Authentifizierungsmethode. |
| duration | Dauer der Verbindung in Mikrosekunden. |
| sslversion | Secure Sockets Layer (SSL)-Version. |
| sslcipher | SSL-Verschlüsselungsverfahren. |
| mtu | Maximum Transmission Unit (MTU). |
| sslcompression | SSL-Kompressionstyp. |
| sslexpansion | SSL-Expansionstyp. |
| iamauthguid | Die AWS Identity and Access Management (IAM)-Authentifizierungs-ID für die AWS CloudTrail-Anfrage. Dies ist der Bezeichner für den API-Aufruf GetClusterCredentials zum Erstellen der Anmeldeinformationen für eine bestimmte Verbindung. |
| application_name | Der ursprüngliche oder aktualisierte Name der Anwendung für eine Sitzung. |
| os_version | Die Version des Betriebssystems, das sich auf dem Clientcomputer befindet, der eine Verbindung zu Ihrem Amazon-Redshift-Cluster herstellt. |
| driver_version | Die Version des ODBC- oder JDBC-Treibers, die von Ihren SQL-Client-Tools von Drittanbietern eine Verbindung zu Ihrem Amazon-Redshift-Cluster herstellt. |
| plugin_name | Der Name des Plug-Ins, mit dem Sie eine Verbindung zu Ihrem Amazon-Redshift-Cluster herstellen. |
| protocol_version | Die interne Protokollversion, die der Amazon-Redshift-Treiber beim Herstellen der Verbindung mit dem Server verwendet. |
| sessionid | Der global eindeutige Bezeichner für die aktuelle Sitzung. |
| Kompression | Der für die Verbindung verwendete Komprimierungsalgorithmus. |
Benutzerprotokoll
Zeichnet die Details der folgenden Änderungen an einem Datenbankbenutzer auf:
-
Benutzer erstellen
-
Benutzer entfernen
-
Benutzer ändern (umbenennen)
-
Benutzer ändern (Eigenschaften ändern)
| Spaltenname | Beschreibung |
|---|---|
| userid | ID des von der Änderung betroffenen Benutzers. |
| username | Benutzername des von der Änderung betroffenen Benutzers. |
| oldusername | Bei einer Umbenennungsaktion der ursprüngliche Benutzername. Bei anderen Aktionen ist dieses Feld leer. |
| Aktion | Erfolgte Aktion. Zulässige Werte:
|
| usecreatedb | „True“ (1) zeigt an, dass der Benutzer über Berechtigungen zum Erstellen von Datenbanken verfügt. |
| usesuper | „True“ (1) zeigt an, dass es sich um einen Superuser handelt. |
| usecatupd | „True“ (1) zeigt an, dass der Benutzer Systemkataloge aktualisieren kann. |
| valuntil | Ablaufdatum des Passworts. |
| pid | Prozess-ID. |
| xid | Transaktions-ID. |
| recordtime | Zeitpunkt des Beginns der Abfrage, nach UTC. |
Fragen Sie die SYS_USERLOG-Systemansicht ab, um zusätzliche Informationen über Änderungen für Benutzer zu finden. Diese Ansicht enthält Protokolldaten von Amazon Redshift Serverless.
Benutzeraktivitätsprotokoll
Protokolliert jede Abfrage vor ihrer Ausführung in der Datenbank.
| Spaltenname | Beschreibung |
|---|---|
| recordtime | Uhrzeit, zu der das Ereignis aufgetreten ist. |
| db | Database name (Datenbankname). |
| user | Benutzername. |
| pid | Die mit der Anweisung verbundene Prozess-ID. |
| userid | Benutzer-ID. |
| xid | Transaktions-ID. |
| query | Ein Präfix von LOG: gefolgt vom Text der Abfrage einschließlich neuer Zeilen. |
Auditprotokolle und Amazon CloudWatch
Prüfungsprotokollierung ist in Amazon Redshift standardmäßig nicht aktiviert. Wenn Sie die Protokollierung für Ihren Cluster aktivieren, exportiert Amazon Redshift Protokolle in Amazon CloudWatch oder erstellt Protokolle, die Daten ab dem Zeitpunkt, an dem die Prüfungsprotokollierung aktiviert wurde, bis zum aktuellen Zeitpunkt erfassen, und lädt diese in Amazon S3 hoch. Jedes Protokollierungsupdate stellt eine Fortsetzung der vorherigen Protokolle dar.
Die Prüfungsprotokollierung in CloudWatch oder Amazon S3 stellt einen optionalen Prozess dar. Die Protokollierung in Systemtabellen ist nicht optional und erfolgt automatisch. Weitere Informationen zur Protokollierung in Systemtabellen finden Sie in der Systemtabellenreferenz im Datenbankentwicklerhandbuch zu Amazon Redshift.
Das Verbindungsprotokoll, das Benutzerprotokoll und das Benutzeraktivitätenprotokoll werden gemeinsam über die AWS-Managementkonsole, die Amazon Redshift API-Referenz oder die AWS Command Line Interface (AWS CLI) aktiviert. Im Fall des Benutzeraktivitätsprotokolls müssen Sie auch den enable_user_activity_logging-Datenbankparameter aktivieren. Wenn Sie nur die Prüfprotokollierungsfunktion, aber nicht den zugehörigen Parameter aktivieren, protokolliert der Datenbank-Audit die Protokollinformationen nur für das Verbindungsprotokoll und das Benutzerprotokoll, nicht aber für das Protokoll der Benutzeraktivität. Der Parameter enable_user_activity_logging ist standardmäßig nicht aktiviert (false). Sie können ihn auf true festlegen, um das Benutzeraktivitätsprotokoll zu aktivieren. Weitere Informationen finden Sie unter Amazon-Redshift-Parametergruppen.
Wenn Sie die Protokollierung in CloudWatch aktivieren, exportiert Amazon Redshift Protokolldaten zu Cluster-Verbindungen, Benutzern und Benutzeraktivitäten in eine Protokollgruppe in Amazon CloudWatch Logs. Die Protokolldaten ändern sich nicht, was das Schema anbelangt. CloudWatch wurde für die Überwachung von Anwendungen entwickelt. Mithilfe von CloudWatch können Sie Echtzeitanalysen durchführen oder das Tool so einrichten, dass bestimmte Maßnahmen ergriffen werden. Zudem können Sie Amazon CloudWatch Logs verwenden, um Ihre Protokolldatensätze in dauerhaftem Speicher aufzubewahren.
Die Verwendung von CloudWatch zum Anzeigen von Protokollen ist eine empfohlene Alternative zum Speichern von Protokolldateien in Amazon S3. Es ist kein großer Konfigurationsaufwand erforderlich, zudem kommt dies möglicherweise Ihren Überwachungsanforderungen zugute, insbesondere wenn Sie das Tool bereits zur Überwachung anderer Services und Anwendungen verwenden.
Protokollgruppen und Protokollereignisse in Amazon CloudWatch
Nachdem Sie die zu exportierenden Amazon-Redshift-Protokolle ausgewählt haben, können Sie Protokollereignisse in Amazon CloudWatch Logs überwachen. Eine neue Protokollgruppe für Amazon Redshift Serverless wird automatisch mit folgendem Präfix erstellt. log_type steht dabei für den Protokolltyp.
/aws/redshift/cluster/<cluster_name>/<log_type>
Wenn Sie beispielsweise das Verbindungsprotokoll exportieren möchten, werden die Protokolldaten in der folgenden Protokollgruppe gespeichert.
/aws/redshift/cluster/cluster1/connectionlog
Protokollereignisse werden mithilfe des Protokollstreams in eine Protokollgruppe exportiert. Um Informationen in Protokollereignissen für Ihren Serverless-Endpunkt zu suchen, können Sie die Amazon CloudWatch-Logs-Konsole, die AWS CLI oder die Amazon CloudWatch-Logs-API verwenden. Weitere Informationen zum Suchen und Filtern von Protokolldaten finden Sie unter Erstellen von Metriken aus Protokollereignissen mithilfe von Filtern.
In CloudWatch können Sie Ihre Protokolldaten unter Verwendung einer Abfragesyntax durchsuchen, die Granularität und Flexibilität bietet. Weitere Informationen finden Sie unter CloudWatch-Logs-Insights-Abfragesyntax.
Migration zur Amazon-CloudWatch-Prüfungsprotokollierung
Wenn Sie Protokolle an Amazon S3 senden und die Konfiguration ändern, um beispielsweise Protokolle an CloudWatch zu senden, sind Protokolle, die in Amazon S3 verbleiben, davon nicht betroffen. Sie können die Protokolldaten weiterhin in den Amazon-S3-Buckets abfragen, in denen sie sich befinden.
Protokolldateien in Amazon S3
Die Anzahl und die Größe der Amazon-Redshift-Protokolldateien in Amazon S3 ist stark von der Aktivität in Ihrem Cluster abhängig. Wenn der Cluster aktiv ist und eine große Zahl von Protokollen generiert, erstellt Amazon Redshift die Protokolldateien möglicherweise häufiger. Sie erhalten möglicherweise eine Reihe von Protokolldateien für dieselbe Art von Aktivität, beispielsweise mehrere Verbindungsprotokolle innerhalb einer Stunde.
Wenn Amazon Redshift Amazon S3 zum Speichern von Protokollen nutzt, fallen Kosten für den Speicher an, den Sie in Amazon S3 nutzen. Bevor Sie die Protokollierung in Amazon S3 konfigurieren, sollten Sie einplanen, wie lange Sie die Protokolldateien speichern müssen. Finden Sie in diesem Zusammenhang heraus, wann die Protokolldateien Ihren Prüfungsanforderungen entsprechend gelöscht oder archiviert werden können. Der von Ihnen erstellte Plan ist stark von der Art der gespeicherten Daten abhängig, beispielsweise Daten, die Compliance- oder regulatorischen Anforderungen unterliegen. Weitere Informationen über die Amazon-S3-Preise finden Sie unter Amazon Simple Storage Service (S3) – Preise
Einschränkungen bei der Aktivierung der Protokollierung in Amazon S3
Für die Audit-Protokollierung gelten folgende Einschränkungen:
-
Derzeit können Sie nur die Verschlüsselung (AES-256) der von Amazon S3 verwalteten Schlüssel (SSE-S3) verwenden.
-
Für die Amazon-S3-Buckets muss die S3-Objektsperre-Funktion deaktiviert sein.
Bucket-Berechtigungen für die Amazon-Redshift-Prüfungsprotokollierung
Wenn Sie die Protokollierung in Amazon S3 aktivieren, sammelt Amazon Redshift Protokollinformationen und lädt sie in Protokolldateien hoch, die in Amazon S3 gespeichert werden. Sie können einen vorhandenen oder einen neuen Bucket verwenden. Amazon Redshift setzt die folgenden IAM-Berechtigungen für den Bucket voraus:
-
s3:GetBucketAclDer Service erfordert Leseberechtigungen für den Amazon S3 Bucket, um den Bucket-Eigentümer identifizieren zu können. -
s3:PutObjectDer Service benötigt Put-Objekt-Berechtigungen, um die Protokolle hochladen zu können. Außerdem muss der Benutzer oder die IAM-Rolle, die die Protokollierung aktiviert, dies3:PutObject-Berechtigung für den Amazon-S3-Bucket besitzen. Bei jedem Hochladen von Protokollen legt der Service, ob der aktuelle Bucket-Eigentümer mit dem Bucket-Eigentümer zum Zeitpunkt der Aktivierung der Protokollierung übereinstimmt. Wenn diese Besitzer nicht übereinstimmen, erhalten Sie einen Fehler.
Wenn Sie beim Aktivieren der Prüfungsprotokollierung die Option zum Erstellen eines neuen Buckets auswählen, werden die korrekten Berechtigungen für ihn angewendet. Wenn Sie Ihren eigenen Bucket in Amazon S3 erstellen oder einen vorhandenen Bucket verwenden, müssen Sie jedoch eine Bucket-Richtlinie hinzufügen, die den Namen des Buckets enthält. Protokolle werden mit Service-Prinzipal-Anmeldeinformationen geliefert. Für die meisten AWS-Regionen fügen Sie den Redshift-Service-Prinzipal-Namen hinzu, redshift.amazonaws.com.
Die Bucket-Richtlinie verwendet das folgende Format. ServiceName und BucketName sind Platzhalter für eigene Werte. Geben Sie auch die zugehörigen Aktionen und Ressourcen in der Bucket-Richtlinie an.
Im folgenden Beispiel sehen Sie eine Bucket-Richtlinie für die Region USA Ost (Nord-Virginia) und einen Bucket namens AuditLogs.
Regionen, die standardmäßig nicht aktiviert sind, auch als „Opt-In-Regionen“ bezeichnet, benötigen einen regionsspezifischen Service-Prinzipal-Namen. Für diese enthält der Service-Prinzipal-Name die Region im Format redshift.. Beispiel: region.amazonaws.comredshift.ap-east-1.amazonaws.com für die Region Asien-Pazifik (Hongkong). Eine Liste der Regionen, die standardmäßig nicht aktiviert sind, finden Sie unter Verwalten von AWS-Regionen in der Allgemeine AWS-Referenz.
Anmerkung
Der regionsspezifische Service-Prinzipal-Name entspricht der Region, in der sich der Cluster befindet.
Bewährte Methoden für Protokolldateien
Wenn Redshift Protokolldateien auf Amazon S3 hochlädt, können große Dateien in Teilen hochgeladen werden. Wenn ein mehrteiliger Upload nicht erfolgreich ist, können Teile einer Datei im Amazon S3 Bucket verbleiben. Dies kann zu zusätzlichen Speicherkosten führen. Daher ist es wichtig zu verstehen, was passiert, wenn ein mehrteiliger Upload fehlschlägt. Eine ausführliche Erklärung zum mehrteiligen Upload für Prüfungsprotokolle finden Sie unter Hochladen und Kopieren von Objekten mit mehrteiligen Uploads und Abbrechen eines mehrteiligen Uploads.
Weitere Informationen zum Erstellen von S3 Buckets und zum Hinzufügen von Bucket-Richtlinien finden Sie unter Erstellen eines allgemeinen Buckets und Bucket-Berechtigungen für Amazon S3 im Benutzerhandbuch zu Amazon Simple Storage Service.
Bucket-Struktur für die Amazon-Redshift-Prüfungsprotokollierung
Standardmäßig organisiert Amazon Redshift die Protokolldateien im Amazon-S3-Bucket unter Verwendung der folgenden Bucket- und Objektstruktur:
AWSLogs/
AccountID/ServiceName/Region/Year/Month/Day/AccountID_ServiceName_Region_ClusterName_LogType_Timestamp.gz
Ein Beispiel ist: AWSLogs/123456789012/redshift/us-east-1/2013/10/29/123456789012_redshift_us-east-1_mycluster_userlog_2013-10-29T18:01.gz
Wenn Sie ein Amazon-S3-Schlüsselpräfix bereitstellen, stellen Sie das Präfix an den Anfang des Schlüssels.
Wenn Sie beispielsweise ein Präfix oder eigenes Präfix angeben: myprefix/AWSLogs/123456789012/redshift/us-east-1/2013/10/29/123456789012_redshift_us-east-1_mycluster_userlog_2013-10-29T18:01.gz
Das Amazon-S3-Schlüsselpräfix darf nicht mehr als 512 Zeichen enthalten. Es darf keine Leerzeichen ( ), doppelten Anführungszeichen (“), einzelne Anführungszeichen (‘) oder Backslashes (\)enthalten. Einige Sonderzeichen und Steuerzeichen sind ebenfalls nicht zulässig. Die Hexadezimalcodes für diese Zeichen sind:
-
x00 bis x20
-
x 22 %
-
x 27 %
-
x5c
-
x7f oder höher
Überlegungen zur Prüfprotokollierung in Amazon S3
Die Amazon-Redshift-Prüfungsprotokollierung kann aus folgenden Gründen unterbrochen werden:
-
Amazon Redshift verfügt nicht über die Berechtigung, Protokolle in den Amazon S3 Bucket hochzuladen. Überprüfen Sie, ob der Bucket mit der richtigen IAM-Richtlinie konfiguriert wurde. Weitere Informationen finden Sie unter Bucket-Berechtigungen für die Amazon-Redshift-Prüfungsprotokollierung.
-
Der Bucket-Eigentümer hat gewechselt. Amazon Redshift überprüft beim Hochladen von Protokollen, ob der Bucket-Eigentümer derselbe wie zum Zeitpunkt der Aktivierung der Protokollierung ist. Wenn sich der Bucket-Eigentümer geändert hat, kann Amazon Redshift keine Protokolle hochladen, bis Sie einen anderen Bucket für die Prüfungsprotokollierung konfiguriert haben.
-
Der Bucket kann nicht gefunden werden. Wenn der Bucket in Amazon S3 gelöscht wird, kann Amazon Redshift keine Protokolle hochladen. Sie müssen den Bucket entweder neu erstellen oder Amazon Redshift so konfigurieren, dass Protokolle in einen anderen Bucket hochgeladen werden.
API-Aufrufe mit AWS CloudTrail
Amazon Redshift ist in AWS CloudTrail integriert. Dieser Service zeichnet die Aktionen eines Benutzers, einer Rolle oder eines AWS-Services in Amazon Redshift auf. CloudTrail erfasst alle API-Aufrufe für Amazon Redshift als Ereignisse. Weitere Informationen zur Amazon-Redshift-Integration in AWS CloudTrail finden Sie unter Protokollierung mit CloudTrail.
CloudTrail kann unabhängig von oder zusätzlich zur Datenbank-Prüfungsprotokollierung von Amazon Redshift verwendet werden.
Weitere Informationen zu CloudTrail finden Sie im AWS CloudTrail-Benutzerhandbuch.