Datenbank-Prüfungsprotokollierung - Amazon Redshift

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.

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 Basisprotokolltabellen, STL_USERLOG und STL_CONNECTION_LOG. Datensätze, die älter sind als, aber nicht einschließlich, der letzte Datensatz, der in Protokolldateien kopiert wurde.

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.

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.
application_name Der ursprüngliche oder aktualisierte Name der Anwendung für eine Sitzung.
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.
os_version Die Version des Betriebssystems, das sich auf dem Clientcomputer befindet, der 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.

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:
  • Ändern

  • Erstellen

  • Entfernen

  • Umbenennen

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.

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.

Aktivieren der Protokollierung

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 Management Console, 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.

Anmerkung

Derzeit können Sie für die Audit-Protokollierung nur die Verschlüsselung (AES-256) der von Amazon S3 verwalteten Schlüssel (SSE-S3) verwenden.

Senden von Prüfungsprotokollen an Amazon CloudWatch

Wenn Sie die Protokollierung in CloudWatch aktivieren, exportiert Amazon Redshift Protokolldaten zu Cluster-Verbindungen, Benutzern und Benutzeraktivitäten in eine Amazon-CloudWatch-Logs-Protokollgruppe. 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.

Verwalten von 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.

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:GetBucketAcl Der Service erfordert Leseberechtigungen für den Amazon S3 Bucket, um den Bucket-Eigentümer identifizieren zu können.

  • s3:PutObject Der Service benötigt Put-Objekt-Berechtigungen, um die Protokolle hochladen zu können. Außerdem muss der IAM-Benutzer oder die IAM-Rolle, die die Protokollierung aktiviert, die s3:PutObject-Berechtigung für den Amazon-S3-Bucket haben. 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.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Put bucket policy needed for audit logging", "Effect": "Allow", "Principal": { "Service": "ServiceName" }, "Action": [ "s3:PutObject", "s3:GetBucketAcl" ], "Resource": [ "arn:aws:s3:::BucketName", "arn:aws:s3:::BucketName/*" ] } ] }

Im folgenden Beispiel sehen Sie eine Bucket-Richtlinie für die Region USA Ost (Nord-Virginia) und einen Bucket namens AuditLogs.

{ "Version": "2008-10-17", "Statement": [ { "Sid": "Put bucket policy needed for audit logging", "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": [ "s3:PutObject", "s3:GetBucketAcl" ], "Resource": [ "arn:aws:s3:::AuditLogs", "arn:aws:s3:::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.region.amazonaws.com. Beispiel: redshift.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 allgemeinen Referenz zu AWS.

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 Buckets und Bearbeiten von Bucket-Berechtigungen im Amazon-Simple-Storage-Service-Benutzerhandbuch.

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

Fehlerbehebung der Amazon-Redshift-Prüfungsprotokollierung 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.

Protokollieren von Amazon-Redshift-API-Aufrufen 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. Zu diesen erfassten Daten gehören Aufrufe von der Amazon-Redshift-Konsole und Codeaufrufe für die Amazon Redshift API-Vorgänge. Wenn Sie einen Trail erstellen, können Sie die kontinuierliche Bereitstellung von CloudTrail-Ereignissen an einen Amazon-S3-Bucket, einschließlich Ereignissen für Amazon Redshift, aktivieren. Wenn Sie keinen Trail konfigurieren, können Sie die neuesten Ereignisse in der CloudTrail-Konsole trotzdem in Ereignisverlauf anzeigen. Anhand der von CloudTrail erfassten Informationen können Sie bestimmte Details ermitteln. Dazu gehören, welche Anforderung an die Amazon Redshift gestellt wurde, die IP-Adresse, von der aus die Anforderung gestellt wurde, der Initiator und der Zeitpunkt der Anforderung sowie weitere Details.

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.

Amazon-Redshift-Informationen in CloudTrail

CloudTrail wird beim Erstellen Ihres AWS-Kontos für Sie aktiviert. Wenn in Amazon Redshift eine Aktivität auftritt, wird sie in einem CloudTrail-Ereignis zusammen mit anderen AWS-Service-Ereignissen im Ereignisverlauf aufgezeichnet. Sie können die neusten Ereignisse in Ihr AWS-Konto herunterladen und dort suchen und anzeigen. Weitere Informationen finden Sie unter Anzeigen von Ereignissen mit dem CloudTrail-Ereignisverlauf.

Für eine fortlaufende Aufzeichnung der Ereignisse in Ihrem AWS-Konto, einschließlich Ereignissen für Amazon Redshift, erstellen Sie einen Trail. Ein Trail ermöglicht es CloudTrail, Protokolldateien in einem Amazon S3 Bucket bereitzustellen. Wenn Sie einen Trail in der Konsole anlegen, gilt dieser standardmäßig für alle Regionen. Der Trail protokolliert Ereignisse aus allen Regionen in der AWS-Partition und stellt die Protokolldateien in dem von Ihnen angegebenen Amazon-S3-Bucket bereit. Darüber hinaus können Sie andere AWS-Services konfigurieren, um die in den CloudTrail-Protokollen erfassten Ereignisdaten weiter zu analysieren und entsprechend zu agieren. Weitere Informationen finden Sie unter:

Alle Amazon-Redshift-Aktionen werden von CloudTrail protokolliert und sind in der Amazon-Redshift-API-Referenz dokumentiert. Zum Beispiel generieren Aufrufe der Aktionen CreateCluster, DeleteCluster und DescribeCluster Einträge in den CloudTrail-Protokolldateien.

Jeder Ereignis- oder Protokolleintrag enthält Informationen zu dem Benutzer, der die Anforderung generiert hat. Die Identitätsinformationen unterstützen Sie bei der Ermittlung der folgenden Punkte:

  • Ob die Anfrage mit Root- oder IAM-Benutzer-Anmeldeinformationen ausgeführt wurde.

  • Ob die Anforderung mit temporären Sicherheitsanmeldeinformationen für eine Rolle oder einen verbundenen Benutzer gesendet wurde.

  • Ob die Anforderung aus einem anderen AWS-Service gesendet wurde

Weitere Informationen finden Sie unter dem CloudTrail userIdentity-Element.

Erläuterung der Einträge der Amazon-Redshift-Protokolldatei

Ein Trail ist eine Konfiguration, durch die Ereignisse als Protokolldateien an den von Ihnen angegebenen Amazon S3 Bucket übermittelt werden. CloudTrail-Protokolldateien können einen oder mehrere Einträge enthalten. Ein Ereignis stellt eine einzelne Anfrage aus einer beliebigen Quelle dar und enthält unter anderem Informationen über die angeforderte Aktion, das Datum und die Uhrzeit der Aktion sowie über die Anfrageparameter. CloudTrail-Protokolleinträge sind kein geordnetes Stacktrace der öffentlichen API-Aufrufe und erscheinen daher nicht in einer bestimmten Reihenfolge.

Das folgende Beispiel zeigt einen CloudTrail-Protokolleintrag für einen CreateCluster-Beispielaufruf.

{ "eventVersion": "1.04", "userIdentity": { "type": "IAMUser", "principalId": "AIDAMVNPBQA3EXAMPLE", "arn": "arn:aws:iam::123456789012:user/Admin", "accountId": "123456789012", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName": "Admin", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2017-03-03T16:51:56Z" } }, "invokedBy": "signin.amazonaws.com" }, "eventTime": "2017-03-03T16:56:09Z", "eventSource": "redshift.amazonaws.com", "eventName": "CreateCluster", "awsRegion": "us-east-2", "sourceIPAddress": "52.95.4.13", "userAgent": "signin.amazonaws.com", "requestParameters": { "clusterIdentifier": "my-dw-instance", "allowVersionUpgrade": true, "enhancedVpcRouting": false, "encrypted": false, "clusterVersion": "1.0", "masterUsername": "awsuser", "masterUserPassword": "****", "automatedSnapshotRetentionPeriod": 1, "port": 5439, "dBName": "mydbtest", "clusterType": "single-node", "nodeType": "dc1.large", "publiclyAccessible": true, "vpcSecurityGroupIds": [ "sg-95f606fc" ] }, "responseElements": { "nodeType": "dc1.large", "preferredMaintenanceWindow": "sat:05:30-sat:06:00", "clusterStatus": "creating", "vpcId": "vpc-84c22aed", "enhancedVpcRouting": false, "masterUsername": "awsuser", "clusterSecurityGroups": [], "pendingModifiedValues": { "masterUserPassword": "****" }, "dBName": "mydbtest", "clusterVersion": "1.0", "encrypted": false, "publiclyAccessible": true, "tags": [], "clusterParameterGroups": [ { "parameterGroupName": "default.redshift-1.0", "parameterApplyStatus": "in-sync" } ], "allowVersionUpgrade": true, "automatedSnapshotRetentionPeriod": 1, "numberOfNodes": 1, "vpcSecurityGroups": [ { "status": "active", "vpcSecurityGroupId": "sg-95f606fc" } ], "iamRoles": [], "clusterIdentifier": "my-dw-instance", "clusterSubnetGroupName": "default" }, "requestID": "4c506036-0032-11e7-b8bf-d7aa466e9920", "eventID": "13ba5550-56ac-405b-900a-8a42b0f43c45", "eventType": "AwsApiCall", "recipientAccountId": "123456789012" }

Das folgende Beispiel zeigt einen CloudTrail-Protokolleintrag für einen DeleteCluster-Beispielaufruf.

{ "eventVersion": "1.04", "userIdentity": { "type": "IAMUser", "principalId": "AIDAMVNPBQA3EXAMPLE", "arn": "arn:aws:iam::123456789012:user/Admin", "accountId": "123456789012", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName": "Admin", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2017-03-03T16:58:23Z" } }, "invokedBy": "signin.amazonaws.com" }, "eventTime": "2017-03-03T17:02:34Z", "eventSource": "redshift.amazonaws.com", "eventName": "DeleteCluster", "awsRegion": "us-east-2", "sourceIPAddress": "52.95.4.13", "userAgent": "signin.amazonaws.com", "requestParameters": { "clusterIdentifier": "my-dw-instance", "skipFinalClusterSnapshot": true }, "responseElements": null, "requestID": "324cb76a-0033-11e7-809b-1bbbef7710bf", "eventID": "59bcc3ce-e635-4cce-b47f-3419a36b3fa5", "eventType": "AwsApiCall", "recipientAccountId": "123456789012" }

Arbeiten mit Datenfreigabeinformationen in CloudTrail

Alle API-Vorgänge zur Datenfreigabe für Amazon Redshift werden von CloudTrail protokolliert. Zum Beispiel werden durch Aufrufe der Operationen AuthorizeDataShare, DeauthorizeDataShare und DescribeDataShares Einträge in den CloudTrail-Protokolldateien generiert. Informationen über API-Operationen zur Datenfreigabe finden Sie in der Amazon-Redshift-API-Referenz.

Jeder Ereignis- oder Protokolleintrag enthält Informationen zu dem Benutzer, der die Anforderung generiert hat. Die Identitätsinformationen unterstützen Sie bei der Ermittlung der folgenden Punkte:

  • Ob die Anfrage mit Root- oder IAM-Benutzer-Anmeldeinformationen ausgeführt wurde.

  • Ob die Anfrage mit temporären Sicherheitsanmeldeinformationen für eine IAM-Rolle oder einen Verbundbenutzer ausgeführt wurde.

  • Ob die Anforderung aus einem anderen AWS-Service gesendet wurde

Weitere Informationen über das CloudTrail-Element userIdentity finden Sie unter CloudTrail-userIdentity-Element.

Grundlegendes zu Protokolldateieinträgen für die Datenfreigabe

Ein Trail in CloudTrail ist eine Konfiguration, durch die Ereignisse als Protokolldateien an den von Ihnen angegebenen Amazon S3 Bucket übermittelt werden. CloudTrail-Protokolldateien können einen oder mehrere Einträge enthalten. Ein Ereignis stellt eine einzelne Anforderung aus einer beliebigen Quelle dar. Ein Ereignis enthält unter anderem Informationen über die angeforderte Aktion, etwaige Anforderungsparameter und das Datum und die Uhrzeit der Aktion. CloudTrail-Protokolleinträge sind kein geordnetes Stack-Trace der öffentlichen API-Aufrufe und erscheinen daher in keiner bestimmten Reihenfolge.

Das folgende Beispiel zeigt einen CloudTrail-Protokolleintrag, der die AuthorizeDataShare-Operation beschreibt.

{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "AKIAIOSFODNN7EXAMPLE:janedoe", "arn": "arn:aws:sts::111122223333:user/janedoe", "accountId": "111122223333", "accessKeyId": "AKIAI44QH8DHBEXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AKIAIOSFODNN7EXAMPLE:janedoe", "arn": "arn:aws:sts::111122223333:user/janedoe", "accountId": "111122223333", "userName": "janedoe" }, "attributes": { "creationDate": "2021-08-02T23:40:45Z", "mfaAuthenticated": "false" } } }, "eventTime": "2021-08-02T23:40:58Z", "eventSource": "redshift.amazonaws.com", "eventName": "AuthorizeDataShare", "awsRegion": "us-east-1", "sourceIPAddress": "3.227.36.75", "userAgent":"aws-cli/1.18.118 Python/3.6.10 Linux/4.9.217-0.1.ac.205.84.332.metal1.x86_64 botocore/1.17.41", "requestParameters": { "dataShareArn": "arn:aws:redshift:us-east-1:111122223333:datashare:4c64c6ec-73d5-42be-869b-b7f7c43c7a53/testshare", "consumerIdentifier": "555555555555" }, "responseElements": { "dataShareArn": "arn:aws:redshift:us-east-1:111122223333:datashare:4c64c6ec-73d5-42be-869b-b7f7c43c7a53/testshare", "producerNamespaceArn": "arn:aws:redshift:us-east-1:123456789012:namespace:4c64c6ec-73d5-42be-869b-b7f7c43c7a53", "producerArn": "arn:aws:redshift:us-east-1:111122223333:namespace:4c64c6ec-73d5-42be-869b-b7f7c43c7a53", "allowPubliclyAccessibleConsumers": true, "dataShareAssociations": [ { "consumerIdentifier": "555555555555", "status": "AUTHORIZED", "createdDate": "Aug 2, 2021 11:40:56 PM", "statusChangeDate": "Aug 2, 2021 11:40:57 PM" } ] }, "requestID": "87ee1c99-9e41-42be-a5c4-00495f928422", "eventID": "03a3d818-37c8-46a6-aad5-0151803bdb09", "readOnly": false, "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management" }

Sie können die Amazon-S3-Bucket-Benachrichtigungsfunktion nutzen und Amazon S3 anweisen, objekterzeugte Ereignisse in AWS Lambda zu veröffentlichen. Wenn CloudTrail Protokolle in Ihren S3 Bucket schreibt, kann Amazon S3 Ihre Lambda-Funktion aufrufen, indem es das von Amazon S3 objekterzeugte Ereignis als Parameter weitergibt. Ihre Lambda-Funktion kann das Protokollobjekt lesen und die Zugriffsdatensätze verarbeiten, die von CloudTrail protokolliert wurden. Weitere Informationen finden Sie unter Verwenden von AWS Lambda mit AWS CloudTrail.

Amazon-Redshift-Konto-IDs inAWS CloudTrail-Protokollen

Wenn Amazon Redshift einen anderen AWS-Service für Sie aufruft, wird der Aufruf mit einer Konto-ID protokolliert, die zu Amazon Redshift gehört. Er wird nicht mit Ihrer Konto-ID protokolliert. Angenommen, Amazon Redshift ruft zum Beispiel AWS Key Management Service (AWS KMS)-Operationen wie CreateGrant, Decrypt, Encrypt und RetireGrant auf, um die Verschlüsselung in Ihrem Cluster zu verwalten. In diesem Fall werden die Aufrufe von AWS CloudTrail mit einer Amazon-Redshift-Konto-ID protokolliert.

Amazon Redshift verwendet beim Aufrufen anderer AWS-Services die Konto-IDs in der folgenden Tabelle.

Region Region Konto-ID
Region USA Ost (Nord-Virginia) us-east-1 368064434614
Region USA Ost (Ohio) us-east-2 790247189693
Region US West (N. California) us-west-1 703715109447
Region USA West (Oregon) us-west-2 473191095985
Region Afrika (Kapstadt) af-south-1 420376844563
Region Asien-Pazifik (Hongkong) ap-east-1 651179539253
Region Asien-Pazifik (Jakarta) ap-southeast-3 623197973179
Region Asien-Pazifik (Mumbai) ap-south-1 408097707231
Region Asien-Pazifik (Osaka) ap-northeast-3 398671365691
Region Asien-Pazifik (Seoul) ap-northeast-2 713597048934
Region Asien-Pazifik (Singapur) ap-southeast-1 960118270566
Region Asien-Pazifik (Sydney) ap-southeast-2 485979073181
Region Asien-Pazifik (Tokio) ap-northeast-1 615915377779
Region Kanada (Zentral) ca-central-1 764870610256
Region Europa (Frankfurt) eu-central-1 434091160558
Region Europa (Irland) eu-west-1 246478207311
Region Europa (London) eu-west-2 885798887673
Region Europa (Mailand) eu-south-1 041313461515
Region Europa (Paris) eu-west-3 694668203235
Region Europa (Stockholm) eu-north-1 553461782468
Region Naher Osten (Bahrain) me-south-1 051362938876
Region Südamerika (São Paulo) sa-east-1 392442076723

Das folgende Beispiel zeigt einen CloudTrail-Protokolleintrag für den AWS KMS-Decrypt-Vorgang, der von Amazon Redshift aufgerufen wurde.

{ "eventVersion": "1.05", "userIdentity": { "type": "AssumedRole", "principalId": "AROAI5QPCMKLTL4VHFCYY:i-0f53e22dbe5df8a89", "arn": "arn:aws:sts::790247189693:assumed-role/prod-23264-role-wp/i-0f53e22dbe5df8a89", "accountId": "790247189693", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2017-03-03T16:24:54Z" }, "sessionIssuer": { "type": "Role", "principalId": "AROAI5QPCMKLTL4VHFCYY", "arn": "arn:aws:iam::790247189693:role/prod-23264-role-wp", "accountId": "790247189693", "userName": "prod-23264-role-wp" } } }, "eventTime": "2017-03-03T17:16:51Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "us-east-2", "sourceIPAddress": "52.14.143.61", "userAgent": "aws-internal/3", "requestParameters": { "encryptionContext": { "aws:redshift:createtime": "20170303T1710Z", "aws:redshift:arn": "arn:aws:redshift:us-east-2:123456789012:cluster:my-dw-instance-2" } }, "responseElements": null, "requestID": "30d2fe51-0035-11e7-ab67-17595a8411c8", "eventID": "619bad54-1764-4de4-a786-8898b0a7f40c", "readOnly": true, "resources": [ { "ARN": "arn:aws:kms:us-east-2:123456789012:key/f8f4f94f-e588-4254-b7e8-078b99270be7", "accountId": "123456789012", "type": "AWS::KMS::Key" } ], "eventType": "AwsApiCall", "recipientAccountId": "123456789012", "sharedEventID": "c1daefea-a5c2-4fab-b6f4-d8eaa1e522dc" }