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 Datenbankaudit bezeichnet. Die Protokolle werden in Amazon-S3-Buckets gespeichert. Diese bieten Benutzern, die für die Überwachung der Aktivitäten in der Datenbank verantwortlich sind, einen komfortablen Zugriff mit Datensicherheitsfunktionen.

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 die Systemtabellen verwenden, um dieselben Informationen zu erhalten. Die Protokolldateien stellen jedoch einen einfacheren Mechanismus für Abruf und Prüfung bereit. 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, erstellt Amazon Redshift Protokolle, die Daten ab dem Zeitpunkt, an dem die Prüfungsprotokollierung aktiviert wurde, bis zum aktuellen Zeitpunkt erfassen, und lädt sie in Amazon S3 hoch. Jedes Protokollierungsupdate stellt eine Fortsetzung der Informationen dar, die bereits protokolliert wurden.

Anmerkung

Die Prüfungsprotokollierung nach Amazon S3 stellt einen optionalen, manuellen Prozess dar. Wenn Sie die Protokollierung für Ihren Cluster aktivieren, aktivieren Sie nur die Protokollierung nach Amazon S3. Die Protokollierung zu Systemtabellen ist nicht optional und wird automatisch für den Cluster ausgeführt. 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.

Verwalten von Protokolldateien

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.

Da 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 konfigurieren, sollten Sie einen Plan haben, wie lange Sie die Protokolldateien speichern müssen. Legen Sie in diesem Zusammenhang fest, wann die Protokolldateien entsprechend Ihren Audit-Anforderungen entweder 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 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 Managing AWS-Regionen (AWS-Regionen verwalten) 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 S3-Bucket-Berechtigungen

Wenn Sie einem Drittanbieter Zugriff auf Ihre Amazon S3 Buckets gewähren, berücksichtigen Sie die bewährten Methoden für Sicherheit. Sie können optionale Informationen in der Bucket-Richtlinie angeben, um den Bucket-Eigentümer zu bestimmen. Auf diese Weise kann der Kontoinhaber veranlassen, dass die Rolle nur unter bestimmten Umständen angenommen werden kann, und so das Problem des verwirrten Stellvertreters umgehen. Weitere Informationen finden Sie unter Das Problem des verwirrten Stellvertreters im IAM-Benutzerhandbuch.

Wir empfehlen Ihnen, Ihre Bucket-Richtlinie so zu konfigurieren, dass der Zugriff auf einen Service-Prinzipal speziell im Namen der Ressourcen des Bucket-Eigentümers (oder der Partner) gewährt wird. Das folgende Beispiel veranschaulicht, wie Sie Ihren Bucket so konfigurieren können, dass Amazon Redshift die Berechtigung zum Hochladen von Protokollen in den Bucket erteilt wird, indem Sie den SourceArn angeben, und gleichzeitig verhindern, dass andere Konten Protokolldateien hochladen. Sie können den Zugriff entweder mit SourceArn oder SourceAccount angeben.

{ "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/*" ], "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:redshift:us-east-1:123456789012:cluster:my-cluster" } } } ] }

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

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. Weitere Informationen finden Sie unter Ändern des Buckets für die Prüfungsprotokollierung.

  • 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 für das Hochladen von Protokollen in einen anderen Bucket konfigurieren. Weitere Informationen finden Sie unter Ändern des Buckets für die Prüfungsprotokollierung.

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
US West (N. California) Region us-west-1 703715109447
US West (Oregon) Region us-west-2 473191095985
Africa (Cape Town) Region af-south-1 420376844563
Region Asien-Pazifik (Hongkong) ap-east-1 651179539253
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
Europe (Ireland) Region 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" }