

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

# Überwachung von Amazon RDS mithilfe von Datenbankaktivitätsstreams
<a name="DBActivityStreams"></a><a name="das"></a>

Mithilfe von Datenbankaktivitätsstreams können Sie nahezu in Echtzeit Datenbankaktivitätsstreams überwachen.

**Topics**
+ [Übersicht über Datenbankaktivitätsstreams](#DBActivityStreams.Overview)
+ [Konfigurieren von einheitlicher Prüfung für Oracle-Datenbank](DBActivityStreams.configuring-auditing.md)
+ [Konfigurieren der Auditing-Richtlinie für Amazon RDS für Microsoft SQL Server](DBActivityStreams.configuring-auditing-SQLServer.md)
+ [Starten eines Datenbankaktivitäts-Streams](DBActivityStreams.Enabling.md)
+ [Ändern eines Datenbankaktivitäts-Streams für Amazon RDS](DBActivityStreams.Modifying.md)
+ [Abrufen des Status eines Datenbank-Aktivitätsstreams](DBActivityStreams.Status.md)
+ [Stoppen eines Datenbankaktivitäts-Streams](DBActivityStreams.Disabling.md)
+ [Überwachen von Datenbankaktivitäts-Streams](DBActivityStreams.Monitoring.md)
+ [IAM-Richtlinien-Beispiele für Datenbankaktivitäts-Streams](DBActivityStreams.ManagingAccess.md)

## Übersicht über Datenbankaktivitätsstreams
<a name="DBActivityStreams.Overview"></a>

Als Amazon-RDS-Datenbankadministrator müssen Sie Ihre Datenbank schützen und Compliance- und regulatorische Anforderungen erfüllen. Eine Strategie besteht darin, Datenbankaktivitätsstreams in Ihre Überwachungstools zu integrieren. Auf diese Weise überwachen und legen Sie Alarme für Prüfungsaktivitäten in Ihrer Datenbank fest.

Sicherheitsbedrohungen sind sowohl extern als auch intern. Zum Schutz vor internen Bedrohungen können Sie den Administratorzugriff auf Datenströme durch die Konfiguration der Funktion „Datenbankaktivitätsstreams“ steuern. Amazon RDS hat DBAs keinen Zugriff auf die Erfassung, Übertragung, Speicherung und Verarbeitung der Streams.

**Contents**
+ [Funktionsweise von Datenbankaktivitätsstreams](#DBActivityStreams.Overview.how-they-work)
+ [Prüfungen in Oracle-Datenbanken und Microsoft-SQL-Server-Datenbanken](#DBActivityStreams.Overview.auditing)
  + [Einheitliche Prüfung in Oracle Database](#DBActivityStreams.Overview.unified-auditing)
  + [Prüfungen in Microsoft SQL Server](#DBActivityStreams.Overview.SQLServer-auditing)
  + [Nicht-native Prüfungsfelder für Oracle Database und SQL Server](#DBActivityStreams.Overview.unified-auditing.non-native)
  + [Überschreiben von DB-Parametergruppen](#DBActivityStreams.Overview.unified-auditing.parameter-group)
+ [Asynchroner Modus für Datenbank-Aktivitätsstreams](#DBActivityStreams.Overview.sync-mode)
+ [Anforderungen und Einschränkungen für Datenbankaktivitätsstreams](#DBActivityStreams.Overview.requirements)
+ [Verfügbarkeit von Regionen und Versionen](#DBActivityStreams.RegionVersionAvailability)
+ [Unterstützte DB-Instance-Klassen für Datenbankaktivitätsstreams](#DBActivityStreams.Overview.requirements.classes)

### Funktionsweise von Datenbankaktivitätsstreams
<a name="DBActivityStreams.Overview.how-they-work"></a>

Amazon RDS sendet Aktivitäten nahezu in Echtzeit per Push in einen Amazon Kinesis Data Stream. Der Kinesis Stream wird automatisch erstellt. Von Kinesis aus können Sie AWS Dienste wie Amazon Data Firehose konfigurieren und AWS Lambda den Stream nutzen und die Daten speichern.

**Wichtig**  
Die Verwendung der Datenbankaktivitätsstreams-Funktion in Amazon RDS ist kostenlos, Amazon Kinesis erhebt jedoch Gebühren für einen Datenstrom. Weitere Informationen finden Sie unter [Amazon Kinesis Data Streams – Preise](https://aws.amazon.com/kinesis/data-streams/pricing/).

Sie können Anwendungen für das Compliance-Management für den Verbrauch von Datenbankaktivitäts-Streams konfigurieren. Solche Anwendungen können den Datenstrom verwenden, um Warnungen zu generieren und -Datenbank zu prüfen.

RDS für Oracle unterstützt Datenbankaktivitätsstreams in Multi-AZ-Bereitstellungen. In diesem Fall überwachen Datenbankaktivitätsstreams sowohl die primäre als auch die Standby-Instances.

### Prüfungen in Oracle-Datenbanken und Microsoft-SQL-Server-Datenbanken
<a name="DBActivityStreams.Overview.auditing"></a>

Das Auditing ist die Überwachung und Aufzeichnung von konfigurierten Datenbankaktionen. Amazon RDS erfasst standardmäßig keine Datenbankaktivitäten. Sie erstellen und verwalten Audit-Richtlinien in Ihrer Datenbank selbst.

**Topics**
+ [Einheitliche Prüfung in Oracle Database](#DBActivityStreams.Overview.unified-auditing)
+ [Prüfungen in Microsoft SQL Server](#DBActivityStreams.Overview.SQLServer-auditing)
+ [Nicht-native Prüfungsfelder für Oracle Database und SQL Server](#DBActivityStreams.Overview.unified-auditing.non-native)
+ [Überschreiben von DB-Parametergruppen](#DBActivityStreams.Overview.unified-auditing.parameter-group)

#### Einheitliche Prüfung in Oracle Database
<a name="DBActivityStreams.Overview.unified-auditing"></a>

In einer Oracle-Datenbank ist eine *einheitliche Prüfungsrichtlinie* eine benannte Gruppe von Prüfungseinstellungen, die Sie verwenden können, um einen Aspekt des Benutzerverhaltens zu prüfen. Eine Richtlinie kann so einfach sein wie die Prüfung der Aktivitäten eines einzelnen Benutzers. Sie können auch komplexe Prüfungsrichtlinien erstellen, die Bedingungen verwenden.

Eine Oracle-Datenbank schreibt Audit-Datensätze, einschließlich `SYS`-Audit-Datensätzen an den *einheitlichen Audit-Trail*. Wenn beispielsweise während einer `INSERT`-Anweisung ein Fehler auftritt, zeigt die Standardprüfung die Fehlernummer und die ausgeführte SQL an. Der Audit-Trail befindet sich in einer schreibgeschützten Tabelle im Schema `AUDSYS`. Um auf diese Datensätze zuzugreifen, fragen Sie die `UNIFIED_AUDIT_TRAIL`-Datenwörterbuchansicht ab.

In der Regel konfigurieren Sie Datenbankaktivitätsstreams wie folgt:

1. Erstellen Sie eine Oracle-Datenbank-Prüfungsrichtlinie mithilfe des `CREATE AUDIT POLICY`-Befehls.

   Die Oracle-Datenbank generiert Audit-Datensätze.

1. Aktivieren Sie die Audit-Richtlinie mithilfe des `AUDIT POLICY`-Befehls.

1. Datenbankaktivitätsstreams konfigurieren.

   Nur Aktivitäten, die den Prüfungs-Richtlinien der Oracle-Datenbank entsprechen, werden erfasst und an den Amazon Kinesis Data Stream gesendet. Wenn Datenbankaktivitäts-Streams aktiviert sind, kann ein Oracle-Datenbankadministrator die Prüfungsrichtlinie weder ändern noch Prüfungsprotokolle entfernen.

Weitere Informationen zu einheitlichen Audit-Richtlinien finden Sie unter [Prüfungsaktivitäten mit einheitlichen Prüfungsrichtlinien und AUDIT](https://docs.oracle.com/en/database/oracle/oracle-database/19/dbseg/configuring-audit-policies.html#GUID-2435D929-10AD-43C7-8A6C-5133170074D0) im *Oracle-Datenbank-Sicherheitshandbuch*.

#### Prüfungen in Microsoft SQL Server
<a name="DBActivityStreams.Overview.SQLServer-auditing"></a>

Database Activity Stream verwendet eine SQLAudit Funktion zur Prüfung der SQL Server-Datenbank.

Die RDS-für-SQL-Server-Instance enthält Folgendes:
+ Server-Audit – Das SQL-Server-Audit erfasst eine einzelne Instance von Aktionen auf Server- oder Datenbankebene und eine Gruppe von Aktionen, die überwacht werden sollen. Die Audits auf Serverebene `RDS_DAS_AUDIT` und `RDS_DAS_AUDIT_CHANGES` werden von RDS verwaltet.
+ Server-Audit-Spezifikation – Die Server-Audit-Spezifikation zeichnet die Ereignisse auf Serverebene auf. Sie können die `RDS_DAS_SERVER_AUDIT_SPEC`-Spezifikation ändern. Diese Spezifikation ist mit dem Server-Audit `RDS_DAS_AUDIT` verknüpft. Die `RDS_DAS_CHANGES_AUDIT_SPEC`-Spezifikation wird von RDS verwaltet.
+ Datenbank-Audit-Spezifikation — Die Datenbank-Audit-Spezifikation zeichnet die Ereignisse auf Datenbankebene auf. Sie können eine Datenbank-Audit-Spezifikation `RDS_DAS_DB_<name>` erstellen und sie mit dem `RDS_DAS_AUDIT`-Server-Audit verknüpfen.

Sie können Datenbankaktivitätsstreams mithilfe der Konsole oder der CLI konfigurieren. In der Regel konfigurieren Sie Datenbankaktivitätsstreams wie folgt:

1. (Optional) Erstellen Sie mit dem `CREATE DATABASE AUDIT SPECIFICATION`-Befehl eine Datenbank-Audit-Spezifikation und verknüpfen Sie sie mit dem `RDS_DAS_AUDIT`-Server-Audit. 

1. (Optional) Ändern Sie die Server-Audit-Spezifikation mit dem `ALTER SERVER AUDIT SPECIFICATION`-Befehl und definieren Sie die Richtlinien. 

1. Aktivieren Sie die Datenbank- und Server-Auditrichtlinien. Beispiel:

   `ALTER DATABASE AUDIT SPECIFICATION [<Your database specification>] WITH (STATE=ON)`

   `ALTER SERVER AUDIT SPECIFICATION [RDS_DAS_SERVER_AUDIT_SPEC] WITH (STATE=ON)`

1. Datenbankaktivitätsstreams konfigurieren.

   Nur Aktivitäten, die den Audit-Richtlinien des Servers und der Datenbank entsprechen, werden erfasst und an den Amazon Kinesis Data Stream gesendet. Wenn Datenbankaktivitätsstreams aktiviert und die Richtlinien gesperrt sind, kann ein Datenbankadministrator die Audit-Richtlinie weder ändern noch Audit-Protokolle entfernen. 
**Wichtig**  
Wenn die Datenbank-Audit-Spezifikation für eine bestimmte Datenbank aktiviert ist und sich die Richtlinie in einem gesperrten Zustand befindet, kann die Datenbank nicht gelöscht werden.

Weitere Informationen zum SQL-Server-Auditing finden Sie unter [SQL-Server-Audit-Komponenten](https://learn.microsoft.com/en-us/sql/relational-databases/security/auditing/sql-server-audit-database-engine?view=sql-server-ver16) in der *Microsoft-SQL-Server-Dokumentation*.



#### Nicht-native Prüfungsfelder für Oracle Database und SQL Server
<a name="DBActivityStreams.Overview.unified-auditing.non-native"></a>

Wenn Sie einen Datenbankaktivitätsstream starten, generiert jedes Datenbankereignis ein entsprechendes Aktivitätsstream-Ereignis. Beispielsweise kann ein Datenbankbenutzer `SELECT` und `INSERT`-Anweisungen ausführen. Diese Ereignisse werden von der Datenbank überprüft und an einen Amazon Kinesis Data Stream gesendet.

Die Ereignisse werden im Stream als JSON-Objekte dargestellt. Ein JSON-Objekt enthält `DatabaseActivityMonitoringRecord` mit einem `databaseActivityEventList`-Array. Vordefinierte Felder im Array sind etwa `class`, `clientApplication` und `command`.

Standardmäßig enthält ein Aktivitätsstream keine systemeigenen Audit-Felder. Sie können Amazon RDS für Oracle und SQL Server so konfigurieren, dass es diese zusätzlichen Felder in das `engineNativeAuditFields`-JSON-Objekt einschließt.

In Oracle Database sind die meisten Ereignisse im einheitlichen Audit-Trail Feldern im RDS-Datenaktivitätsstream zugeordnet. Beispielsweise wird das `UNIFIED_AUDIT_TRAIL.SQL_TEXT`-Feld bei einheitlichem Audit dem `commandText`-Feld in einem Datenbankaktivitätsstream zugeordnet. Audit-Felder der Oracle-Datenbank wie `OS_USERNAME` werden jedoch nicht vordefinierten Feldern in einem Datenbankaktivitätsstream zugeordnet.

In SQL Server werden die meisten Felder des Ereignisses, die von der Datenbank aufgezeichnet werden, SQLAudit den Feldern im Aktivitätsstream der RDS-Datenbank zugeordnet. Beispielsweise ist das `code`-Feld von `sys.fn_get_audit_file` in den Audits dem `commandText`-Feld in einem Datenbankaktivitätsstream zugeordnet. SQL-Server-Datenbank-Audit-Felder wie `permission_bitmask` werden jedoch nicht vordefinierten Feldern in einem Datenbankaktivitätsstream zugeordnet.

Weitere Informationen zu databaseActivityEvent List finden Sie unter[JSON-Array databaseActivityEventList für Datenbankaktivitäts-Streams](DBActivityStreams.AuditLog.databaseActivityEventList.md).

#### Überschreiben von DB-Parametergruppen
<a name="DBActivityStreams.Overview.unified-auditing.parameter-group"></a>

In der Regel aktivieren Sie das einheitliche Auditing in RDS für Oracle, indem Sie eine Parametergruppe anhängen. Datenbankaktivitätsstreams erfordern jedoch eine zusätzliche Konfiguration. Um Ihren Kundenkomfort zu verbessern, führt Amazon RDS folgende Schritte aus:
+ Wenn Sie einen Aktivitätsstream aktivieren, ignoriert RDS für Oracle die Auditing-Parameter in der Parametergruppe.
+ Wenn Sie einen Aktivitätsstream deaktivieren, ignoriert RDS für Oracle die Auditing-Parameter nicht mehr.

Der Datenbankaktivitätsstream für SQL Server ist unabhängig von allen Parametern, die Sie in der SQL-Audit-Option festgelegt haben.

### Asynchroner Modus für Datenbank-Aktivitätsstreams
<a name="DBActivityStreams.Overview.sync-mode"></a>

Aktivitätsstreams in Amazon RDS sind immer asynchron. Wenn eine Datenbanksitzung ein Aktivitätsstream-Ereignis generiert, kehrt die Sitzung sofort zu normalen Aktivitäten zurück. Im Hintergrund verwandelt Amazon RDS den Aktivitätsstream in einen dauerhaften Datensatz.

Wenn bei der Hintergrundaufgabe ein Fehler auftritt, generiert Amazon RDS ein Ereignis. Dieses Ereignis gibt Anfang und Ende der Zeitfenster an, in denen möglicherweise Datensätze des Aktivitäts-Stream-Ereignisses verloren gegangen sind. Der asynchrone Modus beschleunigt die Datenbankleistung, verschlechtert jedoch die Genauigkeit des Aktivitätsstreams.

### Anforderungen und Einschränkungen für Datenbankaktivitätsstreams
<a name="DBActivityStreams.Overview.requirements"></a>

In RDS gelten für Datenbankaktivitätsstreams die folgenden Anforderungen und Einschränkungen:
+ Amazon Kinesis ist für Datenaktivitätsstreams erforderlich.
+ AWS Key Management Service (AWS KMS) ist für Datenbank-Aktivitätsstreams erforderlich, da sie immer verschlüsselt sind.
+ Das Anwenden zusätzlicher Verschlüsselung auf Ihren Amazon Kinesis Kinesis-Datenstrom ist nicht mit Datenbankaktivitätsströmen kompatibel, die bereits mit Ihrem AWS KMS Schlüssel verschlüsselt sind.
+ Sie erstellen und verwalten Audit-Richtlinien selbst. Im Gegensatz zu Amazon Aurora erfasst RDS für Oracle standardmäßig keine Datenbankaktivitäten.
+ Sie erstellen und verwalten Audit-Richtlinie und -Spezifikationenn selbst. Im Gegensatz zu Amazon Aurora erfasst Amazon RDS standardmäßig keine Datenbankaktivitäten.
+ Starten Sie in einer Multi-AZ-Bereitstellung den Datenbankaktivitätsstream nur auf der primären DB-Instance. Der Aktivitätsstream überwacht sowohl die primäre als auch die Standby-DB-Instances automatisch. Bei einem Failover sind keine weiteren Schritte erforderlich.
+ Durch das Umbenennen einer DB-Instance wird kein neuer Kinesis-Stream erstellt.
+ CDBs werden für RDS for Oracle nicht unterstützt.
+ Read Replicas werden nicht unterstützt.

### Verfügbarkeit von Regionen und Versionen
<a name="DBActivityStreams.RegionVersionAvailability"></a>

Die Verfügbarkeit von Funktionen und der Support variieren zwischen bestimmten Versionen der einzelnen Datenbank-Engines und in allen AWS-Regionen. Weitere Informationen zur Verfügbarkeit von Versionen und Regionen mit Datenbankaktivitätsstreams finden Sie unter [Unterstützte Regionen und DB-Engines für Datenbankaktivitäts-Streams in Amazon RDS](Concepts.RDS_Fea_Regions_DB-eng.Feature.DBActivityStreams.md).

### Unterstützte DB-Instance-Klassen für Datenbankaktivitätsstreams
<a name="DBActivityStreams.Overview.requirements.classes"></a>

Für RDS für Oracle können Sie Datenbankaktivitätsstreams mit den folgenden DB-Instance-Klassen verwenden:
+ db.m4.\$1large
+ db.m5.\$1large
+ db.m5d.\$1large
+ db.m6i.\$1large
+ db.r4.\$1large
+ db.r5.\$1large
+ db.r5.\$1large.tpc\$1.mem\$1x
+ db.r5b.\$1large
+ db.r5b.\$1large.tpc\$1.mem\$1x
+ db.r5d.\$1large
+ db.r6i.\$1large
+ db.r6i.\$1large.tpc\$1.mem\$1x
+ db.x2idn.\$1large
+ db.x2iedn.\$1large
+ db.x2iezn.\$1large
+ db.z1d.\$1large

Für RDS für SQL Server können Sie Datenbankaktivitätsstreams mit den folgenden DB-Instance-Klassen verwenden:
+ db.m4.\$1large
+ db.m5.\$1large
+ db.m5d.\$1large
+ db.m6i.\$1large
+ db.r4.\$1large
+ db.r5.\$1large
+ db.r5b.\$1large
+ db.r5d.\$1large
+ db.r6i.\$1large
+ db.x1e.\$1large
+ db.x2iedn.\$1large
+ db.z1d.\$1large

Weitere Informationen zu Instance-Klassentypen finden Sie unter [](Concepts.DBInstanceClass.md).

# Konfigurieren von einheitlicher Prüfung für Oracle-Datenbank
<a name="DBActivityStreams.configuring-auditing"></a>

Wenn Sie die einheitliche Prüfung für die Verwendung mit Datenbankaktivitäts-Streams konfigurieren, sind die folgenden Situationen möglich:
+ Die einheitliche Prüfung ist nicht für Ihre Oracle-Datenbank konfiguriert.

  Erstellen Sie in diesem Fall neue Richtlinien mit dem `CREATE AUDIT POLICY`-Befehl und aktivieren Sie sie dann mit dem Befehl `AUDIT POLICY`. Im folgenden Beispiel wird eine Richtlinie erstellt und aktiviert, um Benutzer mit bestimmten Berechtigungen und Rollen zu überwachen.

  ```
  CREATE AUDIT POLICY table_pol
  PRIVILEGES CREATE ANY TABLE, DROP ANY TABLE
  ROLES emp_admin, sales_admin;
  
  AUDIT POLICY table_pol;
  ```

  Vollständige Anweisungen finden Sie unter [Konfigurieren von Prüfungsrichtlinien](https://docs.oracle.com/en/database/oracle/oracle-database/19/dbseg/configuring-audit-policies.html#GUID-22CDB667-5AA2-4051-A262-FBD0236763CB) in der Oracle-Datenbank-Dokumentation.
+ Die einheitliche Prüfung ist für Ihre Oracle-Datenbank konfiguriert.

  Wenn Sie einen Datenbankaktivitätsstream aktivieren, löscht RDS für Oracle automatisch vorhandene Audit-Daten. Es entzieht auch Prüfungs-Trail-Berechtigungen. RDS for Oracle kann die folgenden Aktionen nicht mehr ausführen:
  + Einheitliche Prüfungs-Trail-Datensätze löschen.
  + Hinzufügen, Löschen oder Ändern der einheitlichen Prüfungsrichtlinie.
  + Aktualisieren des letzten archivierten Zeitstempels.
**Wichtig**  
Es wird dringend empfohlen, Ihre Audit-Daten zu sichern, bevor Sie einen Datenbankaktivitätsstream aktivieren.

  Eine Beschreibung der `UNIFIED_AUDIT_TRAIL`-Ansicht, siehe [UNIFIED\$1AUDIT\$1TRAIL](https://docs.oracle.com/database/121/REFRN/GUID-B7CE1C02-2FD4-47D6-80AA-CF74A60CDD1D.htm#REFRN29162). Wenn Sie ein Konto bei Oracle Support haben, finden Sie weitere Informationen unter [So löschen Sie den EINHEITLICHEN PRÜFUNGS-TRAIL](https://support.oracle.com/knowledge/Oracle%20Database%20Products/1582627_1.html).

# Konfigurieren der Auditing-Richtlinie für Amazon RDS für Microsoft SQL Server
<a name="DBActivityStreams.configuring-auditing-SQLServer"></a>

Eine SQL-Server-Datenbank-Instance verfügt über das Server-Audit `RDS_DAS_AUDIT`, das von Amazon RDS verwaltet wird. Sie können die Richtlinien zur Aufzeichnung von Serverereignissen in der Server-Audit-Spezifikation `RDS_DAS_SERVER_AUDIT_SPEC` definieren. Sie können eine Datenbank-Audit-Spezifikation erstellen, z. B. `RDS_DAS_DB_<name>`, und die Richtlinien für die Aufzeichnung von Datenbankereignissen definieren. Eine Liste der Audit-Aktionsgruppen auf Server- und Datenbankebene finden Sie in der *Microsoft SQL Server-Dokumentation* unter [Aktionsgruppen und Aktionen für SQL Server-Audits](https://learn.microsoft.com/en-us/sql/relational-databases/security/auditing/sql-server-audit-action-groups-and-actions).

Die Standard-Serverrichtlinie überwacht nur fehlgeschlagene Anmeldungen und Änderungen an Datenbank- oder Server-Audit-Spezifikationen für Datenbankaktivitätsstreams.

Zu den Einschränkungen für das Audit und die Audit-Spezifikationen gehören:
+ Sie können die Server- oder Datenbank-Audit-Spezifikationen nicht ändern, wenn sich der Datenbankaktivitätsstream in einem *gesperrten* Zustand befindet.
+ Sie können die Server-Audit-Spezifikation `RDS_DAS_AUDIT` nicht ändern.
+ Sie können das SQL-Server-Audit `RDS_DAS_CHANGES` oder die zugehörige Server-Audit-Spezifikation `RDS_DAS_CHANGES_AUDIT_SPEC` nicht ändern.
+ Wenn Sie eine Datenbank-Audit-Spezifikation erstellen, müssen Sie das Format `RDS_DAS_DB_<name>` verwenden, beispielsweise `RDS_DAS_DB_databaseActions`.

**Wichtig**  
Für kleinere Instance-Klassen empfehlen wir, nicht alle, sondern nur die erforderlichen Daten zu prüfen. Dies trägt dazu bei, die Leistungsauswirkungen von Datenbankaktivitätsstreams auf diese Instance-Klassen zu reduzieren.

Der folgende Beispielcode ändert die Server-Audit-Spezifikation `RDS_DAS_SERVER_AUDIT_SPEC` und überprüft alle Abmelde- und erfolgreichen Anmeldeaktionen:

```
ALTER SERVER AUDIT SPECIFICATION [RDS_DAS_SERVER_AUDIT_SPEC]
      WITH (STATE=OFF);
ALTER SERVER AUDIT SPECIFICATION [RDS_DAS_SERVER_AUDIT_SPEC]
      ADD (LOGOUT_GROUP),
      ADD (SUCCESSFUL_LOGIN_GROUP)
      WITH (STATE = ON );
```

Der folgende Beispielcode erstellt eine Datenbank-Audit-Spezifikation `RDS_DAS_DB_database_spec` und hängt sie an das Server-Audit `RDS_DAS_AUDIT` an:

```
USE testDB;
CREATE DATABASE AUDIT SPECIFICATION [RDS_DAS_DB_database_spec]
     FOR SERVER AUDIT [RDS_DAS_AUDIT]
     ADD ( INSERT, UPDATE, DELETE  
          ON testTable BY testUser )  
     WITH (STATE = ON);
```

Vergewissern Sie sich nach der Konfiguration der Audit-Spezifikationen, dass die Spezifikationen `RDS_DAS_SERVER_AUDIT_SPEC` und `RDS_DAS_DB_<name>` auf den Status `ON` gesetzt sind. Jetzt können sie die Audit-Daten an Ihren Datenbankaktivitätsstream senden.

# Starten eines Datenbankaktivitäts-Streams
<a name="DBActivityStreams.Enabling"></a>

Wenn Sie einen Aktivitätsstream für die DB-Instance starten, generiert jedes Datenbankaktivitätsereignis, das Sie in der Audit-Richtlinie konfiguriert haben, ein Ereignis im Aktivitätsstream. Zugriffsereignisse werden von SQL-Befehlen wie `CONNECT` und `SELECT` generiert. Änderungsereignisse werden von SQL-Befehlen wie `CREATE` und `INSERT` generiert.

**Wichtig**  
Aktivieren eines Aktivitäts-Streams für eine Oracle-DB-Instance löscht vorhandene Prüfungsdaten. Es entzieht auch Prüfungs-Trail-Berechtigungen. Wenn der Stream aktiviert ist, kann RDS für Oracle Folgendes nicht mehr tun:  
Einheitliche Prüfungs-Trail-Datensätze löschen.
Hinzufügen, Löschen oder Ändern der einheitlichen Prüfungsrichtlinie.
Aktualisieren des letzten archivierten Zeitstempels.

------
#### [ Console ]

**Starten eines Datenbankaktivitäts-Streams**

1. Öffnen Sie die Amazon-RDS-Konsole unter [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Wählen Sie im Navigationsbereich **Databases (Datenbanken)** aus.

1. Wählen Sie die Amazon-RDS-Instance, für den/die Sie einen Aktivitätsstream starten möchten. Starten Sie in einer Multi-AZ-Bereitstellung den Stream nur auf der primären Instance. Der Aktivitätsstream überwacht sowohl die primäre als auch die Standby-Instances.

1. Wählen Sie für **Actions (Aktionen)** die Option **Start activity stream (Aktivitäts-Stream starten)** aus. 

   Das **Fenster Start database activity stream: ***name* erscheint, wobei *name* Ihr RDS-Instance ist.

1. Geben Sie die folgenden Einstellungen ein:
   + Für **AWS KMS key** wählen Sie einen Schlüssel aus der Liste der AWS KMS keys.

     Amazon RDS verwendet den KMS-Schlüssel zur Verschlüsselung des Schlüssels, der wiederum die Datenbankaktivitäten verschlüsselt. Wählen Sie einen anderen KMS-Schlüssel als den Standardschlüssel. Weitere Informationen zu Verschlüsselungsschlüsseln und AWS KMS finden Sie unter [Was ist AWS Key Management Service?](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) im *AWS Key Management Service-Entwicklerhandbuch*.
   + Wählen Sie für **Datenbankaktivitätsereignisse** die Option **Engine-native Audit-Felder aktivieren**, um engine-spezifische Audit-Felder einzuschließen.
   + Wählen Sie **Sofort** aus.

     Wenn Sie **Sofort** auswählen, wird die RDS-Instance sofort neu gestartet. Wenn Sie **Während des nächsten Wartungsfensters** auswählen, wird die RDS-Instance nicht sofort neu gestartet. In diesem Fall wird der Datenbankaktivitäts-Stream erst im nächsten Wartungsfenster gestartet.

1. Wählen Sie **Start database activity stream** (Datenbank-Aktivitätsstream starten) aus.

   Der Status für den die Datenbank zeigt an, dass der Aktivitätsstream gestartet wird.
**Anmerkung**  
Wenn Sie den Fehler `You can't start a database activity stream in this configuration` erhalten, überprüfen Sie [Unterstützte DB-Instance-Klassen für Datenbankaktivitätsstreams](DBActivityStreams.md#DBActivityStreams.Overview.requirements.classes), um festzustellen, ob Ihre RDS-Instance eine unterstützte Instance-Klasse verwendet.

------
#### [ AWS CLI ]

Um Datenbankaktivitätsstreams für eine DB–Instance zu starten, konfigurieren Sie die Datenbank mit dem AWS CLI-Befehl [start-activity-stream](https://docs.aws.amazon.com/cli/latest/reference/rds/start-activity-stream.html).
+ `--resource-arn arn` – Gibt den Amazon-Ressourcennamen (ARN) der DB-Instance an.
+ `--kms-key-id key` – Gibt die KMS-Schlüssel-ID für die Verschlüsselung von Nachrichten im Datenbankaktivitäts-Stream an. Der AWS KMS-Schlüsselbezeichner ist der Schlüssel-ARN, die Schlüssel-ID, der Alias-ARN oder der Alias-Name für den AWS KMS key.
+ `--engine-native-audit-fields-included` – Schließt Engine-spezifische einheitliche Audit-Felder in den Datenstrom ein. Um diese Felder auszuschließen, geben Sie `--no-engine-native-audit-fields-included` (Standard) an.

Das folgende Beispiel startet einen Datenbankaktivitätsstream für eine DB-Instance im asynchronen Modus.

Für Linux, macOS oder Unix:

```
aws rds start-activity-stream \
    --mode async \
    --kms-key-id my-kms-key-arn \
    --resource-arn my-instance-arn \
    --engine-native-audit-fields-included \
    --apply-immediately
```

Für Windows:

```
aws rds start-activity-stream ^
    --mode async ^
    --kms-key-id my-kms-key-arn ^
    --resource-arn my-instance-arn ^
    --engine-native-audit-fields-included ^
    --apply-immediately
```

------
#### [ Amazon RDS API ]

Um Datenbankaktivitäts-Streams für eine DB-Instance zu starten, konfigurieren Sie die Instance mit der Operation [StartActivityStream](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_StartActivityStream.html).

Rufen Sie die Aktion mit den folgenden Parametern auf:
+ `Region`
+ `KmsKeyId`
+ `ResourceArn`
+ `Mode`
+ `EngineNativeAuditFieldsIncluded`

------

# Ändern eines Datenbankaktivitäts-Streams für Amazon RDS
<a name="DBActivityStreams.Modifying"></a>

Möglicherweise möchten Sie Ihre Amazon-RDS-Audit-Richtlinie anpassen, wenn Ihr Aktivitätsstream gestartet wird. Wenn Sie keine Zeit und Daten verlieren möchten, indem Sie Ihren Aktivitätsstream stoppen, können Sie den *Status der Prüfungsrichtlinie* auf eine der folgenden Einstellungen festlegen:

**Gesperrt (Standard)**  
Die Prüfungsrichtlinien in Ihrer Datenbank sind schreibgeschützt.

**Entsperrt**  
Die Prüfungsrichtlinien in Ihrer Datenbank erlauben Lese- und Schreibzugriff.

Die grundlegenden Schritte sind wie folgt:

1. Ändern Sie den Status der Prüfungsrichtlinie auf „Entsperrt“.

1. Passen Sie Ihre Prüfungsrichtlinie an.

1. Ändern Sie den Status der Prüfungsrichtlinie auf „Gesperrt“.

## Konsole
<a name="DBActivityStreams.Modifying-collapsible-section-E1"></a>

**So ändern Sie den Status der Prüfungsrichtlinie Ihres Aktivitätsstreams**

1. Öffnen Sie die Amazon-RDS-Konsole unter [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Wählen Sie im Navigationsbereich **Datenbanken** aus.

1. Wählen Sie für **Actions** (Aktionen) die Option **Modify database activity stream** (Datenbankaktivitäts-Stream ändern) aus. 

   Das Fenster **Modify database activity stream: *name*** (Datenbankaktivitäts-Stream starten: Name) wird angezeigt, wobei *name* für Ihre RDS-Instance steht.

1. Wählen Sie eine der folgenden Optionen:  
**Gesperrt**  
Wenn Sie Ihre Prüfungsrichtlinie sperren, wird sie schreibgeschützt. Sie können Ihre Überwachungsrichtlinie nur bearbeiten, wenn Sie die Richtlinie entsperren oder den Aktivitätsstream stoppen.  
**Entsperrt**  
Wenn Sie Ihre Prüfungsrichtlinie entsperren, erlaubt sie Lese-/Schreibzugriff. Sie können Ihre Prüfungsrichtlinie bearbeiten, während der Aktivitätsstream gestartet wird.

1. Wählen Sie **DB-Aktivitätsstream ändern** aus.

   Der Status für den bzw. die Amazon RDS–Datenbank lautet **Konfigurieren des Aktivitätsstreams**.

1. (Optional) Wählen Sie den DB-Instance-Link aus. Wechseln Sie zur Registerkarte **Konfiguration**.

   Das Feld **Audit policy status** (Status der Prüfungsrichtlinie) zeigt einen der folgenden Werte an:
   + **Gesperrt**
   + **Entsperrt**
   + **Sperrrichtlinie**
   + **Entsperrrichtlinie**

## AWS CLI
<a name="DBActivityStreams.Modifying-collapsible-section-E2"></a>

Wenn Sie den Status des Aktivitätsstreams für die Datenbank-Instance ändern möchten, verwenden Sie den AWS CLI-Befehl [modify-activity-stream](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-activity-stream.html).


****  

| Option | Erforderlich? | Beschreibung | 
| --- | --- | --- | 
|  `--resource-arn my-instance-ARN`  |  Ja  |  Der Amazon-Ressourcenname (ARN) Ihrer RDS-Datenbank-Instance.  | 
|  `--audit-policy-state`  |  Nein  |  Der neue Status der Prüfungsrichtlinie für den Datenbankaktivitäts-Stream auf Ihrer Instance: `locked` oder `unlocked`.  | 

Im folgenden Beispiel wird die Prüfungsrichtlinie für den Aktivitätsstream entsperrt, der mit *my-instance-ARN* gestartet wurde.

Für Linux, macOS oder Unix:

```
aws rds modify-activity-stream \
    --resource-arn my-instance-ARN \
    --audit-policy-state unlocked
```

Für Windows:

```
aws rds modify-activity-stream ^
    --resource-arn my-instance-ARN ^
    --audit-policy-state unlocked
```

Das folgende Beispiel beschreibt die Instance *my-instance*. Die teilweise Beispielausgabe zeigt, dass die Prüfungsrichtlinie entsperrt ist.

```
aws rds describe-db-instances --db-instance-identifier my-instance

{
    "DBInstances": [
        {
            ...
            "Engine": "oracle-ee",
            ...
            "ActivityStreamStatus": "started",
            "ActivityStreamKmsKeyId": "ab12345e-1111-2bc3-12a3-ab1cd12345e",
            "ActivityStreamKinesisStreamName": "aws-rds-das-db-AB1CDEFG23GHIJK4LMNOPQRST",
            "ActivityStreamMode": "async",
            "ActivityStreamEngineNativeAuditFieldsIncluded": true, 
            "ActivityStreamPolicyStatus": "unlocked",
            ...
        }
    ]
}
```

## RDS-API
<a name="DBActivityStreams.Modifying-collapsible-section-E3"></a>

Wenn Sie den Richtlinienstatus Ihres Datenbankaktivitäts-Streams ändern möchten, verwenden Sie die Operation [ModifyActivityStream](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyActivityStream.html).

Rufen Sie die Aktion mit den folgenden Parametern auf:
+ `AuditPolicyState`
+ `ResourceArn`

# Abrufen des Status eines Datenbank-Aktivitätsstreams
<a name="DBActivityStreams.Status"></a>

Sie können den Status eines Aktivitätsstreams  für Ihre Amazon RDS-Datenbank-Instance über die Konsole oder AWS CLI abrufen.

## Konsole
<a name="DBActivityStreams.Status-collapsible-section-S1"></a>

**Abrufen des Status eines Datenbank-Aktivitäts-Streams**

1. Öffnen Sie die Amazon-RDS-Konsole unter [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Wählen Sie im Navigationsbereich **Datenbanken** und dann den Link der DB-Instance aus.

1. Wählen Sie die Registerkarte **Konfiguration** aus und prüfen Sie die Statusangabe für **Datenbank-Aktivitätsstream**.

## AWS CLI
<a name="DBActivityStreams.Status-collapsible-section-S2"></a>

Sie können die Aktivitätsstream-Konfiguration für eine Datenbank-Instance als Antwort auf eine CLI-Anforderung [describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) abrufen.

Das folgende Beispiel beschreibt *my-instance*.

```
aws rds --region my-region describe-db-instances --db-instance-identifier my-db
```

Das folgende Beispiel zeigt eine JSON-Antwort. Die folgenden Felder werden angezeigt:
+ `ActivityStreamKinesisStreamName`
+ `ActivityStreamKmsKeyId`
+ `ActivityStreamStatus`
+ `ActivityStreamMode`
+ `ActivityStreamPolicyStatus`



```
{
    "DBInstances": [
        {
            ...
            "Engine": "oracle-ee",
            ...
            "ActivityStreamStatus": "starting",
            "ActivityStreamKmsKeyId": "ab12345e-1111-2bc3-12a3-ab1cd12345e",
            "ActivityStreamKinesisStreamName": "aws-rds-das-db-AB1CDEFG23GHIJK4LMNOPQRST",
            "ActivityStreamMode": "async",
            "ActivityStreamEngineNativeAuditFieldsIncluded": true, 
            "ActivityStreamPolicyStatus": locked",
            ...
        }
    ]
}
```

## RDS-API
<a name="DBActivityStreams.Status-collapsible-section-S3"></a>

Sie können die Aktivitätsstream-Konfiguration für eine Datenbank als Antwort auf einen [DescribeDBInstances](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBInstances.html)-Vorgang abrufen.

# Stoppen eines Datenbankaktivitäts-Streams
<a name="DBActivityStreams.Disabling"></a>

Sie können den Status eines Aktivitäts-Streams über die Konsole oder AWS CLI abrufen.

Wenn Sie Ihre Amazon-RDS-Datenbank-Instance löschen, wird der Aktivitätsstream gestoppt und der zugrunde liegende Amazon-Kinesis-Stream wird automatisch gelöscht.

## Konsole
<a name="DBActivityStreams.Disabling-collapsible-section-D1"></a>

**So deaktivieren Sie einen Aktivitäts-Stream:**

1. Öffnen Sie die Amazon-RDS-Konsole unter [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Wählen Sie im Navigationsbereich **Databases (Datenbanken)** aus.

1. Wählen Sie die Datenbank aus, für das Sie den Datenbankaktivitäts-Stream stoppen möchten.

1. Wählen Sie für **Actions (Aktionen)** die Option **Stop activity stream (Aktivitäts-Stream stoppen)** aus. Das Fenster **Database Activity Stream (Datenbankaktivitäts-Stream)** wird aufgerufen.

   1. Wählen Sie **Sofort** aus.

      Wenn Sie **Sofort** auswählen, wird die RDS-Instance sofort neu gestartet. Wenn Sie **Während des nächsten Wartungsfensters** auswählen, wird die RDS-Instance nicht sofort neu gestartet. In diesem Fall wird der Datenbankaktivitäts-Stream erst im nächsten Wartungsfenster gestoppt.

   1. Klicken Sie auf **Weiter**.

## AWS CLI
<a name="DBActivityStreams.Disabling-collapsible-section-D2"></a>

Zum Stoppen von Datenbankaktivitäts-Streams für eine Datenbank konfigurieren Sie das die DB-Instance mit dem AWS CLI-Befehl [stop-activity-stream](https://docs.aws.amazon.com/cli/latest/reference/rds/stop-activity-stream.html). Bestimmen Sie die AWS-Region für die DB-Instance mit dem Parameter `--region`. Der Parameter `--apply-immediately` ist optional.

Für Linux, macOS oder Unix:

```
aws rds --region MY_REGION \
    stop-activity-stream \
    --resource-arn MY_DB_ARN \
    --apply-immediately
```

Für Windows:

```
aws rds --region MY_REGION ^
    stop-activity-stream ^
    --resource-arn MY_DB_ARN ^
    --apply-immediately
```

## RDS-API
<a name="DBActivityStreams.Disabling-collapsible-section-D3"></a>

Um Datenbankaktivitäts-Streams für die Datenbank zu stoppen, konfigurieren Sie die DB-Instance mit der Operation [StopActivityStream](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_StopActivityStream.html). Bestimmen Sie die AWS-Region für die DB-Instance mit dem Parameter `Region`. Der Parameter `ApplyImmediately` ist optional.

# Überwachen von Datenbankaktivitäts-Streams
<a name="DBActivityStreams.Monitoring"></a>

Datenbankaktivitäts-Streams überwachen und melden Aktivitäten. Der Aktivitäts-Stream wird erfasst und an Amazon Kinesis übertragen. Von Kinesis aus können Sie den Aktivitäts-Stream überwachen, oder andere Dienste und Anwendungen können den Aktivitäts-Stream zur weiteren Analyse nutzen. Sie können den zugrunde liegenden Namen des Kinesis-Streams mit dem AWS CLI-Befehl `describe-db-instances` oder der RDS-API-Operation `DescribeDBInstances` finden.

Amazon RDS verwaltet den Kinesis Stream wie folgt:
+ Amazon RDS erzeugt den Kinesis Stream automatisch mit einem Aufbewahrungszeitraum von 24 Stunden. 
+  Amazon RDS skaliert den Kinesis-Stream bei Bedarf. 
+  Wenn Sie den Datenbankaktivitäts-Stream stoppen oder die DB-Instance löschen, löscht Amazon RDS den Kinesis-Stream. 

Die folgenden Kategorien von Aktivitäten werden überwacht und in das Prüfprotokoll des Aktivitäts-Streams aufgenommen:
+ **SQL-Befehle** – Alle SQL-Befehle werden geprüft, ebenso vorbereitete Anweisungen, integrierte Funktionen und Funktionen in PL/SQL. Aufrufe von gespeicherten Prozeduren werden überprüft. Alle SQL-Anweisungen, die in gespeicherten Prozeduren oder Funktionen ausgegeben werden, werden ebenfalls überprüft.
+ **Sonstige Datenbankinformationen** – Die überwachte Aktivität umfasst die vollständige SQL-Anweisung, die Zeilenzahl der betroffenen Zeilen aus DML-Befehlen, Objekte, auf die zugegriffen wurde, und den eindeutigen Datenbanknamen.  Datenbankaktivitäts-Streams überwachen auch die Bindevariablen und die Parameter der gespeicherten Prozedur. 
**Wichtig**  
Der vollständige SQL-Text jeder Anweisung ist im Prüfprotokoll des Aktivitäts-Streams sichtbar, inklusive aller sensiblen Daten. Datenbankbenutzerkennwörter werden jedoch redigiert, wenn Oracle sie wie in der folgenden SQL-Anweisung aus dem Kontext ermitteln kann.   

  ```
  ALTER ROLE role-name WITH password
  ```
+ **Verbindungsinformationen** – Die überwachte Aktivität umfasst Sitzungs- und Netzwerkinformationen, die Server-Prozess-ID und Beendigungscodes.

Wenn ein Aktivitätsstream während der Überwachung Ihrer DB-Instance fehlschlägt, werden Sie über RDS-Ereignisse benachrichtigt.

In den folgenden Abschnitten können Sie auf Datenbankaktivitäts-Streams zugreifen, diese prüfen und verarbeiten.

**Topics**
+ [Zugriff auf einen Aktivitäts-Stream von Amazon Kinesis aus](DBActivityStreams.KinesisAccess.md)
+ [Prüfungsprotokoll-Inhalte und Beispiele für Datenbankaktivitäts-Streams](DBActivityStreams.AuditLog.md)
+ [JSON-Array databaseActivityEventList für Datenbankaktivitäts-Streams](DBActivityStreams.AuditLog.databaseActivityEventList.md)
+ [Verarbeitung eines Datenbank-Aktivitäts-Streams mit dem AWS SDK](DBActivityStreams.CodeExample.md)

# Zugriff auf einen Aktivitäts-Stream von Amazon Kinesis aus
<a name="DBActivityStreams.KinesisAccess"></a>

Wenn Sie einen Aktivitäts-Stream für eine Datenbank aktivieren, wird ein Kinesis-Stream für Sie erstellt. Von Kinesis aus können Sie die Datenbankaktivität in Echtzeit überwachen. Zur weiteren Analyse der Datenbankaktivität können Sie Ihren Kinesis-Stream mit Consumer-Anwendungen verbinden. Sie können den Stream auch mit Compliance-Management-Anwendungen wie Security Guardium von IBM oder SecureSphere Database Audit and Protection von Imperva verbinden.

Sie können entweder über die RDS- oder Kinesis-Konsole auf Ihren Kinesis-Stream zugreifen.

**So greifen Sie über die RDS-Konsole auf einen Aktivitätsstream zu**

1. Öffnen Sie die Amazon-RDS-Konsole unter [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Wählen Sie im Navigationsbereich **Datenbanken** aus.

1. Wählen Sie den/die Amazon-RDS-Datenbank-Instance aus, auf der Sie einen Aktivitätsstream gestartet haben.

1. Wählen Sie **Konfiguration**.

1. Wählen Sie unter **Database activity stream** (Datenbank-Aktivitätsstream) den Link unter **Kinesis stream** (Kinesis-Stream) aus.

1. Wählen Sie in der Kinesis-Konsole **Monitoring** (Überwachung) aus, um mit der Überwachung der Datenbankaktivität zu beginnen.

**So greifen Sie über die Kinesis-Konsole auf einen Aktivitätsstream von Kinesis zu**

1. Öffnen Sie die Kinesis-Konsole unter.[https://console.aws.amazon.com/kinesis](https://console.aws.amazon.com/kinesis).

1. Wählen Sie Ihren Aktivitäts-Stream aus der Liste der Kinesis-Streams aus.

   Der Name eines Aktivitäts-Streams besteht aus dem Präfix `aws-rds-das-db-` gefolgt von der Ressourcen-ID der Datenbank. Im Folgenden wird ein Beispiel gezeigt. 

   ```
   aws-rds-das-db-NHVOV4PCLWHGF52NP
   ```

   Um die Amazon-RDS-Konsole zum Ermitteln der Ressourcen-ID für die Datenbank zu verwenden, wählen Sie Ihre DB-Instance aus der Liste der Datenbanken aus und wählen dann die Registerkarte **Konfiguration** aus.

   Um den vollständigen Kinesis-Stream-Namen für einen Aktivitäts-Stream mit AWS CLI zu finden, verwenden Sie eine [describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html)-CLI-Anfrage und notieren den Wert von `ActivityStreamKinesisStreamName` in der Antwort.

1. Wählen Sie **Monitoring (Überwachung)** aus, um mit der Überwachung der Datenbankaktivität zu beginnen.

Weitere Informationen zur Verwendung von Amazon Kinesis finden Sie unter [Was sind Amazon Kinesis Data Streams?](https://docs.aws.amazon.com/streams/latest/dev/introduction.html).

# Prüfungsprotokoll-Inhalte und Beispiele für Datenbankaktivitäts-Streams
<a name="DBActivityStreams.AuditLog"></a>

Überwachte Ereignisse werden im Datenbankaktivitäts-Stream als JSON-Zeichenfolgen dargestellt. Die Struktur besteht aus einem JSON-Objekt mit einem `DatabaseActivityMonitoringRecord`, der wiederum ein Array von Aktivitätsereignissen `databaseActivityEventList` enthält. 

**Anmerkung**  
Für Datenbankaktivitäts-Streams enthält das JSON-Array `paramList` keine Nullwerte aus Anwendungen im Ruhezustand.

**Topics**
+ [Prüfungsprotokollbeispiele für Aktivitäts-Streams](#DBActivityStreams.AuditLog.Examples)
+ [DatabaseActivityMonitoringRecords JSON-Objekt](#DBActivityStreams.AuditLog.DatabaseActivityMonitoringRecords)
+ [databaseActivityEvents JSON-Objekt](#DBActivityStreams.AuditLog.databaseActivityEvents)

## Prüfungsprotokollbeispiele für Aktivitäts-Streams
<a name="DBActivityStreams.AuditLog.Examples"></a>

Im Folgenden sehen Sie Beispiele für entschlüsselte JSON-Prüfprotokolle von Aktivitätsereignisdatensätzen.

**Example Aktivitätsereignisdatensatz - eine CONNECT-SQL-Anweisung**  
Im Folgenden sehen Sie einen Aktivitätsereignisdatensatz einer Anmeldung unter Verwendung einer `CONNECT`-SQL-Anweisung (`command`) durch einen JDBC-Thin-Client (`clientApplication`) für Ihre Oracle-DB.  

```
{
    "class": "Standard",
    "clientApplication": "JDBC Thin Client",
    "command": "LOGON",
    "commandText": null,
    "dbid": "0123456789",
    "databaseName": "ORCL",
    "dbProtocol": "oracle",
    "dbUserName": "TEST",
    "endTime": null,
    "errorMessage": null,
    "exitCode": 0,
    "logTime": "2021-01-15 00:15:36.233787",
    "netProtocol": "tcp",
    "objectName": null,
    "objectType": null,
    "paramList": [],
    "pid": 17904,
    "remoteHost": "123.456.789.012",
    "remotePort": "25440",
    "rowCount": null,
    "serverHost": "987.654.321.098",
    "serverType": "oracle",
    "serverVersion": "19.0.0.0.ru-2020-01.rur-2020-01.r1.EE.3",
    "serviceName": "oracle-ee",
    "sessionId": 987654321,
    "startTime": null,
    "statementId": 1,
    "substatementId": null,
    "transactionId": "0000000000000000",
    "engineNativeAuditFields": {
        "UNIFIED_AUDIT_POLICIES": "TEST_POL_EVERYTHING",
        "FGA_POLICY_NAME": null,
        "DV_OBJECT_STATUS": null,
        "SYSTEM_PRIVILEGE_USED": "CREATE SESSION",
        "OLS_LABEL_COMPONENT_TYPE": null,
        "XS_SESSIONID": null,
        "ADDITIONAL_INFO": null,
        "INSTANCE_ID": 1,
        "DBID": 123456789
        "DV_COMMENT": null,
        "RMAN_SESSION_STAMP": null,
        "NEW_NAME": null,
        "DV_ACTION_NAME": null,
        "OLS_PROGRAM_UNIT_NAME": null,
        "OLS_STRING_LABEL": null,
        "RMAN_SESSION_RECID": null,
        "OBJECT_PRIVILEGES": null,
        "OLS_OLD_VALUE": null,
        "XS_TARGET_PRINCIPAL_NAME": null,
        "XS_NS_ATTRIBUTE": null,
        "XS_NS_NAME": null,
        "DBLINK_INFO": null,
        "AUTHENTICATION_TYPE": "(TYPE\u003d(DATABASE));(CLIENT ADDRESS\u003d((ADDRESS\u003d(PROTOCOL\u003dtcp)(HOST\u003d205.251.233.183)(PORT\u003d25440))));",
        "OBJECT_EDITION": null,
        "OLS_PRIVILEGES_GRANTED": null,
        "EXCLUDED_USER": null,
        "DV_ACTION_OBJECT_NAME": null,
        "OLS_LABEL_COMPONENT_NAME": null,
        "EXCLUDED_SCHEMA": null,
        "DP_TEXT_PARAMETERS1": null,
        "XS_USER_NAME": null,
        "XS_ENABLED_ROLE": null,
        "XS_NS_ATTRIBUTE_NEW_VAL": null,
        "DIRECT_PATH_NUM_COLUMNS_LOADED": null,
        "AUDIT_OPTION": null,
        "DV_EXTENDED_ACTION_CODE": null,
        "XS_PACKAGE_NAME": null,
        "OLS_NEW_VALUE": null,
        "DV_RETURN_CODE": null,
        "XS_CALLBACK_EVENT_TYPE": null,
        "USERHOST": "a1b2c3d4e5f6.amazon.com",
        "GLOBAL_USERID": null,
        "CLIENT_IDENTIFIER": null,
        "RMAN_OPERATION": null,
        "TERMINAL": "unknown",
        "OS_USERNAME": "sumepate",
        "OLS_MAX_READ_LABEL": null,
        "XS_PROXY_USER_NAME": null,
        "XS_DATASEC_POLICY_NAME": null,
        "DV_FACTOR_CONTEXT": null,
        "OLS_MAX_WRITE_LABEL": null,
        "OLS_PARENT_GROUP_NAME": null,
        "EXCLUDED_OBJECT": null,
        "DV_RULE_SET_NAME": null,
        "EXTERNAL_USERID": null,
        "EXECUTION_ID": null,
        "ROLE": null,
        "PROXY_SESSIONID": 0,
        "DP_BOOLEAN_PARAMETERS1": null,
        "OLS_POLICY_NAME": null,
        "OLS_GRANTEE": null,
        "OLS_MIN_WRITE_LABEL": null,
        "APPLICATION_CONTEXTS": null,
        "XS_SCHEMA_NAME": null,
        "DV_GRANTEE": null,
        "XS_COOKIE": null,
        "DBPROXY_USERNAME": null,
        "DV_ACTION_CODE": null,
        "OLS_PRIVILEGES_USED": null,
        "RMAN_DEVICE_TYPE": null,
        "XS_NS_ATTRIBUTE_OLD_VAL": null,
        "TARGET_USER": null,
        "XS_ENTITY_TYPE": null,
        "ENTRY_ID": 1,
        "XS_PROCEDURE_NAME": null,
        "XS_INACTIVITY_TIMEOUT": null,
        "RMAN_OBJECT_TYPE": null,
        "SYSTEM_PRIVILEGE": null,
        "NEW_SCHEMA": null,
        "SCN": 5124715
    }
}
```
Der folgende Aktivitätsereignisdatensatz zeigt einen Anmeldefehler für Ihre SQL-Server-DB.  

```
{
    "type": "DatabaseActivityMonitoringRecord",
    "clusterId": "",
    "instanceId": "db-4JCWQLUZVFYP7DIWP6JVQ77O3Q",
    "databaseActivityEventList": [
        {
            "class": "LOGIN",
            "clientApplication": "Microsoft SQL Server Management Studio",
            "command": "LOGIN FAILED",
            "commandText": "Login failed for user 'test'. Reason: Password did not match that for the login provided. [CLIENT: local-machine]",
            "databaseName": "",
            "dbProtocol": "SQLSERVER",
            "dbUserName": "test",
            "endTime": null,
            "errorMessage": null,
            "exitCode": 0,
            "logTime": "2022-10-06 21:34:42.7113072+00",
            "netProtocol": null,
            "objectName": "",
            "objectType": "LOGIN",
            "paramList": null,
            "pid": null,
            "remoteHost": "local machine",
            "remotePort": null,
            "rowCount": 0,
            "serverHost": "172.31.30.159",
            "serverType": "SQLSERVER",
            "serverVersion": "15.00.4073.23.v1.R1",
            "serviceName": "sqlserver-ee",
            "sessionId": 0,
            "startTime": null,
            "statementId": "0x1eb0d1808d34a94b9d3dcf5432750f02",
            "substatementId": 1,
            "transactionId": "0",
            "type": "record",
            "engineNativeAuditFields": {
                "target_database_principal_id": 0,
                "target_server_principal_id": 0,
                "target_database_principal_name": "",
                "server_principal_id": 0,
                "user_defined_information": "",
                "response_rows": 0,
                "database_principal_name": "",
                "target_server_principal_name": "",
                "schema_name": "",
                "is_column_permission": false,
                "object_id": 0,
                "server_instance_name": "EC2AMAZ-NFUJJNO",
                "target_server_principal_sid": null,
                "additional_information": "<action_info "xmlns=\"http://schemas.microsoft.com/sqlserver/2008/sqlaudit_data\"><pooled_connection>0</pooled_connection><error>0x00004818</error><state>8</state><address>local machine</address><PasswordFirstNibbleHash>B</PasswordFirstNibbleHash></action_info>"-->,
                "duration_milliseconds": 0,
                "permission_bitmask": "0x00000000000000000000000000000000",
                "data_sensitivity_information": "",
                "session_server_principal_name": "",
                "connection_id": "98B4F537-0F82-49E3-AB08-B9D33B5893EF",
                "audit_schema_version": 1,
                "database_principal_id": 0,
                "server_principal_sid": null,
                "user_defined_event_id": 0,
                "host_name": "EC2AMAZ-NFUJJNO"
            }
        }
    ]
}
```
Wenn ein Datenbankaktivitätsstream nicht aktiviert ist, ist das letzte Feld im JSON-Dokument `"engineNativeAuditFields": { }`. 

**Example Aktivitätsereignisdatensatz einer CREATE TABLE-Anweisung**  
Im Folgenden sehen Sie ein Beispiel eines `CREATE TABLE`-Ereignisses für Ihre Oracle-Datenbank.  

```
{
    "class": "Standard",
    "clientApplication": "sqlplus@ip-12-34-5-678 (TNS V1-V3)",
    "command": "CREATE TABLE",
    "commandText": "CREATE TABLE persons(\n    person_id NUMBER GENERATED BY DEFAULT AS IDENTITY,\n    first_name VARCHAR2(50) NOT NULL,\n    last_name VARCHAR2(50) NOT NULL,\n    PRIMARY KEY(person_id)\n)",
    "dbid": "0123456789",
    "databaseName": "ORCL",
    "dbProtocol": "oracle",
    "dbUserName": "TEST",
    "endTime": null,
    "errorMessage": null,
    "exitCode": 0,
    "logTime": "2021-01-15 00:22:49.535239",
    "netProtocol": "beq",
    "objectName": "PERSONS",
    "objectType": "TEST",
    "paramList": [],
    "pid": 17687,
    "remoteHost": "123.456.789.0",
    "remotePort": null,
    "rowCount": null,
    "serverHost": "987.654.321.01",
    "serverType": "oracle",
    "serverVersion": "19.0.0.0.ru-2020-01.rur-2020-01.r1.EE.3",
    "serviceName": "oracle-ee",
    "sessionId": 1234567890,
    "startTime": null,
    "statementId": 43,
    "substatementId": null,
    "transactionId": "090011007F0D0000",
    "engineNativeAuditFields": {
        "UNIFIED_AUDIT_POLICIES": "TEST_POL_EVERYTHING",
        "FGA_POLICY_NAME": null,
        "DV_OBJECT_STATUS": null,
        "SYSTEM_PRIVILEGE_USED": "CREATE SEQUENCE, CREATE TABLE",
        "OLS_LABEL_COMPONENT_TYPE": null,
        "XS_SESSIONID": null,
        "ADDITIONAL_INFO": null,
        "INSTANCE_ID": 1,
        "DV_COMMENT": null,
        "RMAN_SESSION_STAMP": null,
        "NEW_NAME": null,
        "DV_ACTION_NAME": null,
        "OLS_PROGRAM_UNIT_NAME": null,
        "OLS_STRING_LABEL": null,
        "RMAN_SESSION_RECID": null,
        "OBJECT_PRIVILEGES": null,
        "OLS_OLD_VALUE": null,
        "XS_TARGET_PRINCIPAL_NAME": null,
        "XS_NS_ATTRIBUTE": null,
        "XS_NS_NAME": null,
        "DBLINK_INFO": null,
        "AUTHENTICATION_TYPE": "(TYPE\u003d(DATABASE));(CLIENT ADDRESS\u003d((PROTOCOL\u003dbeq)(HOST\u003d123.456.789.0)));",
        "OBJECT_EDITION": null,
        "OLS_PRIVILEGES_GRANTED": null,
        "EXCLUDED_USER": null,
        "DV_ACTION_OBJECT_NAME": null,
        "OLS_LABEL_COMPONENT_NAME": null,
        "EXCLUDED_SCHEMA": null,
        "DP_TEXT_PARAMETERS1": null,
        "XS_USER_NAME": null,
        "XS_ENABLED_ROLE": null,
        "XS_NS_ATTRIBUTE_NEW_VAL": null,
        "DIRECT_PATH_NUM_COLUMNS_LOADED": null,
        "AUDIT_OPTION": null,
        "DV_EXTENDED_ACTION_CODE": null,
        "XS_PACKAGE_NAME": null,
        "OLS_NEW_VALUE": null,
        "DV_RETURN_CODE": null,
        "XS_CALLBACK_EVENT_TYPE": null,
        "USERHOST": "ip-10-13-0-122",
        "GLOBAL_USERID": null,
        "CLIENT_IDENTIFIER": null,
        "RMAN_OPERATION": null,
        "TERMINAL": "pts/1",
        "OS_USERNAME": "rdsdb",
        "OLS_MAX_READ_LABEL": null,
        "XS_PROXY_USER_NAME": null,
        "XS_DATASEC_POLICY_NAME": null,
        "DV_FACTOR_CONTEXT": null,
        "OLS_MAX_WRITE_LABEL": null,
        "OLS_PARENT_GROUP_NAME": null,
        "EXCLUDED_OBJECT": null,
        "DV_RULE_SET_NAME": null,
        "EXTERNAL_USERID": null,
        "EXECUTION_ID": null,
        "ROLE": null,
        "PROXY_SESSIONID": 0,
        "DP_BOOLEAN_PARAMETERS1": null,
        "OLS_POLICY_NAME": null,
        "OLS_GRANTEE": null,
        "OLS_MIN_WRITE_LABEL": null,
        "APPLICATION_CONTEXTS": null,
        "XS_SCHEMA_NAME": null,
        "DV_GRANTEE": null,
        "XS_COOKIE": null,
        "DBPROXY_USERNAME": null,
        "DV_ACTION_CODE": null,
        "OLS_PRIVILEGES_USED": null,
        "RMAN_DEVICE_TYPE": null,
        "XS_NS_ATTRIBUTE_OLD_VAL": null,
        "TARGET_USER": null,
        "XS_ENTITY_TYPE": null,
        "ENTRY_ID": 12,
        "XS_PROCEDURE_NAME": null,
        "XS_INACTIVITY_TIMEOUT": null,
        "RMAN_OBJECT_TYPE": null,
        "SYSTEM_PRIVILEGE": null,
        "NEW_SCHEMA": null,
        "SCN": 5133083
    }
}
```
Das folgende Beispiel zeigt ein `CREATE TABLE`-Ereignis für Ihre SQL-Server-Datenbank.  

```
{
    "type": "DatabaseActivityMonitoringRecord",
    "clusterId": "",
    "instanceId": "db-4JCWQLUZVFYP7DIWP6JVQ77O3Q",
    "databaseActivityEventList": [
        {
            "class": "SCHEMA",
            "clientApplication": "Microsoft SQL Server Management Studio - Query",
            "command": "ALTER",
            "commandText": "Create table [testDB].[dbo].[TestTable2](\r\ntextA varchar(6000),\r\n    textB varchar(6000)\r\n)",
            "databaseName": "testDB",
            "dbProtocol": "SQLSERVER",
            "dbUserName": "test",
            "endTime": null,
            "errorMessage": null,
            "exitCode": 1,
            "logTime": "2022-10-06 21:44:38.4120677+00",
            "netProtocol": null,
            "objectName": "dbo",
            "objectType": "SCHEMA",
            "paramList": null,
            "pid": null,
            "remoteHost": "local machine",
            "remotePort": null,
            "rowCount": 0,
            "serverHost": "172.31.30.159",
            "serverType": "SQLSERVER",
            "serverVersion": "15.00.4073.23.v1.R1",
            "serviceName": "sqlserver-ee",
            "sessionId": 84,
            "startTime": null,
            "statementId": "0x5178d33d56e95e419558b9607158a5bd",
            "substatementId": 1,
            "transactionId": "4561864",
            "type": "record",
            "engineNativeAuditFields": {
                "target_database_principal_id": 0,
                "target_server_principal_id": 0,
                "target_database_principal_name": "",
                "server_principal_id": 2,
                "user_defined_information": "",
                "response_rows": 0,
                "database_principal_name": "dbo",
                "target_server_principal_name": "",
                "schema_name": "",
                "is_column_permission": false,
                "object_id": 1,
                "server_instance_name": "EC2AMAZ-NFUJJNO",
                "target_server_principal_sid": null,
                "additional_information": "",
                "duration_milliseconds": 0,
                "permission_bitmask": "0x00000000000000000000000000000000",
                "data_sensitivity_information": "",
                "session_server_principal_name": "test",
                "connection_id": "EE1FE3FD-EF2C-41FD-AF45-9051E0CD983A",
                "audit_schema_version": 1,
                "database_principal_id": 1,
                "server_principal_sid": "0x010500000000000515000000bdc2795e2d0717901ba6998cf4010000",
                "user_defined_event_id": 0,
                "host_name": "EC2AMAZ-NFUJJNO"
            }
        }
    ]
}
```

**Example Aktivitätsereignisdatensatz einer SELECT-Anweisung**  
Das folgende Beispiel zeigt ein `SELECT`-Ereignis für Ihre Oracle-DB.  

```
{
    "class": "Standard",
    "clientApplication": "sqlplus@ip-12-34-5-678 (TNS V1-V3)",
    "command": "SELECT",
    "commandText": "select count(*) from persons",
    "databaseName": "1234567890",
    "dbProtocol": "oracle",
    "dbUserName": "TEST",
    "endTime": null,
    "errorMessage": null,
    "exitCode": 0,
    "logTime": "2021-01-15 00:25:18.850375",
    "netProtocol": "beq",
    "objectName": "PERSONS",
    "objectType": "TEST",
    "paramList": [],
    "pid": 17687,
    "remoteHost": "123.456.789.0",
    "remotePort": null,
    "rowCount": null,
    "serverHost": "987.654.321.09",
    "serverType": "oracle",
    "serverVersion": "19.0.0.0.ru-2020-01.rur-2020-01.r1.EE.3",
    "serviceName": "oracle-ee",
    "sessionId": 1080639707,
    "startTime": null,
    "statementId": 44,
    "substatementId": null,
    "transactionId": null,
    "engineNativeAuditFields": {
        "UNIFIED_AUDIT_POLICIES": "TEST_POL_EVERYTHING",
        "FGA_POLICY_NAME": null,
        "DV_OBJECT_STATUS": null,
        "SYSTEM_PRIVILEGE_USED": null,
        "OLS_LABEL_COMPONENT_TYPE": null,
        "XS_SESSIONID": null,
        "ADDITIONAL_INFO": null,
        "INSTANCE_ID": 1,
        "DV_COMMENT": null,
        "RMAN_SESSION_STAMP": null,
        "NEW_NAME": null,
        "DV_ACTION_NAME": null,
        "OLS_PROGRAM_UNIT_NAME": null,
        "OLS_STRING_LABEL": null,
        "RMAN_SESSION_RECID": null,
        "OBJECT_PRIVILEGES": null,
        "OLS_OLD_VALUE": null,
        "XS_TARGET_PRINCIPAL_NAME": null,
        "XS_NS_ATTRIBUTE": null,
        "XS_NS_NAME": null,
        "DBLINK_INFO": null,
        "AUTHENTICATION_TYPE": "(TYPE\u003d(DATABASE));(CLIENT ADDRESS\u003d((PROTOCOL\u003dbeq)(HOST\u003d123.456.789.0)));",
        "OBJECT_EDITION": null,
        "OLS_PRIVILEGES_GRANTED": null,
        "EXCLUDED_USER": null,
        "DV_ACTION_OBJECT_NAME": null,
        "OLS_LABEL_COMPONENT_NAME": null,
        "EXCLUDED_SCHEMA": null,
        "DP_TEXT_PARAMETERS1": null,
        "XS_USER_NAME": null,
        "XS_ENABLED_ROLE": null,
        "XS_NS_ATTRIBUTE_NEW_VAL": null,
        "DIRECT_PATH_NUM_COLUMNS_LOADED": null,
        "AUDIT_OPTION": null,
        "DV_EXTENDED_ACTION_CODE": null,
        "XS_PACKAGE_NAME": null,
        "OLS_NEW_VALUE": null,
        "DV_RETURN_CODE": null,
        "XS_CALLBACK_EVENT_TYPE": null,
        "USERHOST": "ip-12-34-5-678",
        "GLOBAL_USERID": null,
        "CLIENT_IDENTIFIER": null,
        "RMAN_OPERATION": null,
        "TERMINAL": "pts/1",
        "OS_USERNAME": "rdsdb",
        "OLS_MAX_READ_LABEL": null,
        "XS_PROXY_USER_NAME": null,
        "XS_DATASEC_POLICY_NAME": null,
        "DV_FACTOR_CONTEXT": null,
        "OLS_MAX_WRITE_LABEL": null,
        "OLS_PARENT_GROUP_NAME": null,
        "EXCLUDED_OBJECT": null,
        "DV_RULE_SET_NAME": null,
        "EXTERNAL_USERID": null,
        "EXECUTION_ID": null,
        "ROLE": null,
        "PROXY_SESSIONID": 0,
        "DP_BOOLEAN_PARAMETERS1": null,
        "OLS_POLICY_NAME": null,
        "OLS_GRANTEE": null,
        "OLS_MIN_WRITE_LABEL": null,
        "APPLICATION_CONTEXTS": null,
        "XS_SCHEMA_NAME": null,
        "DV_GRANTEE": null,
        "XS_COOKIE": null,
        "DBPROXY_USERNAME": null,
        "DV_ACTION_CODE": null,
        "OLS_PRIVILEGES_USED": null,
        "RMAN_DEVICE_TYPE": null,
        "XS_NS_ATTRIBUTE_OLD_VAL": null,
        "TARGET_USER": null,
        "XS_ENTITY_TYPE": null,
        "ENTRY_ID": 13,
        "XS_PROCEDURE_NAME": null,
        "XS_INACTIVITY_TIMEOUT": null,
        "RMAN_OBJECT_TYPE": null,
        "SYSTEM_PRIVILEGE": null,
        "NEW_SCHEMA": null,
        "SCN": 5136972
    }
}
```
Das folgende Beispiel zeigt ein `SELECT`-Ereignis für Ihre SQL-Server-DB.  

```
{
    "type": "DatabaseActivityMonitoringRecord",
    "clusterId": "",
    "instanceId": "db-4JCWQLUZVFYP7DIWP6JVQ77O3Q",
    "databaseActivityEventList": [
        {
            "class": "TABLE",
            "clientApplication": "Microsoft SQL Server Management Studio - Query",
            "command": "SELECT",
            "commandText": "select * from [testDB].[dbo].[TestTable]",
            "databaseName": "testDB",
            "dbProtocol": "SQLSERVER",
            "dbUserName": "test",
            "endTime": null,
            "errorMessage": null,
            "exitCode": 1,
            "logTime": "2022-10-06 21:24:59.9422268+00",
            "netProtocol": null,
            "objectName": "TestTable",
            "objectType": "TABLE",
            "paramList": null,
            "pid": null,
            "remoteHost": "local machine",
            "remotePort": null,
            "rowCount": 0,
            "serverHost": "172.31.30.159",
            "serverType": "SQLSERVER",
            "serverVersion": "15.00.4073.23.v1.R1",
            "serviceName": "sqlserver-ee",
            "sessionId": 62,
            "startTime": null,
            "statementId": "0x03baed90412f564fad640ebe51f89b99",
            "substatementId": 1,
            "transactionId": "4532935",
            "type": "record",
            "engineNativeAuditFields": {
                "target_database_principal_id": 0,
                "target_server_principal_id": 0,
                "target_database_principal_name": "",
                "server_principal_id": 2,
                "user_defined_information": "",
                "response_rows": 0,
                "database_principal_name": "dbo",
                "target_server_principal_name": "",
                "schema_name": "dbo",
                "is_column_permission": true,
                "object_id": 581577110,
                "server_instance_name": "EC2AMAZ-NFUJJNO",
                "target_server_principal_sid": null,
                "additional_information": "",
                "duration_milliseconds": 0,
                "permission_bitmask": "0x00000000000000000000000000000001",
                "data_sensitivity_information": "",
                "session_server_principal_name": "test",
                "connection_id": "AD3A5084-FB83-45C1-8334-E923459A8109",
                "audit_schema_version": 1,
                "database_principal_id": 1,
                "server_principal_sid": "0x010500000000000515000000bdc2795e2d0717901ba6998cf4010000",
                "user_defined_event_id": 0,
                "host_name": "EC2AMAZ-NFUJJNO"
            }
        }
    ]
}
```

## DatabaseActivityMonitoringRecords JSON-Objekt
<a name="DBActivityStreams.AuditLog.DatabaseActivityMonitoringRecords"></a>

Die Datenbank-Aktivitätsereignisdatensätze befinden sich in einem JSON-Objekt, das die folgenden Informationen enthält.


****  

| JSON-Feld | Datentyp | Beschreibung | 
| --- | --- | --- | 
|  `type`  | string |  Der Typ des JSON-Datensatzes. Der Wert ist `DatabaseActivityMonitoringRecords`.  | 
| version | string |  Die Version der Datenbank-Aktivitätsüberwachungsdatensätze. Oracle DB verwendet Version 1.3 und SQL Server verwendet Version 1.4. Diese Engine-Versionen führen das engineNativeAuditFields-JSON-Objekt ein.  | 
|  [databaseActivityEvents](#DBActivityStreams.AuditLog.databaseActivityEvents)  | Zeichenfolge |  Ein JSON-Objekt, das die Aktivitätsereignisse enthält.  | 
| Schlüssel | Zeichenfolge | Ein Verschlüsselungsschlüssel, den Sie zum Entschlüsseln des [JSON-Array databaseActivityEventList](DBActivityStreams.AuditLog.databaseActivityEventList.md) verwenden  | 

## databaseActivityEvents JSON-Objekt
<a name="DBActivityStreams.AuditLog.databaseActivityEvents"></a>

Das `databaseActivityEvents`-JSON-Objekt enthält die folgenden Informationen.

### Felder der obersten Ebene im JSON-Datensatz
<a name="DBActivityStreams.AuditLog.topLevel"></a>

 Jedes Ereignis im Prüfprotokoll wird in einen Datensatz im JSON-Format verpackt. Dieser Datensatz enthält die folgenden Felder. 

**type**  
 Dieses Feld hat immer den Wert `DatabaseActivityMonitoringRecords`. 

**Version**  
 Dieses Feld stellt die Version des Datenprotokolls oder des Vertrags für die Datenbankaktivität dar. Es definiert, welche Felder verfügbar sind.

**databaseActivityEvents**  
 Eine verschlüsselte Zeichenfolge, die ein oder mehrere Aktivitätsereignisse darstellt. Sie wird als Base64-Byte-Array dargestellt. Wenn Sie die Zeichenfolge entschlüsseln, ist das Ergebnis ein Datensatz im JSON-Format mit Feldern, wie in den Beispielen in diesem Abschnitt gezeigt.

**Schlüssel**  
 Der verschlüsselte Datenschlüssel, der zum Verschlüsseln der `databaseActivityEvents`-Zeichenfolge verwendet wird. Dies ist dasselbe AWS KMS key , das Sie beim Start des Datenbank-Aktivitätsstreams angegeben haben.

 Im folgenden Beispiel wird das Format dieses Datensatzes gezeigt.

```
{
  "type":"DatabaseActivityMonitoringRecords",
  "version":"1.3",
  "databaseActivityEvents":"encrypted audit records",
  "key":"encrypted key"
}
```

```
           "type":"DatabaseActivityMonitoringRecords",
           "version":"1.4",
           "databaseActivityEvents":"encrypted audit records",
           "key":"encrypted key"
```

Führen Sie die folgenden Schritte aus, um den Inhalt des `databaseActivityEvents`-Feldes zu entschlüsseln:

1.  Entschlüsseln Sie den Wert im JSON-Feld `key` mit dem KMS-Schlüssel, den Sie beim Starten des Datenbankaktivitätsstroms angegeben haben. Dadurch wird der Datenverschlüsselungsschlüssel im Klartext zurückgegeben. 

1.  Base64-dekodieren Sie den Wert im `databaseActivityEvents`-JSON-Feld, um den Verschlüsselungstext der Prüfungsnutzlast im Binärformat zu erhalten. 

1.  Entschlüsseln Sie den binären Verschlüsselungstext mit dem Datenverschlüsselungsschlüssel, den Sie im ersten Schritt dekodiert haben. 

1.  Dekomprimieren Sie die entschlüsselte Nutzlast. 
   +  Die verschlüsselte Nutzlast befindet sich im `databaseActivityEvents`-Feld. 
   +  Das `databaseActivityEventList`-Feld enthält ein Array von Prüfdatensätzen. Die `type`-Felder im Array können `record` oder sein `heartbeat`. 

Der Prüfprotokoll-Aktivitätsereignisdatensatz ist ein JSON-Objekt mit folgenden Informationen.


****  

| JSON-Feld | Datentyp | Beschreibung | 
| --- | --- | --- | 
|  `type`  | string |  Der Typ des JSON-Datensatzes. Der Wert ist `DatabaseActivityMonitoringRecord`.  | 
| instanceId | string | Die Ressourcen-ID der DB-Instance. Sie dem DB-Instance-Attribut DbiResourceId. | 
|  [JSON-Array databaseActivityEventList](DBActivityStreams.AuditLog.databaseActivityEventList.md)   | string |  Ein Array von Aktivitätsprüfdatensätzen oder Heartbeat-Nachrichten.  | 

# JSON-Array databaseActivityEventList für Datenbankaktivitäts-Streams
<a name="DBActivityStreams.AuditLog.databaseActivityEventList"></a>

Die Prüfprotokollnutzlast ist ein verschlüsseltes JSON-Array `databaseActivityEventList`. In der folgenden Tabelle sind die Felder für jedes Aktivitätsereignis im entschlüsselten Array `DatabaseActivityEventList` eines Prüfprotokolls alphabetisch aufgelistet. 

Wenn die einheitliche Prüfung in der Oracle-Datenbank aktiviert ist, werden die Prüfungsdatensätze in diesem neuen Prüfungs-Trail aufgefüllt. Die Ansicht `UNIFIED_AUDIT_TRAIL` zeigt Prüfungs-Datensätze in Tabellenform an, indem die Prüfungs-Datensätze aus dem Prüfungs-Trail abgerufen werden. Wenn Sie einen Datenbankaktivitätsstream starten, wird eine Spalte in `UNIFIED_AUDIT_TRAIL` einem Feld im Array `databaseActivityEventList` zugeordnet.

**Wichtig**  
Die Ereignisstruktur kann sich ändern. Amazon RDS könnte in Zukunft neue Felder zu Aktivitätsereignissen hinzufügen. Stellen Sie bei Anwendungen, welche die JSON-Daten analysieren, sicher, dass Ihr Code unbekannte Feldnamen ignorieren oder entsprechende Aktionen durchführen kann. 

## databaseActivityEventList-Felder für Amazon RDS für Oracle
<a name="DBActivityStreams.AuditLog.databaseActivityEventList.ro"></a>

Im Folgenden sind `databaseActivityEventList`-Felder für Amazon RDS für Oracle aufgeführt.


| Feld | Datentyp | Quelle | Beschreibung | 
| --- | --- | --- | --- | 
|  `class`  |  string  |  `AUDIT_TYPE`-Spalte in `UNIFIED_AUDIT_TRAIL`  |  Die Aktivitätsereignisklasse. Dies entspricht dem `AUDIT_TYPE`-Spalte in der `UNIFIED_AUDIT_TRAIL`-Ansicht. Gültige Werte für Amazon RDS für Oracle sind: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AmazonRDS/latest/UserGuide/DBActivityStreams.AuditLog.databaseActivityEventList.html) Weitere Informationen finden Sie unter [UNIFIED\$1AUDIT\$1TRAIL](https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/UNIFIED_AUDIT_TRAIL.html#GUID-B7CE1C02-2FD4-47D6-80AA-CF74A60CDD1D) in der Oracle-Dokumentation.  | 
|  `clientApplication`  |  string  |  `CLIENT_PROGRAM_NAME` in `UNIFIED_AUDIT_TRAIL`  |  Die Anwendung, die der Client laut Meldung für die Verbindung verwendet hat. Der Client muss diese Informationen nicht angeben, der Wert kann daher Null sein. Ein Beispielwert ist `JDBC Thin Client`.  | 
|  `command`  |  string  |  `ACTION_NAME`-Spalte in `UNIFIED_AUDIT_TRAIL`  |  Name der Aktion, die vom Benutzer ausgeführt wird. Um die vollständige Aktion zu verstehen, lesen Sie sowohl den Befehlsnamen als auch den `AUDIT_TYPE`-Wert. Ein Beispielwert ist `ALTER DATABASE`.  | 
|  `commandText`  |  string  |  `SQL_TEXT`-Spalte in `UNIFIED_AUDIT_TRAIL`  |  Die dem Ereignis zugeordnete SQL-Anweisung. Ein Beispielwert ist `ALTER DATABASE BEGIN BACKUP`.  | 
|  `databaseName`  |  string  |  `NAME`-Spalte in `V$DATABASE`  |  Name der Datenbank.  | 
|  `dbid`  |  Zahl  |  `DBID`-Spalte in `UNIFIED_AUDIT_TRAIL`  |  Numerische ID für die Datenbank. Ein Beispielwert ist `1559204751`.  | 
|  `dbProtocol`  |  string  |  –  |  Das Datenbankprotokoll. In dieser Beta ist der Wert `oracle`.  | 
|  `dbUserName`  |  string  |  `DBUSERNAME`-Spalte in `UNIFIED_AUDIT_TRAIL`  |  Name des Datenbankbenutzers, dessen Aktionen überwacht wurden. Ein Beispielwert ist `RDSADMIN`.  | 
|  `endTime`  |  string  |  –  |  Dieses Feld wird für RDS für Oracle nicht verwendet und ist immer Null.  | 
|  `engineNativeAuditFields`  |  Objekt  |  `UNIFIED_AUDIT_TRAIL`  |  Standardmäßig ist dieses Objekt leer. Wenn Sie den Aktivitäts-Stream mit der Option `--engine-native-audit-fields-included` starten, enthält dieses Objekt die folgenden Spalten und deren Werte: <pre>ADDITIONAL_INFO<br />APPLICATION_CONTEXTS<br />AUDIT_OPTION<br />AUTHENTICATION_TYPE<br />CLIENT_IDENTIFIER<br />CURRENT_USER<br />DBLINK_INFO<br />DBPROXY_USERNAME<br />DIRECT_PATH_NUM_COLUMNS_LOADED<br />DP_BOOLEAN_PARAMETERS1<br />DP_TEXT_PARAMETERS1<br />DV_ACTION_CODE<br />DV_ACTION_NAME<br />DV_ACTION_OBJECT_NAME<br />DV_COMMENT<br />DV_EXTENDED_ACTION_CODE<br />DV_FACTOR_CONTEXT<br />DV_GRANTEE<br />DV_OBJECT_STATUS<br />DV_RETURN_CODE<br />DV_RULE_SET_NAME<br />ENTRY_ID<br />EXCLUDED_OBJECT<br />EXCLUDED_SCHEMA<br />EXCLUDED_USER<br />EXECUTION_ID<br />EXTERNAL_USERID<br />FGA_POLICY_NAME<br />GLOBAL_USERID<br />INSTANCE_ID<br />KSACL_SERVICE_NAME<br />KSACL_SOURCE_LOCATION<br />KSACL_USER_NAME<br />NEW_NAME<br />NEW_SCHEMA<br />OBJECT_EDITION<br />OBJECT_PRIVILEGES<br />OLS_GRANTEE<br />OLS_LABEL_COMPONENT_NAME<br />OLS_LABEL_COMPONENT_TYPE<br />OLS_MAX_READ_LABEL<br />OLS_MAX_WRITE_LABEL<br />OLS_MIN_WRITE_LABEL<br />OLS_NEW_VALUE<br />OLS_OLD_VALUE<br />OLS_PARENT_GROUP_NAME<br />OLS_POLICY_NAME<br />OLS_PRIVILEGES_GRANTED<br />OLS_PRIVILEGES_USED<br />OLS_PROGRAM_UNIT_NAME<br />OLS_STRING_LABEL<br />OS_USERNAME<br />PROTOCOL_ACTION_NAME<br />PROTOCOL_MESSAGE<br />PROTOCOL_RETURN_CODE<br />PROTOCOL_SESSION_ID<br />PROTOCOL_USERHOST<br />PROXY_SESSIONID<br />RLS_INFO<br />RMAN_DEVICE_TYPE<br />RMAN_OBJECT_TYPE<br />RMAN_OPERATION<br />RMAN_SESSION_RECID<br />RMAN_SESSION_STAMP<br />ROLE<br />SCN<br />SYSTEM_PRIVILEGE<br />SYSTEM_PRIVILEGE_USED<br />TARGET_USER<br />TERMINAL<br />UNIFIED_AUDIT_POLICIES<br />USERHOST<br />XS_CALLBACK_EVENT_TYPE<br />XS_COOKIE<br />XS_DATASEC_POLICY_NAME<br />XS_ENABLED_ROLE<br />XS_ENTITY_TYPE<br />XS_INACTIVITY_TIMEOUT<br />XS_NS_ATTRIBUTE<br />XS_NS_ATTRIBUTE_NEW_VAL<br />XS_NS_ATTRIBUTE_OLD_VAL<br />XS_NS_NAME<br />XS_PACKAGE_NAME<br />XS_PROCEDURE_NAME<br />XS_PROXY_USER_NAME<br />XS_SCHEMA_NAME<br />XS_SESSIONID<br />XS_TARGET_PRINCIPAL_NAME<br />XS_USER_NAME</pre> Weitere Informationen finden Sie unter [UNIFIED\$1AUDIT\$1TRAIL](https://docs.oracle.com/database/121/REFRN/GUID-B7CE1C02-2FD4-47D6-80AA-CF74A60CDD1D.htm#REFRN29162) in der Oracle-Datenbank-okumentation.  | 
|  `errorMessage`  |  string  |  –  |  Dieses Feld wird für RDS für Oracle nicht verwendet und ist immer Null.  | 
|  `exitCode`  |  Zahl  |  `RETURN_CODE`-Spalte in `UNIFIED_AUDIT_TRAIL`  |  Fehlercode der Oracle-Datenbank, der von der Aktion generiert wurde. Wenn die Aktion erfolgreich war, lautet der Wert `0`.  | 
|  `logTime`  |  string  |  `EVENT_TIMESTAMP_UTC`-Spalte in `UNIFIED_AUDIT_TRAIL`  |  Zeitstempel der Erstellung des Prüfungs-Trail-Eintrags. Ein Beispielwert ist `2020-11-27 06:56:14.981404`.  | 
|  `netProtocol`  |  string  |  `AUTHENTICATION_TYPE`-Spalte in `UNIFIED_AUDIT_TRAIL`  |  Das Netzwerkkommunikationsprotokoll. Ein Beispielwert ist `TCP`.  | 
|  `objectName`  |  string  |  `OBJECT_NAME`-Spalte in `UNIFIED_AUDIT_TRAIL`  |  Der Name des Objekts, das von der Aktion betroffen ist. Ein Beispielwert ist `employees`.  | 
|  `objectType`  |  string  |  `OBJECT_SCHEMA`-Spalte in `UNIFIED_AUDIT_TRAIL`  |  Der Schemaname des von der Aktion betroffenen Objekts. Ein Beispielwert ist `hr`.  | 
|  `paramList`  |  table  |  `SQL_BINDS`-Spalte in `UNIFIED_AUDIT_TRAIL`  |  Die Liste der Bindungsvariablen, falls vorhanden, die `SQL_TEXT` zugeordnet sind. Ein Beispielwert ist `parameter_1,parameter_2`.  | 
|  `pid`  |  Zahl  |  `OS_PROCESS`-Spalte in `UNIFIED_AUDIT_TRAIL`  |  Betriebssystem-Prozesskennung des Oracle-Datenbankprozesses Ein Beispielwert ist `22396`.  | 
|  `remoteHost`  |  string  |  `AUTHENTICATION_TYPE`-Spalte in `UNIFIED_AUDIT_TRAIL`  |  Entweder die Client-IP-Adresse oder der Name des Hosts, von dem die Sitzung ausgelöst wurde. Ein Beispielwert ist `123.456.789.123`.  | 
|  `remotePort`  |  string  |  `AUTHENTICATION_TYPE`-Spalte in `UNIFIED_AUDIT_TRAIL`  |  Die Portnummer des Clients. Ein typischer Wert in Oracle-Datenbank-Umgebungen ist `1521`.  | 
|  `rowCount`  |  Zahl  |  –  |  Dieses Feld wird für RDS für Oracle nicht verwendet und ist immer Null.  | 
|  `serverHost`  |  string  |  Datenbank-Host  |  Die IP-Adresse des Datenbankserverhosts. Ein Beispielwert ist `123.456.789.123`.  | 
|  `serverType`  |  string  |  –  |  Der Datenbankservertyp. Dieser Wert ist immer `ORACLE`.  | 
|  `serverVersion`  |  string  |  Datenbank-Host  |  Die Version von Amazon RDS für Oracle, Release Update (RU) und Release Update Revision (RUR). Ein Beispielwert ist `19.0.0.0.ru-2020-01.rur-2020-01.r1.EE.3`.  | 
|  `serviceName`  |  string  |  Datenbank-Host  |  Name des Service. Ein Beispielwert ist `oracle-ee`.   | 
|  `sessionId`  |  Zahl  |  `SESSIONID`-Spalte in `UNIFIED_AUDIT_TRAIL`  |  Die Sitzungskennung der Prüfung. Ein Beispiel ist `1894327130`.  | 
|  `startTime`  |  string  |  –  |  Dieses Feld wird für RDS für Oracle nicht verwendet und ist immer Null.  | 
|  `statementId`  |  Zahl  |  `STATEMENT_ID`-Spalte in `UNIFIED_AUDIT_TRAIL`  |  Numerische ID für jeden Anweisungslauf. Eine Anweisung kann viele Aktionen verursachen. Ein Beispielwert ist `142197`.  | 
|  `substatementId`  |  –  |  –  |  Dieses Feld wird für RDS für Oracle nicht verwendet und ist immer Null.  | 
|  `transactionId`  |  string  |  `TRANSACTION_ID`-Spalte in `UNIFIED_AUDIT_TRAIL`  |  Die ID der Transaktion, in der das Objekt geändert wird. Ein Beispielwert ist `02000800D5030000`.  | 

## databaseActivityEventList-Felder für Amazon RDS für SQL Server
<a name="DBActivityStreams.AuditLog.databaseActivityEventList.rss"></a>

Im Folgenden sind `databaseActivityEventList`-Felder für Amazon RDS für SQL Server aufgeführt.


| Feld | Datentyp | Quelle | Beschreibung | 
| --- | --- | --- | --- | 
|  `class`  |  Zeichenfolge  |  ` sys.fn_get_audit_file.class_type` zugeordnet zu `sys.dm_audit_class_type_map.class_type_desc`  |  Die Aktivitätsereignisklasse. Weitere Informationen finden Sie unter [SQL-Server-Audit (Datenbank-Engine)](https://learn.microsoft.com/en-us/sql/relational-databases/security/auditing/sql-server-audit-database-engine?view=sql-server-ver16) in der Microsoft SQL Server-Dokumentation.  | 
|  `clientApplication`  |  Zeichenfolge  |  `sys.fn_get_audit_file.application_name`  |  Die Anwendung, mit der der Client eine Verbindung herstellt, wie vom Client gemeldet (SQL-Server-Version 14 und höher). Dieses Feld ist in SQL-Server-Version 13 Null.  | 
|  `command`  |  Zeichenfolge  |  `sys.fn_get_audit_file.action_id` zugeordnet zu `sys.dm_audit_actions.name`  |  Die allgemeine Kategorie der SQL-Anweisung. Die Werte für dieses Feld hängen vom Wert der Klasse ab.  | 
|  `commandText`  |  Zeichenfolge  |  `sys.fn_get_audit_file.statement`  |  Dieses Feld zeigt die SQL-Anweisung an.  | 
|  `databaseName`  |  Zeichenfolge  |  `sys.fn_get_audit_file.database_name`  |  Name der Datenbank.  | 
|  `dbProtocol`  |  Zeichenfolge  |  –  |  Das Datenbankprotokoll. Dieser Wert ist `SQLSERVER`.  | 
|  `dbUserName`  |  Zeichenfolge  |  `sys.fn_get_audit_file.server_principal_name`  |  Der Datenbankbenutzer für die Client-Authentifizierung.  | 
|  `endTime`  |  Zeichenfolge  |  N/A  |  Dieses Feld wird von Amazon RDS für SQL Server nicht verwendet und der Wert ist Null.  | 
|  `engineNativeAuditFields`  |  object  |  Jedes Feld in `sys.fn_get_audit_file`, das in dieser Spalte nicht aufgeführt ist.  |  Standardmäßig ist dieses Objekt leer. Wenn Sie den Aktivitätsstream mit der `--engine-native-audit-fields-included`-Option starten, enthält dieses Objekt weitere systemeigene Engine-Audit-Felder, die JSON-Map nicht zurückgibt.  | 
|  `errorMessage`  |  Zeichenfolge  |  N/A  |  Dieses Feld wird von Amazon RDS für SQL Server nicht verwendet und der Wert ist Null.  | 
|  `exitCode`  |  Ganzzahl  |  `sys.fn_get_audit_file.succeeded`  |  Gibt an, ob die Aktion, die das Ereignis ausgelöst hat, erfolgreich war. Dieses Feld darf nicht Null sein. Für alle Ereignisse außer Anmeldeereignissen gibt dieses Feld an, ob die Berechtigungsprüfung erfolgreich war oder fehlgeschlagen ist, nicht jedoch, ob der Vorgang erfolgreich war oder fehlgeschlagen ist. Gültige Werte sind: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AmazonRDS/latest/UserGuide/DBActivityStreams.AuditLog.databaseActivityEventList.html)  | 
|  `logTime`  |  Zeichenfolge  |  `sys.fn_get_audit_file.event_time`  |  Der Ereigniszeitstempel, der vom SQL Server aufgezeichnet wird.  | 
|  `netProtocol`  |  Zeichenfolge  |  N/A  |  Dieses Feld wird von Amazon RDS für SQL Server nicht verwendet und der Wert ist Null.  | 
|  `objectName`  |  Zeichenfolge  |  `sys.fn_get_audit_file.object_name`  |  Der Name des Datenbankobjekts, wenn die SQL-Anweisung für ein Objekt ausgeführt wird.  | 
|  `objectType`  |  Zeichenfolge  |  `sys.fn_get_audit_file.class_type` zugeordnet zu `sys.dm_audit_class_type_map.class_type_desc`  |  Der Name des Datenbankobjekts, wenn die SQL-Anweisung für einen Objekttyp ausgeführt wird.  | 
|  `paramList`  |  Zeichenfolge  |  N/A  |  Dieses Feld wird von Amazon RDS für SQL Server nicht verwendet und der Wert ist Null.  | 
|  `pid`  |  Ganzzahl  |  N/A  |  Dieses Feld wird von Amazon RDS für SQL Server nicht verwendet und der Wert ist Null.  | 
|  `remoteHost`  |  Zeichenfolge  |  `sys.fn_get_audit_file.client_ip`  |  Die IP-Adresse oder der Hostname des Clients, der die SQL-Anweisung ausgegeben hat (SQL-Server-Version 14 und höher). Dieses Feld ist in SQL-Server-Version 13 Null.  | 
|  `remotePort`  |  Ganzzahl  |  N/A  |  Dieses Feld wird von Amazon RDS für SQL Server nicht verwendet und der Wert ist Null.  | 
|  `rowCount`  |  Ganzzahl  |  `sys.fn_get_audit_file.affected_rows`  |  Die Anzahl der von der SQL-Anweisung betroffenen Tabellenzeilen (SQL-Server-Version 14 und höher). Dieses Feld ist in SQL-Server-Version 13 enthalten.  | 
|  `serverHost`  |  Zeichenfolge  |  Datenbank-Host  |  Die IP-Adresse des Host-Datenbankservers.  | 
|  `serverType`  |  Zeichenfolge  |  –  |  Der Datenbankservertyp. Der Wert ist `SQLSERVER`.  | 
|  `serverVersion`  |  Zeichenfolge  |  Datenbank-Host  |  Die Datenbankserverversion, z. B. 15.00.4073.23.v1.R1 für SQL Server 2017.  | 
|  `serviceName`  |  Zeichenfolge  |  Datenbank-Host  |  Der Name des -Dienstes. Ein Beispielwert ist `sqlserver-ee`.  | 
|  `sessionId`  |  Ganzzahl  |  `sys.fn_get_audit_file.session_id`  |  Eindeutige Kennung für die Sitzung.  | 
|  `startTime`  |  Zeichenfolge  |  N/A  |  Dieses Feld wird von Amazon RDS für SQL Server nicht verwendet und der Wert ist Null.  | 
|  `statementId`  |  Zeichenfolge  |  `sys.fn_get_audit_file.sequence_group_id`  |  Eine eindeutige Kennung für die SQL-Anweisung des Clients. Die Kennung ist für jedes generierte Ereignis unterschiedlich. Ein Beispielwert ist `0x38eaf4156267184094bb82071aaab644`.  | 
|  `substatementId`  |  Ganzzahl  |  `sys.fn_get_audit_file.sequence_number`  |  Eine Kennung zur Bestimmung der Sequenznummer für eine Anweisung. Diese Kennung hilft, wenn große Datensätze in mehrere Datensätze aufgeteilt werden.  | 
|  `transactionId`  |  Ganzzahl  |  `sys.fn_get_audit_file.transaction_id`  |  Eine Kennung für eine Transaktion. Wenn es keine aktiven Transaktionen gibt, ist der Wert Null.  | 
|  `type`  |  Zeichenfolge  |  Generierter Datenbankaktivitätsstream  |  Der Ereignistyp. Die Werte sind `record` oder `heartbeat`.  | 

# Verarbeitung eines Datenbank-Aktivitäts-Streams mit dem AWS SDK
<a name="DBActivityStreams.CodeExample"></a>

Sie können einen Aktivitäts-Stream mit Hilfe des AWS SDK programmgesteuert verarbeiten. Im Folgenden sehen Sie vollständig funktionsfähige Java- und Python-Beispiele für die Verwendung von Datensätzen zu Datenbank-Aktivitätsstreams für die Instance-basierte Aktivierung.

------
#### [ Java ]

```
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.net.InetAddress;
import java.nio.ByteBuffer;
import java.nio.charset.StandardCharsets;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.Security;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.zip.GZIPInputStream;

import javax.crypto.Cipher;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.SecretKeySpec;

import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.encryptionsdk.AwsCrypto;
import com.amazonaws.encryptionsdk.CryptoInputStream;
import com.amazonaws.encryptionsdk.jce.JceMasterKey;
import com.amazonaws.services.kinesis.clientlibrary.exceptions.InvalidStateException;
import com.amazonaws.services.kinesis.clientlibrary.exceptions.ShutdownException;
import com.amazonaws.services.kinesis.clientlibrary.exceptions.ThrottlingException;
import com.amazonaws.services.kinesis.clientlibrary.interfaces.IRecordProcessor;
import com.amazonaws.services.kinesis.clientlibrary.interfaces.IRecordProcessorCheckpointer;
import com.amazonaws.services.kinesis.clientlibrary.interfaces.IRecordProcessorFactory;
import com.amazonaws.services.kinesis.clientlibrary.lib.worker.InitialPositionInStream;
import com.amazonaws.services.kinesis.clientlibrary.lib.worker.KinesisClientLibConfiguration;
import com.amazonaws.services.kinesis.clientlibrary.lib.worker.ShutdownReason;
import com.amazonaws.services.kinesis.clientlibrary.lib.worker.Worker;
import com.amazonaws.services.kinesis.clientlibrary.lib.worker.Worker.Builder;
import com.amazonaws.services.kinesis.model.Record;
import com.amazonaws.services.kms.AWSKMS;
import com.amazonaws.services.kms.AWSKMSClientBuilder;
import com.amazonaws.services.kms.model.DecryptRequest;
import com.amazonaws.services.kms.model.DecryptResult;
import com.amazonaws.util.Base64;
import com.amazonaws.util.IOUtils;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.annotations.SerializedName;
import org.bouncycastle.jce.provider.BouncyCastleProvider;

public class DemoConsumer {

    private static final String STREAM_NAME = "aws-rds-das-[instance-external-resource-id]"; // aws-rds-das-db-ABCD123456
    private static final String APPLICATION_NAME = "AnyApplication"; //unique application name for dynamo table generation that holds kinesis shard tracking
    private static final String AWS_ACCESS_KEY = "[AWS_ACCESS_KEY_TO_ACCESS_KINESIS]";
    private static final String AWS_SECRET_KEY = "[AWS_SECRET_KEY_TO_ACCESS_KINESIS]";
    private static final String RESOURCE_ID = "[external-resource-id]"; // db-ABCD123456
    private static final String REGION_NAME = "[region-name]"; //us-east-1, us-east-2...
    private static final BasicAWSCredentials CREDENTIALS = new BasicAWSCredentials(AWS_ACCESS_KEY, AWS_SECRET_KEY);
    private static final AWSStaticCredentialsProvider CREDENTIALS_PROVIDER = new AWSStaticCredentialsProvider(CREDENTIALS);

    private static final AwsCrypto CRYPTO = new AwsCrypto();
    private static final AWSKMS KMS = AWSKMSClientBuilder.standard()
            .withRegion(REGION_NAME)
            .withCredentials(CREDENTIALS_PROVIDER).build();

    class Activity {
        String type;
        String version;
        String databaseActivityEvents;
        String key;
    }

    class ActivityEvent {
        @SerializedName("class") String _class;
        String clientApplication;
        String command;
        String commandText;
        String databaseName;
        String dbProtocol;
        String dbUserName;
        String endTime;
        String errorMessage;
        String exitCode;
        String logTime;
        String netProtocol;
        String objectName;
        String objectType;
        List<String> paramList;
        String pid;
        String remoteHost;
        String remotePort;
        String rowCount;
        String serverHost;
        String serverType;
        String serverVersion;
        String serviceName;
        String sessionId;
        String startTime;
        String statementId;
        String substatementId;
        String transactionId;
        String type;
    }

    class ActivityRecords {
        String type;
        String clusterId; // note that clusterId will contain an empty string on RDS Oracle and RDS SQL Server
        String instanceId;
        List<ActivityEvent> databaseActivityEventList;
    }

    static class RecordProcessorFactory implements IRecordProcessorFactory {
        @Override
        public IRecordProcessor createProcessor() {
            return new RecordProcessor();
        }
    }

    static class RecordProcessor implements IRecordProcessor {

        private static final long BACKOFF_TIME_IN_MILLIS = 3000L;
        private static final int PROCESSING_RETRIES_MAX = 10;
        private static final long CHECKPOINT_INTERVAL_MILLIS = 60000L;
        private static final Gson GSON = new GsonBuilder().serializeNulls().create();

        private static final Cipher CIPHER;
        static {
            Security.insertProviderAt(new BouncyCastleProvider(), 1);
            try {
                CIPHER = Cipher.getInstance("AES/GCM/NoPadding", "BC");
            } catch (NoSuchAlgorithmException | NoSuchPaddingException | NoSuchProviderException e) {
                throw new ExceptionInInitializerError(e);
            }
        }

        private long nextCheckpointTimeInMillis;

        @Override
        public void initialize(String shardId) {
        }

        @Override
        public void processRecords(final List<Record> records, final IRecordProcessorCheckpointer checkpointer) {
            for (final Record record : records) {
                processSingleBlob(record.getData());
            }

            if (System.currentTimeMillis() > nextCheckpointTimeInMillis) {
                checkpoint(checkpointer);
                nextCheckpointTimeInMillis = System.currentTimeMillis() + CHECKPOINT_INTERVAL_MILLIS;
            }
        }

        @Override
        public void shutdown(IRecordProcessorCheckpointer checkpointer, ShutdownReason reason) {
            if (reason == ShutdownReason.TERMINATE) {
                checkpoint(checkpointer);
            }
        }

        private void processSingleBlob(final ByteBuffer bytes) {
            try {
                // JSON $Activity
                final Activity activity = GSON.fromJson(new String(bytes.array(), StandardCharsets.UTF_8), Activity.class);

                // Base64.Decode
                final byte[] decoded = Base64.decode(activity.databaseActivityEvents);
                final byte[] decodedDataKey = Base64.decode(activity.key);

                Map<String, String> context = new HashMap<>();
                context.put("aws:rds:db-id", RESOURCE_ID);

                // Decrypt
                final DecryptRequest decryptRequest = new DecryptRequest()
                        .withCiphertextBlob(ByteBuffer.wrap(decodedDataKey)).withEncryptionContext(context);
                final DecryptResult decryptResult = KMS.decrypt(decryptRequest);
                final byte[] decrypted = decrypt(decoded, getByteArray(decryptResult.getPlaintext()));

                // GZip Decompress
                final byte[] decompressed = decompress(decrypted);
                // JSON $ActivityRecords
                final ActivityRecords activityRecords = GSON.fromJson(new String(decompressed, StandardCharsets.UTF_8), ActivityRecords.class);

                // Iterate throught $ActivityEvents
                for (final ActivityEvent event : activityRecords.databaseActivityEventList) {
                    System.out.println(GSON.toJson(event));
                }
            } catch (Exception e) {
                // Handle error.
                e.printStackTrace();
            }
        }

        private static byte[] decompress(final byte[] src) throws IOException {
            ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(src);
            GZIPInputStream gzipInputStream = new GZIPInputStream(byteArrayInputStream);
            return IOUtils.toByteArray(gzipInputStream);
        }

        private void checkpoint(IRecordProcessorCheckpointer checkpointer) {
            for (int i = 0; i < PROCESSING_RETRIES_MAX; i++) {
                try {
                    checkpointer.checkpoint();
                    break;
                } catch (ShutdownException se) {
                    // Ignore checkpoint if the processor instance has been shutdown (fail over).
                    System.out.println("Caught shutdown exception, skipping checkpoint." + se);
                    break;
                } catch (ThrottlingException e) {
                    // Backoff and re-attempt checkpoint upon transient failures
                    if (i >= (PROCESSING_RETRIES_MAX - 1)) {
                        System.out.println("Checkpoint failed after " + (i + 1) + "attempts." + e);
                        break;
                    } else {
                        System.out.println("Transient issue when checkpointing - attempt " + (i + 1) + " of " + PROCESSING_RETRIES_MAX + e);
                    }
                } catch (InvalidStateException e) {
                    // This indicates an issue with the DynamoDB table (check for table, provisioned IOPS).
                    System.out.println("Cannot save checkpoint to the DynamoDB table used by the Amazon Kinesis Client Library." + e);
                    break;
                }
                try {
                    Thread.sleep(BACKOFF_TIME_IN_MILLIS);
                } catch (InterruptedException e) {
                    System.out.println("Interrupted sleep" + e);
                }
            }
        }
    }

    private static byte[] decrypt(final byte[] decoded, final byte[] decodedDataKey) throws IOException {
        // Create a JCE master key provider using the random key and an AES-GCM encryption algorithm
        final JceMasterKey masterKey = JceMasterKey.getInstance(new SecretKeySpec(decodedDataKey, "AES"),
                "BC", "DataKey", "AES/GCM/NoPadding");
        try (final CryptoInputStream<JceMasterKey> decryptingStream = CRYPTO.createDecryptingStream(masterKey, new ByteArrayInputStream(decoded));
             final ByteArrayOutputStream out = new ByteArrayOutputStream()) {
            IOUtils.copy(decryptingStream, out);
            return out.toByteArray();
        }
    }

    public static void main(String[] args) throws Exception {
        final String workerId = InetAddress.getLocalHost().getCanonicalHostName() + ":" + UUID.randomUUID();
        final KinesisClientLibConfiguration kinesisClientLibConfiguration =
                new KinesisClientLibConfiguration(APPLICATION_NAME, STREAM_NAME, CREDENTIALS_PROVIDER, workerId);
        kinesisClientLibConfiguration.withInitialPositionInStream(InitialPositionInStream.LATEST);
        kinesisClientLibConfiguration.withRegionName(REGION_NAME);
        final Worker worker = new Builder()
                .recordProcessorFactory(new RecordProcessorFactory())
                .config(kinesisClientLibConfiguration)
                .build();

        System.out.printf("Running %s to process stream %s as worker %s...\n", APPLICATION_NAME, STREAM_NAME, workerId);

        try {
            worker.run();
        } catch (Throwable t) {
            System.err.println("Caught throwable while processing data.");
            t.printStackTrace();
            System.exit(1);
        }
        System.exit(0);
    }

    private static byte[] getByteArray(final ByteBuffer b) {
        byte[] byteArray = new byte[b.remaining()];
        b.get(byteArray);
        return byteArray;
    }
}
```

------
#### [ Python ]

```
import base64
import json
import zlib
import aws_encryption_sdk
from aws_encryption_sdk import CommitmentPolicy
from aws_encryption_sdk.internal.crypto import WrappingKey
from aws_encryption_sdk.key_providers.raw import RawMasterKeyProvider
from aws_encryption_sdk.identifiers import WrappingAlgorithm, EncryptionKeyType
import boto3

REGION_NAME = '<region>'                    # us-east-1
RESOURCE_ID = '<external-resource-id>'      # db-ABCD123456
STREAM_NAME = 'aws-rds-das-' + RESOURCE_ID  # aws-rds-das-db-ABCD123456

enc_client = aws_encryption_sdk.EncryptionSDKClient(commitment_policy=CommitmentPolicy.FORBID_ENCRYPT_ALLOW_DECRYPT)

class MyRawMasterKeyProvider(RawMasterKeyProvider):
    provider_id = "BC"

    def __new__(cls, *args, **kwargs):
        obj = super(RawMasterKeyProvider, cls).__new__(cls)
        return obj

    def __init__(self, plain_key):
        RawMasterKeyProvider.__init__(self)
        self.wrapping_key = WrappingKey(wrapping_algorithm=WrappingAlgorithm.AES_256_GCM_IV12_TAG16_NO_PADDING,
                                        wrapping_key=plain_key, wrapping_key_type=EncryptionKeyType.SYMMETRIC)

    def _get_raw_key(self, key_id):
        return self.wrapping_key


def decrypt_payload(payload, data_key):
    my_key_provider = MyRawMasterKeyProvider(data_key)
    my_key_provider.add_master_key("DataKey")
    decrypted_plaintext, header = enc_client.decrypt(
        source=payload,
        materials_manager=aws_encryption_sdk.materials_managers.default.DefaultCryptoMaterialsManager(master_key_provider=my_key_provider))
    return decrypted_plaintext


def decrypt_decompress(payload, key):
    decrypted = decrypt_payload(payload, key)
    return zlib.decompress(decrypted, zlib.MAX_WBITS + 16)


def main():
    session = boto3.session.Session()
    kms = session.client('kms', region_name=REGION_NAME)
    kinesis = session.client('kinesis', region_name=REGION_NAME)

    response = kinesis.describe_stream(StreamName=STREAM_NAME)
    shard_iters = []
    for shard in response['StreamDescription']['Shards']:
        shard_iter_response = kinesis.get_shard_iterator(StreamName=STREAM_NAME, ShardId=shard['ShardId'],
                                                         ShardIteratorType='LATEST')
        shard_iters.append(shard_iter_response['ShardIterator'])

    while len(shard_iters) > 0:
        next_shard_iters = []
        for shard_iter in shard_iters:
            response = kinesis.get_records(ShardIterator=shard_iter, Limit=10000)
            for record in response['Records']:
                record_data = record['Data']
                record_data = json.loads(record_data)
                payload_decoded = base64.b64decode(record_data['databaseActivityEvents'])
                data_key_decoded = base64.b64decode(record_data['key'])
                data_key_decrypt_result = kms.decrypt(CiphertextBlob=data_key_decoded,
                                                      EncryptionContext={'aws:rds:db-id': RESOURCE_ID})
                print (decrypt_decompress(payload_decoded, data_key_decrypt_result['Plaintext']))
            if 'NextShardIterator' in response:
                next_shard_iters.append(response['NextShardIterator'])
        shard_iters = next_shard_iters


if __name__ == '__main__':
    main()
```

------

# IAM-Richtlinien-Beispiele für Datenbankaktivitäts-Streams
<a name="DBActivityStreams.ManagingAccess"></a>

Jeder Benutzer mit entsprechenden AWS Identity and Access Management (IAM-) Rollenberechtigungen für Datenbankaktivitätsstreams kann die Activity Stream-Einstellungen für eine erstellen, starten, beenden und ändern. Diese Aktionen sind im Prüfprotokoll des Streams enthalten. Um DBAs die Einhaltung von Vorschriften zu gewährleisten, empfehlen wir, dass Sie diese Rechte nicht gewähren.

Der Zugriff auf Datenbankaktivitäts-Streams wird mithilfe von IAM-Richtlinien festgelegt. Weitere Informationen zur Amazon-RDS-Authentifizierung finden Sie unter [Identity and Access Management für Amazon RDS](UsingWithRDS.IAM.md). Weitere Informationen zum Erstellen von IAM-Richtlinien finden Sie unter [Erstellen und Verwenden einer IAM-Richtlinie für den IAM-Datenbankzugriff](UsingWithRDS.IAMDBAuth.IAMPolicy.md). 

**Example Richtlinie zum Zulassen der Konfiguration von Datenbankaktivitäts-Streams**  
Um Benutzern einen präzisen Zugriff auf die Änderung von Aktivitäts-Streams zu ermöglichen, verwenden Sie die servicespezifischen Operationskontextschlüssel `rds:StartActivityStream` und `rds:StopActivityStream` in einer IAM-Richtlinie. Das folgende IAM-Richtlinienbeispiel ermöglicht es einem Benutzer oder einer Rolle, Aktivitäts-Streams zu konfigurieren.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ConfigureActivityStreams",
            "Effect": "Allow",
            "Action": [
                "rds:StartActivityStream",
                "rds:StopActivityStream"
            ],
            "Resource": "*"
        }
    ]
}
```

**Example Richtlinie zum Zulassen des Startens von Datenbankaktivitäts-Streams**  
Das folgende IAM-Richtlinienbeispiel ermöglicht es einem Benutzer oder einer Rolle, Aktivitäts-Streams zu starten.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":[
        {
            "Sid":"AllowStartActivityStreams",
            "Effect":"Allow",
            "Action":"rds:StartActivityStream",
            "Resource":"*"
        }
    ]
}
```

**Example Richtlinie zum Zulassen des Anhaltens von Datenbankaktivitäts-Streams**  
Das folgende IAM-Richtlinienbeispiel ermöglicht es einem Benutzer oder einer Rolle, Aktivitäts-Streams zu stoppen.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":[
        {
            "Sid":"AllowStopActivityStreams",
            "Effect":"Allow",
            "Action":"rds:StopActivityStream",
            "Resource":"*"
        }
     ]
}
```

**Example Richtlinie zum Ablehnen des Startens von Datenbankaktivitäts-Streams**  
Im folgenden IAM-Richtlinienbeispiel wird ein Benutzer oder eine Rolle daran gehindert, Aktivitäts-Streams zu starten.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":[
        {
            "Sid":"DenyStartActivityStreams",
            "Effect":"Deny",
            "Action":"rds:StartActivityStream",
            "Resource":"*"
        }
     ]
}
```

**Example Richtlinie zum Ablehnen des Anhaltens von Datenbankaktivitäts-Streams**  
Im folgenden IAM-Richtlinienbeispiel wird ein Benutzer oder eine Rolle daran gehindert, Aktivitäts-Streams zu stoppen.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":[
        {
            "Sid":"DenyStopActivityStreams",
            "Effect":"Deny",
            "Action":"rds:StopActivityStream",
            "Resource":"*"
        }
    ]
}
```