收集 AWS Redshift 記錄
剖析器版本:1.0
本文說明如何使用 Amazon S3,將 AWS Redshift 記錄檔擷取至 Google Security Operations。
Amazon Redshift 是 Amazon Web Services 的全代管 PB 級雲端資料倉儲服務,您可以使用以 SQL 為基礎的工具和商業智慧應用程式,快速查詢及分析大型資料集。Amazon Redshift 會記錄資料庫活動,包括驗證嘗試、連線、中斷連線、使用者定義變更,以及對資料庫執行的查詢。這項整合功能會使用 Amazon Redshift 的原生稽核記錄功能,將記錄檔傳送至 S3 bucket,然後 Google SecOps 會使用 Amazon S3 V2 動態饋給擷取這些檔案。
事前準備
請確認您已完成下列事前準備事項:
- Google SecOps 執行個體
- 具有管理權限的 AWS 管理主控台存取權:
- Amazon Redshift (叢集、參數群組)
- Amazon S3 (儲存貯體、儲存貯體政策)
- AWS IAM (使用者、政策)
為 Amazon Redshift 稽核記錄設定 S3 儲存貯體
Amazon Redshift 會將稽核記錄檔上傳至 S3 bucket。您必須設定 S3 值區政策,允許 Amazon Redshift 服務寫入記錄檔。
建立及設定 S3 bucket
- 按照這份使用手冊的指示建立 Amazon S3 儲存空間:建立儲存空間。
儲存 bucket 的「名稱」和「區域」,以供日後參考 (例如
redshift-audit-logs-to-secops)。前往 https://console.aws.amazon.com/s3,在 Amazon S3 控制台中選取建立的值區。
選取 [權限] 分頁標籤。
在「Bucket policy」部分,按一下「Edit」。
新增下列 bucket 政策 (將
redshift-audit-logs-to-secops替換為 bucket 名稱):{ "Version": "2012-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:::redshift-audit-logs-to-secops", "arn:aws:s3:::redshift-audit-logs-to-secops/*" ] } ] }按一下 [儲存變更]。
啟用使用者活動記錄參數
啟用稽核記錄後,系統會自動擷取連線記錄和使用者記錄。如要一併擷取使用者活動記錄 (記錄每項查詢在資料庫執行前的狀態),則必須啟用 enable_user_activity_logging 資料庫參數。
- 前往 https://console.aws.amazon.com/redshiftv2/,登入 Amazon Redshift 控制台。
- 在導覽選單中,依序前往「設定」 > 「工作負載管理」。
- 選取與叢集相關聯的參數群組。
- 選取「參數」分頁標籤。
- 按一下「編輯參數」。
- 將 enable_user_activity_logging 參數值設為 true。
按一下 [儲存]。
啟用 Amazon Redshift 稽核記錄至 S3
- 前往 https://console.aws.amazon.com/redshiftv2/,登入 Amazon Redshift 控制台。
- 在導覽選單中,依序選取「叢集」和要設定的叢集。
- 選取「屬性」分頁標籤。
- 在「資料庫設定」面板中,依序點選「編輯」和「編輯稽核記錄」。
- 在「編輯稽核記錄」頁面中,選取「開啟」。
- 在「記錄檔目的地」部分,選取「S3 bucket」。
- 在「S3 bucket」部分,選取您設定的 bucket (例如
redshift-audit-logs-to-secops)。 - 選用:輸入 S3 金鑰前置字元,在儲存值區中整理記錄檔 (例如
audit-logs/)。 - 選取要匯出的記錄:
- 連線記錄 - 驗證嘗試、連線和中斷連線
- 使用者記錄 - 資料庫使用者定義的變更
- 使用者活動記錄 - 每個查詢在資料庫中執行前
- 按一下 [儲存變更]。
詳情請參閱《Amazon Redshift 管理指南》中的「資料庫稽核記錄」。
為 Google SecOps 設定 IAM 使用者
Google SecOps 需要具備 S3 儲存空間讀取權的 IAM 使用者,才能擷取匯出的稽核記錄。
- 按照這份使用者指南建立使用者:建立 IAM 使用者。
- 選取建立的「使用者」。
- 選取「安全憑證」分頁標籤。
- 在「Access Keys」部分,按一下「Create Access Key」。
- 選取「第三方服務」做為「用途」。
- 按一下「繼續」。
- 新增說明標記 (如有需要)。
- 按一下「建立存取金鑰」。
- 按一下「下載 .csv 檔案」,儲存「存取金鑰」和「私密存取金鑰」,以供日後參考。
- 按一下「完成」。
- 選取「權限」分頁標籤。
- 在「權限政策」部分中,按一下「新增權限」。
- 選取「新增權限」。
- 選取「直接附加政策」。
- 搜尋 AmazonS3FullAccess 政策。
- 選取政策。
- 點選「下一步」。
- 按一下「Add permissions」。
在 Google SecOps 設定動態饋給,擷取 AWS Redshift 記錄
- 依序前往「SIEM 設定」>「動態饋給」。
- 按一下「新增動態饋給」。
- 在下一個頁面中,按一下「設定單一動態饋給」。
- 輸入資訊提供的專屬名稱。
- 選取「Amazon S3 V2」做為「來源類型」。
- 選取「AWS Redshift」做為「記錄類型」。
- 依序點按「繼續」和「提交」。
為下列欄位指定值:
- S3 URI:
s3://redshift-audit-logs-to-secops/audit-logs/ - 來源刪除選項:根據偏好選取刪除選項
- 檔案存在時間上限:納入過去幾天內修改過的檔案 (預設為 180 天)
- 存取金鑰 ID:具有 S3 儲存貯體存取權的使用者存取金鑰
- 私密存取金鑰:具有 S3 儲存空間存取權的使用者私密金鑰
- 資產命名空間:資產命名空間
- 擷取標籤:要套用至這個動態饋給事件的標籤
- S3 URI:
依序點按「繼續」和「提交」。
UDM 對應表
| 記錄欄位 | UDM 對應 | 邏輯 |
|---|---|---|
func_label |
additional.fields |
已合併 |
lpclagg_label |
additional.fields |
已合併 |
lpcltype_label |
additional.fields |
已合併 |
msg |
metadata.description |
直接對應 |
has_principal |
metadata.event_type |
已對應:true → STATUS_UPDATE |
has_target_resource |
metadata.event_type |
已對應:true → USER_RESOURCE_ACCESS |
has_user |
metadata.event_type |
已對應:true → USER_UNCATEGORIZED |
column1 |
metadata.product_event_type |
直接對應 |
requestID |
metadata.product_log_id |
直接對應 |
column20 |
network.application_protocol_version |
直接對應 |
column9 |
network.session_duration.seconds |
已重新命名/對應 |
column21 |
network.session_id |
直接對應 |
xid |
network.session_id |
直接對應 |
column11 |
network.tls.cipher |
直接對應 |
column10 |
network.tls.version |
直接對應 |
column16 |
principal.application |
直接對應 |
column3 |
principal.asset.ip |
已合併 |
log_event.src_ip |
principal.asset.ip |
已合併 |
column3 |
principal.hostname |
直接對應 |
column3 |
principal.ip |
已合併 |
log_event.src_ip |
principal.ip |
已合併 |
region |
principal.location.name |
直接對應 |
column17 |
principal.platform_version |
直接對應 |
column4 |
principal.port |
直接對應 |
column5 |
principal.process.pid |
直接對應 |
pid |
principal.process.pid |
直接對應 |
accountID |
principal.user.userid |
直接對應 |
user_id |
principal.user.userid |
直接對應 |
authmethod_label |
security_result.detection_fields |
已合併 |
compression_label |
security_result.detection_fields |
已合併 |
driver_version_label |
security_result.detection_fields |
已合併 |
iamauthguid_label |
security_result.detection_fields |
已合併 |
mtu_label |
security_result.detection_fields |
已合併 |
plugin_name_label |
security_result.detection_fields |
已合併 |
ssl_compression_label |
security_result.detection_fields |
已合併 |
ssl_expansion_label |
security_result.detection_fields |
已合併 |
level |
security_result.severity |
對應:(?i)Info → INFORMATIONAL、(?i)Error → ERROR、(?i)Warning → MEDIUM |
file |
target.file.full_path |
直接對應 |
expected_bucket_label |
target.resource.attribute.labels |
已合併 |
expected_s3_prefix_label |
target.resource.attribute.labels |
已合併 |
sql_query_label |
target.resource.attribute.labels |
已合併 |
time_zone_label |
target.resource.attribute.labels |
已合併 |
ClusterIdentifier |
target.resource.name |
直接對應 |
column6 |
target.resource.name |
直接對應 |
db |
target.resource.name |
直接對應 |
column7 |
target.user.user_display_name |
直接對應 |
user |
target.user.user_display_name |
直接對應 |
| 不適用 | metadata.event_type |
常數:USER_RESOURCE_ACCESS |
| 不適用 | security_result.severity |
常數:INFORMATIONAL |
| 不適用 | target.resource.type |
常數:DATABASE |
變更記錄
還有其他問題嗎?向社群成員和 Google SecOps 專家尋求解答。