

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Memantau aliran aktivitas basis data
<a name="DBActivityStreams.Monitoring"></a>

Aliran aktivitas basis data memantau dan melaporkan aktivitas. Aliran aktivitas dikumpulkan dan dikirim ke Amazon Kinesis. Dari Kinesis, Anda dapat memantau aliran aktivitas, atau layanan dan aplikasi lain dapat menggunakan aliran aktivitas untuk analisis lebih lanjut. Anda dapat menemukan nama aliran Kinesis yang mendasarinya dengan menggunakan AWS CLI perintah atau operasi. RDS API 

 mengelola aliran Kinesis untuk Anda sebagai berikut:
+  membuat aliran Kinesis secara otomatis dengan periode retensi 24 jam. 
+  menskalakan aliran Kinesis jika perlu. 
+  Jika Anda menghentikan aliran aktivitas database atau menghapus instans DB, menghapus aliran Kinesis. 

Kategori-kategori aktivitas berikut dipantau dan dimasukkan ke dalam log audit aliran aktivitas:
+ **SQLperintah** — Semua SQL perintah diaudit, dan juga pernyataan yang disiapkan, fungsi bawaan, dan fungsi di SQL PL/. Panggilan ke prosedur tersimpan akan diaudit. Setiap SQL pernyataan yang dikeluarkan dalam prosedur atau fungsi yang disimpan juga diaudit.
+ **Informasi database lainnya** — Aktivitas yang dipantau mencakup SQL pernyataan lengkap, jumlah baris baris yang terpengaruh dari DML perintah, objek yang diakses, dan nama database yang unik. Aliran aktivitas database juga memantau variabel pengikat dan parameter prosedur yang disimpan. 
**penting**  
SQLTeks lengkap dari setiap pernyataan terlihat di log audit aliran aktivitas, termasuk data sensitif apa pun. Namun, kata sandi pengguna database disunting jika Oracle dapat menentukannya dari konteks, seperti dalam pernyataan berikut. SQL   

  ```
  ALTER ROLE role-name WITH password
  ```
+ **Informasi koneksi** – Aktivitas yang dipantau mencakup sesi dan informasi jaringan, ID proses server, dan kode keluar.

Jika aliran aktivitas mengalami kegagalan saat memantau instans DB Anda, Anda akan diberi tahu melalui RDS acara.

Di bagian berikut, Anda dapat mengakses, mengaudit, dan memproses aliran aktivitas basis data.

**Topics**
+ [Mengakses aliran aktivitas dari Amazon Kinesis](DBActivityStreams.KinesisAccess.md)
+ [Audit isi log dan contoh untuk aliran aktivitas database](DBActivityStreams.AuditLog.md)
+ [databaseActivityEventDaftar array JSON untuk aliran aktivitas database](DBActivityStreams.AuditLog.databaseActivityEventList.md)
+ [Memproses aliran aktivitas database menggunakan AWS SDK](DBActivityStreams.CodeExample.md)

# Mengakses aliran aktivitas dari Amazon Kinesis
<a name="DBActivityStreams.KinesisAccess"></a>

Saat Anda mengaktifkan aliran aktivitas untuk basis data, aliran Kinesis dibuat untuk Anda. Dari Kinesis, Anda dapat memantau aktivitas basis data Anda secara waktu nyata. Untuk menganalisis lebih lanjut aktivitas basis data, Anda dapat menghubungkan aliran Kinesis dengan aplikasi konsumen. Anda juga dapat menghubungkan aliran ke aplikasi manajemen kepatuhan seperti  SecureSphere Database Imperva.

Anda dapat mengakses aliran Kinesis Anda baik dari RDS konsol atau konsol Kinesis.

**Untuk mengakses aliran aktivitas dari Kinesis menggunakan konsol RDS**

