本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
資料庫稽核記錄日誌
Amazon Redshift 會記錄您資料庫中連線和使用者活動的相關資訊。這些日誌可協助您基於安全和故障診斷之目的監控資料庫,此程序稱為資料庫稽核。日誌可以儲存在:
-
Amazon S3 儲存貯體 — 這會讓負責監控資料庫中活動的使用者能夠存取資料安全功能。
-
Amazon CloudWatch-您可以使用內建的功能 (例如視覺化功能和設定動 CloudWatch作) 來檢視稽核記錄資料。
注意
SYS_ CONNECTION _ LOG 收集 Amazon Redshift 無伺服器的連線記錄資料。請注意,當您收集 Amazon Redshift 無伺服器的稽核記錄資料時,無法將資料傳送到記錄檔,只能傳送給。 CloudWatch
Amazon Redshift 日誌
Amazon Redshift 會將資訊記錄在下列日誌檔中:
-
連線日誌 — 記錄身分驗證嘗試、連線和中斷連線。
-
使用者日誌 — 記錄對資料庫使用者定義所做之變更的相關資訊。
-
使用者活動日誌 — 在每個查詢於資料庫上執行之前先行記錄。
連線和使用者日誌主要用於安全目的。您可以使用連線日誌,來監控正在連線至資料庫的使用者相關資訊,以及相關的連線資訊。此資訊可能是使用者的 IP 地址、使用者何時提出請求、使用者使用哪種類型的身分驗證等等。您可以利用使用者日誌,來監控對資料庫使用者之定義所做的變更。
使用者活動日誌主要用於故障診斷目的。它會追蹤使用者和系統在資料庫中執行之查詢類型的相關資訊。
連線日誌和使用者日誌對應至儲存在資料庫中系統資料表的資訊。您可以使用系統資料表來取得相同資訊,但是日誌檔提供更簡單的擷取和檢閱機制。日誌檔依賴 Amazon S3 許可而非資料庫許可,針對資料表執行查詢。此外,藉由檢視日誌檔中的資訊,而非查詢系統資料表,您可以減少與資料庫互動的任何影響。
注意
日誌文件不如 STL_ USERLOG 和 STL _ _ 的系統日誌表那樣當前LOG。CONNECTION比最新記錄舊的記錄 (但不含最新記錄) 會複製到日誌檔。
注意
對於 Amazon Redshift 無伺服器,SYSCONNECTION_ LOG 會收集連線記錄資料。當您收集 Amazon Redshift 無伺服器的稽核記錄資料時,只能將資料傳送到記錄檔。 CloudWatch
連線日誌
記錄身分驗證嘗試以及連線和中斷連線。下表說明連線日誌中的資訊。如需有關這些欄位的詳細資訊,請參閱 Amazon Redshift 資料庫開發人員指南LOG中的 STLCONNECTION_ _。如需針對 Amazon Redshift 無伺服器所收集之連線記錄資料的詳細資訊,請參閱 SYS_ _ CONNECTION。LOG
資料欄名稱 | 描述 |
---|---|
事件 | 連線或身分驗證事件。 |
recordtime | 發生事件的時間。 |
remotehost | 遠端主機的名稱或 IP 地址。 |
remoteport | 遠端主機的連接埠號碼。 |
pid | 與陳述式相關聯的處理程序 ID。 |
dbname | 資料庫名稱。 |
使用者名稱 | 使用者名稱。 |
authmethod | 身分驗證方法。 |
持續時間 | 連線的持續時間,以微秒為單位。 |
sslversion | 安全通訊端層 (SSL) 版本。 |
sslcipher | SSL密碼。 |
mtu | 最大傳輸單元 (MTU)。 |
sslcompression | SSL壓縮類型。 |
sslexpansion | SSL擴展類型。 |
iamauthguid | 所以此 AWS Identity and Access Management (IAM) 的驗證識別碼 AWS CloudTrail 請求。這是用來建立指定連線所使用之認證的GetClusterCredentialsAPI呼叫識別碼。 |
application_name | 工作階段應用程式的初始名稱或已更新名稱。 |
os_version | 連線到 Amazon Redshift 叢集之用戶端機器上的作業系統版本。 |
driver_version | 從第三方SQL用戶端工具連線到 Amazon Redshift 叢集的ODBC或JDBC驅動程式版本。 |
plugin_name | 連接至您的 Amazon Redshift 叢集時使用的外掛程式名稱。 |
protocol_version | Amazon Redshift 驅動程式在建立與伺服器的連線時使用的內部通訊協定版本。 |
sessionid | 目前工作階段的全域唯一識別碼。 |
compression | 用於連線的壓縮演算法。 |
使用者日誌
記錄資料庫使用者之下列變更的詳細資訊:
-
建立使用者
-
捨棄使用者
-
更改使用者 (重新命名)
-
更改使用者 (更改屬性)
資料欄名稱 | 描述 |
---|---|
userid | 受到變更影響之使用者的 ID。 |
使用者名稱 | 受到變更影響之使用者的使用者名稱。 |
oldusername | 若為重新命名動作,這是原始使用者名稱。若是任何其他動作,此欄位空白。 |
動作 | 發生的動作。有效值:
|
usecreatedb | 若為 true (1),表示使用者具備建立資料庫許可。 |
usesuper | 若為 true (1),表示使用者是超級使用者。 |
usecatupd | 若為 true (1),表示使用者可以更新系統目錄。 |
valuntil | 密碼到期日。 |
pid | 處理程序 ID。 |
xid | 交易 ID。 |
recordtime | 查詢開始的時間。UTC |
查詢 SYS_ 系USERLOG統檢視,以尋找有關使用者變更的其他資訊。此檢視包含來自 Amazon Redshift Serverless 的日誌資料。
使用者活動日誌
在每個查詢於資料庫上執行之前先行記錄。
資料欄名稱 | 描述 |
---|---|
recordtime | 發生事件的時間。 |
db | 資料庫名稱。 |
使用者 | 使用者名稱。 |
pid | 與陳述式相關聯的處理程序 ID。 |
userid | 使用者 ID。 |
xid | 交易 ID。 |
query | 前綴LOG:後跟查詢的文本,包括換行符。 |
稽核日誌和 Amazon CloudWatch
根據預設,Amazon Redshift 不會開啟稽核記錄。當您在叢集上開啟日誌記錄功能時,Amazon Redshift 會將日誌匯出到 Amazon CloudWatch,或者建立日誌並將日誌上傳到 Amazon S3,從啟用稽核記錄到目前為止擷取資料。每個記錄更新都會接續先前的日誌。
向 Amazon S3 CloudWatch 或傳送到 Amazon S3 的稽核記錄是選擇性的程序。目標為系統資料表的記錄則非選用,而且會自動發生。如需目標為系統資料表之記錄的相關資訊,請參閱《Amazon Redshift 資料庫開發人員指南》中的系統資料表參考。
連線記錄、使用者記錄檔和使用者活動記錄可一起啟用 AWS Management Console,Amazon Redshift API 參考,或 AWS Command Line Interface (AWS CLI). 對於使用者活動記錄檔,您也必須啟用資enable_user_activity_logging
料庫參數。如果您只啟用稽核記錄功能,但未啟用相關聯參數,則資料庫稽核日誌將只記錄連線日誌和使用者日誌的日誌資訊,但不記錄使用者活動日誌的日誌資訊。預設不會啟用 enable_user_activity_logging
參數 (false
)。您可以將其設為 true
來啟用使用者活動日誌。如需詳細資訊,請參閱Amazon Redshift 參數群組。
當您啟用記錄功能時 CloudWatch,Amazon Redshift 會將叢集連線、使用者和使用者活動日誌資料匯出到 Amazon CloudWatch 日誌群組。記錄檔資料在結構描述方面不會變更。 CloudWatch 專為監控應用程式而建置,您可以使用它來執行即時分析或將其設定為採取行動。您也可以使用 Amazon CloudWatch 日誌將日誌記錄存放在耐用儲存中。
建議 CloudWatch 使用檢視日誌檔案在 Amazon S3 中存放日誌檔案的替代方法。其不需要太多的組態設定,並可能適合您的監控要求,特別是如果您已經使用它來監控其他服務和應用程式的話。
Amazon 中的日誌群組和日誌事件 CloudWatch
選取要匯出的 Amazon Redshift 日誌後,您可以在 Amazon 日誌中監控 CloudWatch 日誌事件。系統會自動在下列字首下,為 Amazon Redshift Serverless 建立新的日誌群組,其中 log_type
代表日誌類型。
/aws/redshift/cluster/<cluster_name>/<log_type>
例如,如果您選擇匯出連線日誌,則日誌資料會儲存在下列日誌群組中。
/aws/redshift/cluster/cluster1/connectionlog
日誌事件會使用日誌串流匯出至日誌群組。若要在無伺服器端點的日誌事件中搜尋資訊,請使用 Amazon CloudWatch Logs 主控台 AWS CLI,或 Amazon CloudWatch 日誌API。如需有關搜尋和篩選日誌資料的資訊,請參閱使用篩選條件從日誌事件建立指標。
在中 CloudWatch,您可以使用提供精細度和彈性的查詢語法來搜尋記錄資料。如需詳細資訊,請參閱CloudWatch 記錄檔見解查詢語法。
遷移至 Amazon CloudWatch 稽核記錄
在任何情況下,當您將日誌傳送到 Amazon S3 並變更組態 (例如要將日誌傳送到) 時 CloudWatch,保留在 Amazon S3 中的日誌都不會受到影響。您仍可在日誌資料所在的 Amazon S3 儲存貯體中查詢日誌資料。
Amazon S3 中的日誌文件
Amazon S3 中 Amazon Redshift 日誌檔案的數目和大小極度取決於叢集中的活動。如果您有作用中叢集,正在產生大量日誌,則 Amazon Redshift 可能更頻繁地產生日誌檔案。對於相同類型的活動,您可能具有一系列日誌檔案,例如在同一小時內具有多個連線日誌。
當 Amazon Redshift 使用 Amazon S3 來儲存日誌時,您在 Amazon S3 中使用的儲存會產生費用。在設定目標為 Amazon S3 的記錄之前,請計劃您需要儲存日誌檔案多長時間。這包括根據您的稽核需求,決定何時可刪除或封存日誌檔案。您建立的計劃極度取決於您儲存的資料類型,例如受制於合規或法規需求的資料。如需 Amazon S3 定價的相關資訊,請前往 Amazon Simple Storage Service (Amazon S3) 定價
啟用目標為 Amazon S3 的記錄時的限制
稽核記錄有下列限制:
-
您只能使用亞馬遜 S3 受管金鑰 (SSE-S3) 加密 (AES-256)。
-
Amazon S3 儲存貯體必須關閉 S3 物件鎖定功能。
Amazon Redshift 稽核記錄的儲存貯體許可
當您開啟目標為 Amazon S3 的記錄功能時,Amazon Redshift 會收集記錄資訊,並將其上傳到儲存在 Amazon S3 的日誌檔案。您可以使用現有的儲存貯體,或建立新的儲存貯體。Amazon Redshift 需要存儲桶的下列IAM許可:
-
s3:GetBucketAcl
服務對 Amazon S3 儲存貯體需有讀取許可,才能識別儲存貯體擁有者。 -
s3:PutObject
服務需有放置物件許可,才能上傳物件。此外,開啟記錄功能的使用者或IAM角色必須具有 Amazon S3 儲存貯體的s3:PutObject
權限。每次上傳日誌,服務就會判斷目前儲存貯體擁有者是否符合啟用記錄時的儲存貯體擁有者。如果這些擁有者不相符,您會收到錯誤。
當您啟用稽核記錄時,如果您選取建立新儲存貯體的選項,系統便會為其套用正確的許可。不過,如果您在 Amazon S3 建立自己的儲存貯體,或使用現有的儲存貯體,則請務必新增包含儲存貯體名稱的儲存貯體政策。日誌會使用服務主體憑證來傳送。對於大多數 AWS 區域,您新增 Redshift 服務主體名稱,redshift.amazonaws.com
.
儲存貯體政策會使用以下格式。ServiceName
以及 BucketName
是您自己的價值觀的佔位符。此外,還要在儲存貯體政策中指定相關聯的動作和資源。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Put bucket policy needed for audit logging", "Effect": "Allow", "Principal": { "Service": "ServiceName" }, "Action": [ "s3:PutObject", "s3:GetBucketAcl" ], "Resource": [ "arn:aws:s3:::BucketName", "arn:aws:s3:::BucketName/*" ] } ] }
下列範例是美國東部 (維吉尼亞北部) 區域的儲存貯體政策,以及名為 AuditLogs
的儲存貯體。
{ "Version": "2008-10-17", "Statement": [ { "Sid": "Put bucket policy needed for audit logging", "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": [ "s3:PutObject", "s3:GetBucketAcl" ], "Resource": [ "arn:aws:s3:::AuditLogs", "arn:aws:s3:::AuditLogs/*" ] } ] }
預設未啟用的區域 (也稱為「選擇加入」區域) 需要區域特定的服務主體名稱。對於這些區域,服務主體名稱會包含 redshift.
格式的區域。例如 region
.amazonaws.com.rproxy.goskope.comredshift.ap-east-1.amazonaws.com
適用於亞太區域 (香港) 區域。如需預設未啟用的區域清單,請參閱管理 AWS 區域 中的 AWS 一般參考.
注意
區域特定服務主體名稱會對應到叢集所在的區域。
日誌檔案的最佳實務
當 Redshift 將日誌檔案上傳到 Amazon S3 時,大型檔案可以分段上傳。如果分段上傳不成功,檔案的這些分段可能會留在 Amazon S3 儲存貯體中。這可能會導致額外的儲存成本,因此請務必了解分段上傳失敗時會發生什麼情況。如需有關稽核日誌分段上傳的詳細說明,請參閱使用分段上傳來上傳和複製物件和中止分段上傳。
如需建立 S3 儲存貯體和新增儲存貯體政策的相關資訊,請參閱《Amazon Simple Storage Service 使用者指南》中的建立儲存貯體和編輯儲存貯體許可。
Amazon Redshift 稽核記錄的儲存貯體結構
依預設,Amazon Redshift 會使用下列儲存貯體和物件結構來組織 Amazon S3 儲存貯體中的日誌檔案:
AWSLogs/
AccountID
/ServiceName
/Region
/Year
/Month
/Day
/AccountID_ServiceName_Region_ClusterName_LogType_Timestamp.gz
範例為:AWSLogs/123456789012/redshift/us-east-1/2013/10/29/123456789012_redshift_us-east-1_mycluster_userlog_2013-10-29T18:01.gz
如果您提供 Amazon S3 金鑰字首,請將字首置於金鑰開頭處。
例如,如果您指定 myprefix 的字首:myprefix/AWSLogs/123456789012/redshift/us-east-1/2013/10/29/123456789012_redshift_us-east-1_mycluster_userlog_2013-10-29T18:01.gz
Amazon S3 金鑰字首不能超過 512 個字元。它不能包含空格 ( )、雙引號 (“)、單引號 (‘)、反斜線 (\)。也有一些不允許的特殊字元和控制字元。這些字元的十六進位碼如下:
-
x00 到 x20
-
x22
-
x27
-
x5c
-
x7f 或更大
Amazon S3 中的稽核記錄考量
Amazon Redshift 稽核記錄可能會由於下列原因而中斷:
-
Amazon Redshift 沒有將日誌上傳至 Amazon S3 儲存貯體的許可。確認值區已設定正確的IAM政策。如需詳細資訊,請參閱Amazon Redshift 稽核記錄的儲存貯體許可。
-
儲存貯體擁有者已變更。當 Amazon Redshift 上傳日誌時,其會驗證儲存貯體擁有者是否與啟用記錄時的儲存貯體擁有者相同。如果儲存貯體擁有者已變更,則 Amazon Redshift 無法上傳日誌,直到您設定另一個用於稽核記錄的儲存貯體為止。
-
找不到儲存貯體。如果在 Amazon S3 中刪除該儲存貯體,Amazon Redshift 便無法上傳日誌。您必須重建儲存貯體,或設定 Amazon Redshift 以將日誌上傳至不同的儲存貯體。
API呼叫與 AWS CloudTrail
Amazon Redshift 集成 AWS CloudTrail,提供使用者、角色或使用者所採取之動作記錄的服務 AWS 在 Amazon Redshift 服務。 CloudTrail 捕獲所有對 Amazon Redshift 的API呼叫作為事件。有關 Amazon Redshift 集成的更多信息 AWS CloudTrail,請參閱使用記錄 CloudTrail。
您可以在 Amazon Redshift 資料庫稽核記錄之外 CloudTrail 獨立使用,也可以除了使用。
若要進一步了解 CloudTrail,請參閱 AWS CloudTrail 使用者指南。