

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用資料庫活動串流來監控 Amazon RDS
<a name="DBActivityStreams"></a><a name="das"></a>

透過使用資料庫活動串流，您就可以監控資料庫活動的近乎即時的串流。

**Topics**
+ [資料庫活動串流概觀](#DBActivityStreams.Overview)
+ [設定 Oracle 資料庫的統一稽核](DBActivityStreams.configuring-auditing.md)
+ [設定 Amazon RDS for Microsoft SQL Server 的稽核政策](DBActivityStreams.configuring-auditing-SQLServer.md)
+ [開始資料庫活動串流](DBActivityStreams.Enabling.md)
+ [修改 Amazon RDS 的資料庫活動串流](DBActivityStreams.Modifying.md)
+ [取得資料庫活動串流的狀態](DBActivityStreams.Status.md)
+ [停用資料庫活動串流](DBActivityStreams.Disabling.md)
+ [監控資料庫活動串流](DBActivityStreams.Monitoring.md)
+ [資料庫活動串流的 IAM 政策範例](DBActivityStreams.ManagingAccess.md)

## 資料庫活動串流概觀
<a name="DBActivityStreams.Overview"></a>

作為 Amazon RDS 資料庫管理員，您需要保護資料庫並遵守合規與法規要求。其中一項策略是整合資料庫活動串流與監控工具。透過此方式，您可以監控 資料庫中的稽核活動，並設定警示。

外部和內部都有安全威脅。若要防範內部威脅，您可以設定資料庫活動串流功能來控制管理員對資料串流的存取。Amazon RDS 資料庫管理員沒有存取收集、傳輸、儲存和處理串流的權限。

**Contents**
+ [資料庫活動串流運作方式](#DBActivityStreams.Overview.how-they-work)
+ [在 Oracle 資料庫和 Microsoft SQL Server 資料庫中進行稽核](#DBActivityStreams.Overview.auditing)
  + [Oracle 資料庫中的統一稽核](#DBActivityStreams.Overview.unified-auditing)
  + [在 Microsoft SQL Server 中進行稽核](#DBActivityStreams.Overview.SQLServer-auditing)
  + [Oracle 資料庫和 SQL Server 的非原生稽核欄位](#DBActivityStreams.Overview.unified-auditing.non-native)
  + [資料庫參數群組覆寫](#DBActivityStreams.Overview.unified-auditing.parameter-group)
+ [資料庫活動串流的非同步模式](#DBActivityStreams.Overview.sync-mode)
+ [資料庫活動串流的要求與限制](#DBActivityStreams.Overview.requirements)
+ [區域和版本可用性](#DBActivityStreams.RegionVersionAvailability)
+ [支援資料庫活動串流的資料庫執行個體類別](#DBActivityStreams.Overview.requirements.classes)

### 資料庫活動串流運作方式
<a name="DBActivityStreams.Overview.how-they-work"></a>

 Amazon RDS 會近乎即時地將活動推送至 Amazon Kinesis 資料串流。系統會自動建立 Kinesis 串流。從 Kinesis，您可以設定 Amazon Data Firehose 和 等 AWS 服務 AWS Lambda ，以取用串流並存放資料。

**重要**  
 在 Amazon RDS 中使用資料庫活動串流功能是一項免費功能，但 Amazon Kinesis 會收取資料串流費用。如需詳細資訊，請參閱 [Amazon Kinesis Data Streams 定價](https://aws.amazon.com/kinesis/data-streams/pricing/)。

您可為合規管理設定應用程式以使用資料庫活動串流。這些應用程式可以使用串流來產生警示，並稽核您的 資料庫。

Amazon RDS 支援異地同步備份部署中的資料庫活動串流。於此狀況下，資料庫活動串流會同時稽核主執行個體和備用執行個體。

### 在 Oracle 資料庫和 Microsoft SQL Server 資料庫中進行稽核
<a name="DBActivityStreams.Overview.auditing"></a>

稽核是針對已設定的資料庫執行的監控和記錄動作。Amazon RDS 根據預設不會擷取資料庫活動。您可以自行在資料庫中建立和管理稽核政策。

**Topics**
+ [Oracle 資料庫中的統一稽核](#DBActivityStreams.Overview.unified-auditing)
+ [在 Microsoft SQL Server 中進行稽核](#DBActivityStreams.Overview.SQLServer-auditing)
+ [Oracle 資料庫和 SQL Server 的非原生稽核欄位](#DBActivityStreams.Overview.unified-auditing.non-native)
+ [資料庫參數群組覆寫](#DBActivityStreams.Overview.unified-auditing.parameter-group)

#### Oracle 資料庫中的統一稽核
<a name="DBActivityStreams.Overview.unified-auditing"></a>

在 Oracle 資料庫中，*統一稽核政策*是稽核設定的具名群組，您可以使用此群組來稽核使用者行為。政策可以簡單地稽核單個使用者的活動。您也可以建立使用條件的複雜稽核政策。

Oracle 資料庫會寫入稽核記錄，包括從 `SYS` 稽核記錄至*統一稽核權杖*，皆會記錄。例如，如果在 `INSERT` 陳述式期間發生錯誤，標準稽核會指出錯誤編號和所執行的 SQL。稽核權杖位於 `AUDSYS` 結構描述中的唯讀資料表中。若要存取這些記錄，可以查詢 `UNIFIED_AUDIT_TRAIL` 資料字典檢視。

一般而言，您可如下所示，設定資料庫活動串流：

1. 透過使用 `CREATE AUDIT POLICY` 命令，建立 Oracle 資料庫稽核政策。

   Oracle 資料庫會產生稽核記錄。

1. 透過使用 `AUDIT POLICY` 命令，啟用稽核政策。

1. 設定資料庫活動串流。

   只有符合 Oracle 資料庫稽核政策的活動才會被擷取，並傳送至 Amazon Kinesis Data Streams。在啟用資料庫活動串流時，Oracle 資料庫管理員無法變更稽核政策或移除稽核記錄。

若要進一步了解統一稽核政策，請參閱 *Oracle 資料庫安全指南*中的[關於使用統一稽核政策和稽核來稽核活動](https://docs.oracle.com/en/database/oracle/oracle-database/19/dbseg/configuring-audit-policies.html#GUID-2435D929-10AD-43C7-8A6C-5133170074D0)。

#### 在 Microsoft SQL Server 中進行稽核
<a name="DBActivityStreams.Overview.SQLServer-auditing"></a>

資料庫活動串流使用 SQLAudit 功能來稽核 SQL Server 資料庫。

RDS for SQL Server 執行個體包含下列項目：
+ 伺服器稽核 — SQL Server 稽核會收集伺服器或資料庫層級動作的單一執行個體，以及要監控的動作群組。伺服器層級稽核 `RDS_DAS_AUDIT` 和 `RDS_DAS_AUDIT_CHANGES` 由 RDS 管理。
+ 伺服器稽核規格 — 伺服器稽核規格會記錄伺服器層級事件。您可以修改 `RDS_DAS_SERVER_AUDIT_SPEC` 規格。此規格已連結至伺服器稽核 `RDS_DAS_AUDIT`。該 `RDS_DAS_CHANGES_AUDIT_SPEC` 規格由 RDS 管理。
+ 資料庫稽核規格 — 資料庫稽核規格會記錄資料庫層級事件。您可以建立資料庫稽核規格 `RDS_DAS_DB_<name>`，並將其連結至 `RDS_DAS_AUDIT` 伺服器稽核。

您可以使用主控台或 CLI 來設定資料庫活動串流。一般而言，您可如下所示，設定資料庫活動串流：

1. (選用) 使用 `CREATE DATABASE AUDIT SPECIFICATION` 命令建立資料庫稽核規格，並將其連結至 `RDS_DAS_AUDIT` 伺服器稽核。

1. (選用) 使用 `ALTER SERVER AUDIT SPECIFICATION` 命令修改伺服器稽核規格，並定義政策。

1. 啟用資料庫和伺服器稽核政策。例如：

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

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

1. 設定資料庫活動串流。

   只有符合該伺服器與資料庫稽核政策的活動才會被擷取，並傳送至 Amazon Kinesis Data Streams。在啟用資料庫活動串流且政策鎖定時，資料庫管理員無法變更稽核政策或移除稽核記錄。
**重要**  
若已啟用特定資料庫的資料庫稽核規格，且政策處於鎖定狀態，則無法捨棄該資料庫。

如需有關 SQL Server 稽核的詳細資訊，請參閱 *Microsoft SQL Server 文件*中的 [SQL Server 稽核元件](https://learn.microsoft.com/en-us/sql/relational-databases/security/auditing/sql-server-audit-database-engine?view=sql-server-ver16)。



#### Oracle 資料庫和 SQL Server 的非原生稽核欄位
<a name="DBActivityStreams.Overview.unified-auditing.non-native"></a>

在您啟動資料庫活動串流時，每個資料庫事件都會產生對應的活動串流事件。例如，資料庫使用者可能會執行 `SELECT` 和 `INSERT` 陳述式。資料庫會稽核這些事件，並將其傳送至 Amazon Kinesis Data Streams。

串流中的事件會以 JSON 物件表示。JSON 物件包含 `DatabaseActivityMonitoringRecord`，其中包含 `databaseActivityEventList` 陣列。陣列中的預先定義欄位包含 `class`、`clientApplication` 以及 `command`。

根據預設，活動串流不包含引擎原生稽核欄位。您可以設定 Amazon RDS for Oracle 和 Amazon RDS for Oracle，使其能在 `engineNativeAuditFields` JSON 物件中包含這些額外欄位。

在 Oracle 資料庫中，整合稽核權杖中的大部分事件都可映射至 RDS 資料活動串流中的欄位。例如，統一稽核中的 `UNIFIED_AUDIT_TRAIL.SQL_TEXT` 欄位會映射至資料庫活動串流中的 `commandText` 欄位。但是，如 `OS_USERNAME` 等 Oracle 資料庫稽核欄位，則不會映射到資料庫活動串流中的預先定義欄位。

在 SQL Server 中，SQLAudit 所記錄的大部分事件欄位都會對應至 RDS 資料庫活動串流的欄位。例如，稽核 `sys.fn_get_audit_file` 的 `code` 欄位會對應至資料庫活動串流的 `commandText` 欄位。但是，如 `permission_bitmask` 等 SQL Server 資料庫稽核欄位，則不會對應到資料庫活動串流中的預先定義欄位。

如需 databaseActivityEventList 的詳細資訊，請參閱 [適用於資料庫活動串流的 databaseActivityEventList JSON 陣列](DBActivityStreams.AuditLog.databaseActivityEventList.md)。

#### 資料庫參數群組覆寫
<a name="DBActivityStreams.Overview.unified-auditing.parameter-group"></a>

一般而言，您可以透過連接參數群組，在 RDS 中開啟統一稽核功能。但是，資料庫活動串流需要其他配置。為了改善您的客戶體驗，Amazon RDS 會執行下列內容：
+ 如果您啟用活動串流，則 RDS for Oracle 會忽略參數群組中的稽核參數。
+ 如果您停用活動串流，則 RDS for Oracle 會不再忽略稽核參數。

SQL Server 的資料庫活動串流與您在 SQL 稽核選項中設定的任何參數皆無關。

### 資料庫活動串流的非同步模式
<a name="DBActivityStreams.Overview.sync-mode"></a>

Amazon RDS 中的活動串流始終為非同步。在資料庫工作階段產生活動串流事件時，工作階段會立即傳回正常的活動。Amazon RDS 會在背景中將活動串流事件變成耐久的記錄。

如果在背景任務中發生錯誤，Amazon RDS 就會產生事件。此事件會指出活動串流事件記錄可能遺失的任何時段的開頭和結尾。非同步模式對資料庫效能的幫助較大，對活動串流精準度的幫助較小。

### 資料庫活動串流的要求與限制
<a name="DBActivityStreams.Overview.requirements"></a>

在 RDS 中，資料庫活動串流具有以下要求和限制：
+ 資料庫活動串流需要使用 Amazon Kinesis。
+ AWS Key Management Service 資料庫活動串流需要 (AWS KMS)，因為它們一律會加密。
+ 將其他加密套用至 Amazon Kinesis 資料串流與已使用 AWS KMS 金鑰加密的資料庫活動串流不相容。
+ 您可自行建立和管理稽核政策。與 Amazon Aurora 不同，根據預設，RDS for Oracle 不會擷取資料庫活動。
+ 您可自行建立和管理稽核政策或規格。與 Amazon Aurora 不同，根據預設，Amazon RDS 不會擷取資料庫活動。
+ 於異地同步備份部署中，僅於主要資料庫執行個體上啟動資料庫活動串流。活動串流會自動稽核主資料庫執行個體和備用資料庫執行個體。容錯移轉期間不需要執行其他步驟。
+ 重新命名資料庫執行個體並不會建立新的 Kinesis 串流。
+ RDS for Oracle 不支援 CDB。
+ 不支援僅供讀取複本。

### 區域和版本可用性
<a name="DBActivityStreams.RegionVersionAvailability"></a>

每個資料庫引擎的特定版本以及 AWS 區域的功能可用性和支援各自不同。如需有關資料庫活動串流版本和區域可用性的詳細資訊，請參閱 [支援 Amazon RDS 中資料庫活動串流的區域和資料庫引擎](Concepts.RDS_Fea_Regions_DB-eng.Feature.DBActivityStreams.md)。

### 支援資料庫活動串流的資料庫執行個體類別
<a name="DBActivityStreams.Overview.requirements.classes"></a>

針對 RDS for Oracle,您可以搭配下列資料庫執行個體類別來使用資料庫活動串流：
+ db.m4.\*large
+ db.m5.\*large
+ db.m5d.\*large
+ db.m6i.\*large
+ db.r4.\*large
+ db.r5.\*large
+ db.r5.\*large.tpc\*.mem\*x
+ db.r5b.\*large
+ db.r5b.\*large.tpc\*.mem\*x
+ db.r5d.\*large
+ db.r6i.\*large
+ db.r6i.\*large.tpc\*.mem\*x
+ db.x2idn.\*large
+ db.x2iedn.\*large
+ db.x2iezn.\*large
+ db.z1d.\*large

針對 RDS for SQL Server,您可以搭配下列資料庫執行個體類別來使用資料庫活動串流：
+ db.m4.\*large
+ db.m5.\*large
+ db.m5d.\*large
+ db.m6i.\*large
+ db.r4.\*large
+ db.r5.\*large
+ db.r5b.\*large
+ db.r5d.\*large
+ db.r6i.\*large
+ db.x1e.\*large
+ db.x2iedn.\*large
+ db.z1d.\*large

如需執行個體類別類型的詳細資訊，請參閱[ 資料庫執行個體類別](Concepts.DBInstanceClass.md)。