1. Buka RDS konsol Amazon di [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Di panel navigasi, pilih **Basis Data**.

1. Pilih instance RDS database Amazon tempat Anda memulai aliran aktivitas.

1. Pilih **Konfigurasi**.

1. Di bawah **Aliran aktivitas basis data**, pilih tautan di bawah **Aliran Kinesis**.

1. Di konsol Kinesis, pilih **Pemantauan** untuk mulai mengamati aktivitas basis data.

**Untuk mengakses aliran aktivitas dari Kinesis dengan menggunakan konsol Kinesis**

1. Buka konsol Kinesis di [https://console.aws.amazon.com/kinesis](https://console.aws.amazon.com/kinesis).

1. Pilih aliran aktivitas Anda dari daftar aliran Kinesis.

   Nama aliran aktivitas mencakup awalan `aws-rds-das-db-` diikuti dengan ID sumber daya basis data. Berikut sebuah contohnya. 

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

   Untuk menggunakan RDS konsol Amazon untuk menemukan ID sumber daya untuk database, pilih instans DB dari daftar database, lalu pilih tab **Konfigurasi**.

   Untuk menggunakan AWS CLI untuk menemukan nama aliran Kinesis lengkap untuk aliran aktivitas, gunakan CLIpermintaan dan catat nilai `ActivityStreamKinesisStreamName` dalam respons.

1. Pilih **Pemantauan** untuk mulai mengamati aktivitas basis data.

Lihat informasi yang lebih lengkap tentang penggunaan Amazon Kinesis di [Apakah Amazon Kinesis Data Streams?](https://docs.aws.amazon.com/streams/latest/dev/introduction.html).

# Audit isi log dan contoh untuk aliran aktivitas database
<a name="DBActivityStreams.AuditLog"></a>

Peristiwa-peristiwa yang dipantau disajikan dalam aliran aktivitas basis data berupa string JSON. Strukturnya terdiri atas objek JSON yang berisi `DatabaseActivityMonitoringRecord`, yang selanjutnya berisi sebuah array peristiwa aktivitas `databaseActivityEventList`. 

**catatan**  
Untuk aliran aktivitas database, array `paramList` JSON tidak menyertakan nilai null dari aplikasi Hibernate.

**Topics**
+ [Contoh-contoh log audit untuk aliran aktivitas](#DBActivityStreams.AuditLog.Examples)
+ [DatabaseActivityMonitoringRecords Objek JSON](#DBActivityStreams.AuditLog.DatabaseActivityMonitoringRecords)
+ [databaseActivityEvents Objek JSON](#DBActivityStreams.AuditLog.databaseActivityEvents)

## Contoh-contoh log audit untuk aliran aktivitas
<a name="DBActivityStreams.AuditLog.Examples"></a>

Berikut adalah contoh log audit JSON terdekripsi dari catatan peristiwa aktivitas.

**Example Catatan peristiwa aktivitas dari**  
Catatan peristiwa aktivitas berikut menunjukkan upaya masuk dengan penggunaan pernyataan SQL `CONNECT` (`command`) oleh JDBC Thin Client (`clientApplication`) untuk basis data Oracle Anda.  

```
{
    "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
    }
}
```
Catatan peristiwa aktivitas berikut menunjukkan kegagalan upaya masuk untuk basis data SQL Server Anda.  

```
{
    "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"
            }
        }
    ]
}
```
Jika aliran aktivitas basis data tidak diaktifkan, maka bidang terakhir dalam dokumen JSON adalah `"engineNativeAuditFields": { }`. 

**Example Catatan peristiwa aktivitas pernyataan CREATE TABLE**  
Contoh berikut menunjukkan peristiwa `CREATE TABLE` untuk basis data Oracle Anda.  

```
{
    "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
    }
}
```
Contoh berikut menunjukkan peristiwa `CREATE TABLE` untuk basis data SQL Server Anda.  

```
{
    "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 Catatan peristiwa aktivitas pernyataan SELECT**  
Contoh berikut menunjukkan peristiwa `SELECT` untuk basis data Oracle Anda.  

```
{
    "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
    }
}
```
Contoh berikut menunjukkan peristiwa `SELECT` untuk basis data SQL Server Anda.  

```
{
    "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 Objek JSON
<a name="DBActivityStreams.AuditLog.DatabaseActivityMonitoringRecords"></a>

Catatan peristiwa aktivitas basis data berada dalam objek JSON yang berisi informasi berikut.


****  

| Bidang JSON | Tipe data | Deskripsi | 
| --- | --- | --- | 
|  `type`  | string |  Jenis catatan JSON. Nilainya adalah `DatabaseActivityMonitoringRecords`.  | 
| version | string |  Versi catatan pemantauan aktivitas basis data. Basis data Oracle menggunakan versi 1.3 dan SQL Server menggunakan versi 1.4. Versi-versi mesin ini memperkenalkan objek JSON engineNativeAuditFields.  | 
|  [databaseActivityEvents](#DBActivityStreams.AuditLog.databaseActivityEvents)  | string |  Objek JSON yang berisi peristiwa aktivitas.  | 
| kunci | string | Kunci enkripsi yang Anda gunakan untuk mendekripsi [databaseActivityEventDaftar array JSON](DBActivityStreams.AuditLog.databaseActivityEventList.md)  | 

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

Objek JSON `databaseActivityEvents` berisi informasi berikut.

### Bidang-bidang tingkat atas dalam catatan JSON
<a name="DBActivityStreams.AuditLog.topLevel"></a>

 Setiap peristiwa dalam log audit dibungkus dalam sebuah catatan dalam format JSON. Catatan ini berisi bidang-bidang berikut. 

**tipe**  
 Bidang ini selalu memiliki nilai `DatabaseActivityMonitoringRecords`. 

**versi**  
 Bidang ini mewakili versi protokol atau kontrak data aliran aktivitas basis data. Versi menentukan bidang-bidang yang tersedia.

**databaseActivityEvents**  
 String terenkripsi yang mewakili satu atau beberapa peristiwa aktivitas. String disajikan berupa array byte base64. Saat Anda mendekripsi string, hasilnya adalah catatan dalam format JSON dengan bidang-bidang seperti ditunjukkan dalam contoh di bagian ini.

**kunci**  
 Kunci data terenkripsi yang digunakan untuk mengenkripsi string `databaseActivityEvents`. Ini sama dengan AWS KMS key yang Anda berikan saat memulai aliran aktivitas database.

 Contoh berikut menunjukkan format catatan ini.

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

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

Lakukan langkah-langkah berikut untuk mendekripsi konten bidang `databaseActivityEvents`:

1.  Lakukan dekripsi nilai dalam bidang JSON `key` dengan menggunakan kunci KMS yang Anda sediakan ketika memulai aliran aktivitas basis data. Melakukan hal itu akan menghasilkan kunci enkripsi data berupa teks jelas. 

1.  Base64 mendekode nilai dalam bidang JSON `databaseActivityEvents` untuk mendapatkan teks sandi, dalam format biner, dari Panduan Referensi audit. 

1.  Lakukan dekripsi teks sandi biner dengan kunci enkripsi data yang Anda dekode pada langkah pertama. 

1.  Lakukan dekompresi Panduan Referensi yang terdekripsi. 
   +  Muatan terenkripsi ada di bidang `databaseActivityEvents`. 
   +  Bidang `databaseActivityEventList` berisi array catatan audit. Bidang `type` dalam array dapat berupa `record` atau `heartbeat`. 

Catatan peristiwa aktivitas log audit adalah objek JSON yang berisi informasi berikut.


****  

| Bidang JSON | Tipe data | Deskripsi | 
| --- | --- | --- | 
|  `type`  | string |  Jenis catatan JSON. Nilainya adalah `DatabaseActivityMonitoringRecord`.  | 
| instanceId | string | Pengidentifikasi sumber daya instans basis data. Pengidentifikasi ini berkaitan dengan atribut instans basis data DbiResourceId. | 
|  [databaseActivityEventDaftar array JSON](DBActivityStreams.AuditLog.databaseActivityEventList.md)   | string |  Array catatan audit aktivitas atau pesan heartbeat.  | 

# databaseActivityEventDaftar array JSON untuk aliran aktivitas database
<a name="DBActivityStreams.AuditLog.databaseActivityEventList"></a>

Muatan log audit adalah array JSON `databaseActivityEventList` terenkripsi. tabel berikut memerinci secara alfabetis bidang-bidang untuk setiap peristiwa aktivitas dalam array `DatabaseActivityEventList` terdekripsi sebuah log audit. 

Ketika pengauditan terpadu diaktifkan di Oracle Database, catatan audit diisi dalam jejak audit baru ini. Tampilan `UNIFIED_AUDIT_TRAIL` memperlihatkan catatan audit dalam bentuk tabel dengan mengambil catatan audit dari jejak audit. Ketika Anda memulai aliran aktivitas basis data, kolom di `UNIFIED_AUDIT_TRAIL` memeta ke sebuah bidang di dalam array `databaseActivityEventList`.

**penting**  
Struktur peristiwa dapat berubah sewaktu-waktu. Amazon RDS mungkin menambahkan bidang-bidang baru ke peristiwa aktivitas di masa mendatang. Dalam aplikasi yang menguraikan data JSON, pastikan bahwa kode Anda dapat mengabaikan atau mengambil tindakan yang tepat untuk nama-nama bidang yang tidak dikenal. 

## databaseActivityEventDaftar bidang untuk Amazon RDS for Oracle
<a name="DBActivityStreams.AuditLog.databaseActivityEventList.ro"></a>

Berikut ini adalah `databaseActivityEventList` bidang untuk Amazon RDS for Oracle.


| Field | Tipe data | Sumber | Deskripsi | 
| --- | --- | --- | --- | 
|  `class`  |  string  |  Kolom `AUDIT_TYPE` dalam `UNIFIED_AUDIT_TRAIL`  |  Kelas peristiwa aktivitas. Hal berkaitan dengan kolom `AUDIT_TYPE` dalam tampilan `UNIFIED_AUDIT_TRAIL`. Nilai valid untuk Amazon RDS for Oracle adalah sebagai berikut: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/UserGuide/DBActivityStreams.AuditLog.databaseActivityEventList.html) Lihat informasi yang lebih lengkap di [UNIFIED\$1AUDIT\$1TRAIL](https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/UNIFIED_AUDIT_TRAIL.html#GUID-B7CE1C02-2FD4-47D6-80AA-CF74A60CDD1D) dalam dokumentasi Oracle.  | 
|  `clientApplication`  |  string  |  `CLIENT_PROGRAM_NAME` di `UNIFIED_AUDIT_TRAIL`  |  Aplikasi yang digunakan klien untuk menghubungi seperti dilaporkan oleh klien. Klien tidak wajib memberikan informasi ini, sehingga nilainya dapat null. Nilai sampel adalah `JDBC Thin Client`.  | 
|  `command`  |  string  |  Kolom `ACTION_NAME` dalam `UNIFIED_AUDIT_TRAIL`  |  Nama tindakan yang dieksekusi oleh pengguna. Untuk memahami tindakan lengkap, baca baik nama perintah maupun nilai `AUDIT_TYPE`. Nilai sampel adalah `ALTER DATABASE`.  | 
|  `commandText`  |  string  |  Kolom `SQL_TEXT` dalam `UNIFIED_AUDIT_TRAIL`  |  Pernyataan SQL yang terkait dengan peristiwa. Nilai sampel adalah `ALTER DATABASE BEGIN BACKUP`.  | 
|  `databaseName`  |  string  |  Kolom `NAME` dalam `V$DATABASE`  |  Nama basis data.  | 
|  `dbid`  |  nomor  |  Kolom `DBID` dalam `UNIFIED_AUDIT_TRAIL`  |  Pengidentifikasi numerik untuk basis data. Nilai sampel adalah `1559204751`.  | 
|  `dbProtocol`  |  string  |  N/A  |  Protokol basis data. Dalam beta ini, nilainya adalah `oracle`.  | 
|  `dbUserName`  |  string  |  Kolom `DBUSERNAME` dalam `UNIFIED_AUDIT_TRAIL`  |  Nama pengguna basis data yang tindakannya diaudit. Nilai sampel adalah `RDSADMIN`.  | 
|  `endTime`  |  string  |  N/A  |  Bidang ini tidak digunakan untuk RDS for Oracle dan selalu null.  | 
|  `engineNativeAuditFields`  |  objek  |  `UNIFIED_AUDIT_TRAIL`  |  Secara default, objek ini kosong. Ketika Anda memulai aliran aktivitas dengan opsi `--engine-native-audit-fields-included`, objek ini meliputi kolom-kolom berikut dan nilai-nilainya: <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> Lihat informasi yang lebih lengkap di [UNIFIED\$1AUDIT\$1TRAIL](https://docs.oracle.com/database/121/REFRN/GUID-B7CE1C02-2FD4-47D6-80AA-CF74A60CDD1D.htm#REFRN29162) dalam dokumentasi Oracle Database.  | 
|  `errorMessage`  |  string  |  N/A  |  Bidang ini tidak digunakan untuk RDS for Oracle dan selalu null.  | 
|  `exitCode`  |  nomor  |  Kolom `RETURN_CODE` dalam `UNIFIED_AUDIT_TRAIL`  |  Kode kesalahan Oracle Database yang dihasilkan oleh tindakan. Jika tindakan berhasil, nilainya adalah `0`.  | 
|  `logTime`  |  string  |  Kolom `EVENT_TIMESTAMP_UTC` dalam `UNIFIED_AUDIT_TRAIL`  |  Stempel waktu pembuatan entri jejak audit. Nilai sampel adalah `2020-11-27 06:56:14.981404`.  | 
|  `netProtocol`  |  string  |  Kolom `AUTHENTICATION_TYPE` dalam `UNIFIED_AUDIT_TRAIL`  |  Protokol komunikasi jaringan. Nilai sampel adalah `TCP`.  | 
|  `objectName`  |  string  |  Kolom `OBJECT_NAME` dalam `UNIFIED_AUDIT_TRAIL`  |  Nama objek yang terpengaruh oleh tindakan. Nilai sampel adalah `employees`.  | 
|  `objectType`  |  string  |  Kolom `OBJECT_SCHEMA` dalam `UNIFIED_AUDIT_TRAIL`  |  Nama skema dari objek yang terpengaruh oleh tindakan. Nilai sampel adalah `hr`.  | 
|  `paramList`  |  daftar  |  Kolom `SQL_BINDS` dalam `UNIFIED_AUDIT_TRAIL`  |  Daftar variabel pengikat, jika ada, yang terkait dengan `SQL_TEXT`. Nilai sampel adalah `parameter_1,parameter_2`.  | 
|  `pid`  |  nomor  |  Kolom `OS_PROCESS` dalam `UNIFIED_AUDIT_TRAIL`  |  Pengidentifikasi proses sistem operasi dari proses basis data Oracle. Nilai sampel adalah `22396`.  | 
|  `remoteHost`  |  string  |  Kolom `AUTHENTICATION_TYPE` dalam `UNIFIED_AUDIT_TRAIL`  |  Alamat IP klien atau nama host tempat sesi dibangkitkan. Nilai sampel adalah `123.456.789.123`.  | 
|  `remotePort`  |  string  |  Kolom `AUTHENTICATION_TYPE` dalam `UNIFIED_AUDIT_TRAIL`  |  Nomor port klien. Nilai yang lazim di lingkungan Oracle Database adalah `1521`.  | 
|  `rowCount`  |  nomor  |  N/A  |  Bidang ini tidak digunakan untuk RDS for Oracle dan selalu null.  | 
|  `serverHost`  |  string  |  Host basis data  |  Alamat IP host server basis data. Nilai sampel adalah `123.456.789.123`.  | 
|  `serverType`  |  string  |  N/A  |  Jenis server basis data. Nilainya selalu `ORACLE`.  | 
|  `serverVersion`  |  string  |  Host basis data  |  Versi Amazon RDS for Oracle, Pembaruan Rilis (RU), dan Revisi Pembaruan Rilis (RUR). Nilai sampel adalah `19.0.0.0.ru-2020-01.rur-2020-01.r1.EE.3`.  | 
|  `serviceName`  |  string  |  Host basis data  |  Nama layanan. Nilai sampel adalah `oracle-ee`.   | 
|  `sessionId`  |  nomor  |  Kolom `SESSIONID` dalam `UNIFIED_AUDIT_TRAIL`  |  Pengidentifikasi sesi audit. Contohnya adalah `1894327130`.  | 
|  `startTime`  |  string  |  N/A  |  Bidang ini tidak digunakan untuk RDS for Oracle dan selalu null.  | 
|  `statementId`  |  nomor  |  Kolom `STATEMENT_ID` dalam `UNIFIED_AUDIT_TRAIL`  |  ID numerik untuk setiap eksekusi pernyataan. Sebuah pernyataan dapat menyebabkan banyak tindakan. Nilai sampel adalah `142197`.  | 
|  `substatementId`  |  N/A  |  N/A  |  Bidang ini tidak digunakan untuk RDS for Oracle dan selalu null.  | 
|  `transactionId`  |  string  |  Kolom `TRANSACTION_ID` dalam `UNIFIED_AUDIT_TRAIL`  |  Pengidentifikasi transaksi yang mengubah objek. Nilai sampel adalah `02000800D5030000`.  | 

## databaseActivityEventDaftar bidang untuk Amazon RDS for SQL Server
<a name="DBActivityStreams.AuditLog.databaseActivityEventList.rss"></a>

Berikut ini adalah `databaseActivityEventList` bidang untuk Amazon RDS for SQL Server.


| Field | Tipe data | Sumber | Deskripsi | 
| --- | --- | --- | --- | 
|  `class`  |  string  |  ` sys.fn_get_audit_file.class_type` dipetakan ke `sys.dm_audit_class_type_map.class_type_desc`  |  Kelas peristiwa aktivitas. Lihat informasi yang lebih lengkap di [SQL Server Audit (Database Engine)](https://learn.microsoft.com/en-us/sql/relational-databases/security/auditing/sql-server-audit-database-engine?view=sql-server-ver16) dalam dokumentasi Microsoft.  | 
|  `clientApplication`  |  string  |  `sys.fn_get_audit_file.application_name`  |  Aplikasi yang dihubung klien seperti dilaporkan oleh klien (SQL Server versi 14 dan lebih tinggi). Bidang ini null di SQL Server versi 13.  | 
|  `command`  |  string  |  `sys.fn_get_audit_file.action_id` dipetakan ke `sys.dm_audit_actions.name`  |  Kategori umum pernyataan SQL. Nilai untuk bidang ini bergantung pada nilai kelas.  | 
|  `commandText`  |  string  |  `sys.fn_get_audit_file.statement`  |  Bidang ini menunjukkan pernyataan SQL.  | 
|  `databaseName`  |  string  |  `sys.fn_get_audit_file.database_name`  |  Nama basis data.  | 
|  `dbProtocol`  |  string  |  N/A  |  Protokol basis data. Nilai ini adalah `SQLSERVER`.  | 
|  `dbUserName`  |  string  |  `sys.fn_get_audit_file.server_principal_name`  |  Pengguna basis data untuk autentikasi klien.  | 
|  `endTime`  |  string  |  N/A  |  Bidang ini tidak digunakan oleh Amazon RDS for SQL Server dan nilainya null.  | 
|  `engineNativeAuditFields`  |  objek  |  Setiap bidang `sys.fn_get_audit_file` yang tidak tercantum dalam kolom ini.  |  Secara default, objek ini kosong. Ketika Anda memulai aliran aktivitas dengan opsi `--engine-native-audit-fields-included`, objek ini menyertakan bidang-bidang audit mesin asli lainnya, yang tidak dihasilkan oleh peta JSON ini.  | 
|  `errorMessage`  |  string  |  N/A  |  Bidang ini tidak digunakan oleh Amazon RDS for SQL Server dan nilainya null.  | 
|  `exitCode`  |  integer  |  `sys.fn_get_audit_file.succeeded`  |  Menunjukkan apakah tindakan yang memulai peristiwa berhasil. Bidang ini tidak boleh bernilai null. Untuk semua peristiwa selain upaya masuk, bidang ini melaporkan apakah pemeriksaan izin berhasil atau gagal, tetapi tidak apakah operasi berhasil atau gagal. Nilai-nilai meliputi: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/UserGuide/DBActivityStreams.AuditLog.databaseActivityEventList.html)  | 
|  `logTime`  |  string  |  `sys.fn_get_audit_file.event_time`  |  Stempel waktu peristiwa yang dicatat oleh SQL Server.  | 
|  `netProtocol`  |  string  |  N/A  |  Bidang ini tidak digunakan oleh Amazon RDS for SQL Server dan nilainya null.  | 
|  `objectName`  |  string  |  `sys.fn_get_audit_file.object_name`  |  Nama objek basis data jika pernyataan SQL beroperasi pada objek.  | 
|  `objectType`  |  string  |  `sys.fn_get_audit_file.class_type` dipetakan ke `sys.dm_audit_class_type_map.class_type_desc`  |  Jenis objek basis data jika pernyataan SQL beroperasi pada jenis objek.  | 
|  `paramList`  |  string  |  N/A  |  Bidang ini tidak digunakan oleh Amazon RDS for SQL Server dan nilainya null.  | 
|  `pid`  |  integer  |  N/A  |  Bidang ini tidak digunakan oleh Amazon RDS for SQL Server dan nilainya null.  | 
|  `remoteHost`  |  string  |  `sys.fn_get_audit_file.client_ip`  |  Alamat IP atau nama host klien yang menerbitkan pernyataan SQL (SQL Server versi 14 dan lebih tinggi). Bidang ini null di SQL Server versi 13.  | 
|  `remotePort`  |  integer  |  N/A  |  Bidang ini tidak digunakan oleh Amazon RDS for SQL Server dan nilainya null.  | 
|  `rowCount`  |  integer  |  `sys.fn_get_audit_file.affected_rows`  |  Jumlah baris tabel yang terpengaruh oleh pernyataan SQL (SQL Server versi 14 dan lebih tinggi). Bidang ini ada di SQL Server versi 13.  | 
|  `serverHost`  |  string  |  Host Basis Data  |  Alamat IP server basis data host.  | 
|  `serverType`  |  string  |  N/A  |  Jenis server basis data. Nilainya adalah `SQLSERVER`.  | 
|  `serverVersion`  |  string  |  Host Basis Data  |  Versi server basis data, misalnya, 15.00.4073.23.v1.r1 untuk SQL Server 2017.  | 
|  `serviceName`  |  string  |  Host Basis Data  |  Nama layanan. Contoh nilai adalah `sqlserver-ee`.  | 
|  `sessionId`  |  integer  |  `sys.fn_get_audit_file.session_id`  |  Pengidentifikasi unik sesi.  | 
|  `startTime`  |  string  |  N/A  |  Bidang ini tidak digunakan oleh Amazon RDS for SQL Server dan nilainya null.  | 
|  `statementId`  |  string  |  `sys.fn_get_audit_file.sequence_group_id`  |  Pengidentifikasi unik untuk pernyataan SQL klien. Pengidentifikasi berbeda untuk setiap peristiwa yang dihasilkan. Nilai sampel adalah `0x38eaf4156267184094bb82071aaab644`.  | 
|  `substatementId`  |  integer  |  `sys.fn_get_audit_file.sequence_number`  |  Pengidentifikasi untuk menentukan nomor urut untuk pernyataan. Pengidentifikasi ini membantu ketika catatan yang besar dibagi menjadi beberapa catatan.  | 
|  `transactionId`  |  integer  |  `sys.fn_get_audit_file.transaction_id`  |  Pengidentifikasi transaksi. Jika tidak ada transaksi aktif, nilainya nol.  | 
|  `type`  |  string  |  Aliran aktivitas basis data yang dihasilkan  |  Jenis peristiwa. Nilai-nilainya adalah `record` atau `heartbeat`.  | 

# Memproses aliran aktivitas database menggunakan AWS SDK
<a name="DBActivityStreams.CodeExample"></a>

Anda dapat memproses aliran aktivitas secara terprogram dengan menggunakan file. AWS SDK Berikut adalah contoh Java dan Python yang berfungsi penuh tentang penggunaan catatan Aliran Aktivitas Basis Data untuk pengaktifan berbasis instans.

------
#### [ 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()
```

------