如何在 Amazon Redshift 叢集上執行資料庫稽核?
簡短描述
Amazon Redshift 提供三種記錄選項:
稽核日誌和 STL 資料表會記錄資料庫層級活動,例如哪些使用者登入以及何時登入。這些資料表也會記錄這些使用者執行的 SQL 活動以及執行時間。CloudTrail 會追蹤在服務層級執行的活動。
**注意:**若要使用外部資料表檢視日誌,請使用 Amazon Redshift Spectrum。如需詳細資訊,請參閱使用 Amazon Redshift Spectrum 分析資料庫稽核日誌的安全性和合規性。
解決方法
稽核日誌和 STL 資料表
下表比較稽核日誌和 STL 資料表。選擇適合您的使用案例的記錄選項。
| |
---|
稽核日誌 | STL 資料表 |
必須啟用。若要啟用稽核記錄,請按照使用主控台設定稽核或使用 Amazon Redshift CLI 和 API 設定記錄的步驟進行操作。 | 在資料倉儲叢集中的每個節點上自動提供。 |
除非您定義 Amazon S3 生命週期規則以自動封存或刪除檔案,否則稽核日誌檔案會無限期儲存。如需詳細資訊,請參閱對象生命週期管理。 | 日誌歷史記錄會儲存兩到五天,視日誌用量和可用磁碟空間而定。若要延長保留期,請使用 GitHub 上 AWS 實驗室中的 Amazon Redshift 系統對象持續性公用程式。 |
存取稽核日誌檔案不需要存取 Amazon Redshift 資料庫。 | 存取 STL 資料表需要存取 Amazon Redshift 資料庫。 |
檢閱 Amazon S3 中儲存的日誌不需要資料庫運算資源。 | 針對 STL 資料表執行查詢需要資料庫運算資源,就像執行其他查詢一樣。 |
使用時間戳記,您可以將程序 ID 與資料庫活動關聯。叢集重新啟動不會影響 Amazon S3 中的稽核日誌。 | 並非總是可以將程序 ID 與資料庫活動關聯,因為叢集重新啟動時可能會回收程序 ID。 |
將資訊儲存在下列日誌檔案中: | |
- 連線日誌
- 使用者日誌
- 使用者活動日誌 **注意:**您必須為使用者活動日誌啟用 enable_user_activity_logging 資料庫參數。如需詳細資訊,請參閱啟用記錄。
| 將資訊儲存在多個資料表中。使用下列資料表來檢閱與 S3 稽核日誌中儲存的內容類似的資訊:
- SVL_STATEMENTTEXT: 提供已在系統上執行的 SQL 命令的完整記錄。合併 STL_DDLTEXT、STL_QUERYTEXT 和 STL_UTILITYTEXT 資料表中的所有資料列。
- STL_CONNECTION_LOG: 日誌身分驗證嘗試、連線或中斷連線。
|
| 記錄使用者活動日誌中的所有 SQL 陳述式。| 執行的查詢都會記錄在 STL_QUERY 中。DDL 陳述式會記錄在 STL_DDLTEXT 中。非 SELECT SQL 命令的文字會記錄在 STL_UTILITYTEXT 中。|
| Amazon Redshift 收到陳述式後會立即予以記錄。Amazon S3 上的檔案會以批次方式更新,可能需要幾小時才會顯示。| 每個 SQL 陳述式執行後都產生日誌。|
| 記錄誰執行了什麼動作以及該動作發生的時間,但不記錄執行動作花費的時間。| 使用 STARTTIME 和 ENDTIME 欄來確定完成活動花費的時間。若要確定哪個使用者執行了操作,請將 SVL_STATEMENTTEXT (userid) 與 PG_USER (usesysid) 結合使用。|
| 您需支付日誌在 Amazon S3 中使用的儲存費用。| STL 資料表儲存無須額外付費。|
| 記錄領導節點專屬查詢。| 不記錄領導節點專屬查詢。|
CloudTrail
使用 CloudTrail 收集的資訊,您可以確定成功向 AWS 服務發出的請求、提出請求的人員以及提出請求的時間。如需詳細資訊,請參閱使用 AWS CloudTrail 記錄 Amazon Redshift API 呼叫。
除非您定義生命週期規則以自動封存或刪除檔案,否則 CloudTrail 日誌檔案會無限期儲存在 Amazon S3 中。如需詳細資訊,請參閱對象生命週期管理。
相關資訊
調校查詢效能
使用者活動日誌版本備註