收集 AWS Redshift 記錄
剖析器版本:1.0
本文說明如何使用 Amazon S3,將 AWS Redshift 記錄擷取至 Google Security Operations。
Amazon Redshift 是 Amazon Web Services 的全代管 PB 級雲端資料倉儲服務。透過這個平台,機構能使用以 SQL 為基礎的工具和商業智慧應用程式,快速查詢及分析大型資料集。Amazon Redshift 會記錄資料庫活動,包括驗證嘗試、連線、中斷連線、使用者定義變更,以及針對資料庫執行的查詢。這項整合功能會使用 Amazon Redshift 的原生稽核記錄功能,將記錄檔傳送至 S3 值區,然後 Google SecOps 會使用 Amazon S3 V2 資訊提供擷取記錄檔。
事前準備
請確認您已完成下列事前準備事項:
- Google SecOps 執行個體
- 具備管理下列項目的權限,可存取 AWS 管理主控台:
- Amazon Redshift (叢集、參數群組)
- Amazon S3 (儲存桶、儲存桶政策)
- AWS IAM (使用者、政策)
為 Amazon Redshift 稽核記錄設定 S3 值區
Amazon Redshift 會將稽核記錄檔上傳至 S3 值區。您必須設定 S3 值區政策,允許 Amazon Redshift 服務寫入記錄檔。
建立及設定 S3 bucket
- 按照這份使用者指南建立 Amazon S3 bucket:建立 bucket。
請儲存 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 控制台。
- 在導覽選單中,依序前往「Configurations」(設定)>「Workload management」(工作負載管理)。
- 選取與叢集相關聯的參數群組。
- 選取「參數」分頁標籤。
- 按一下「編輯參數」。
- 將 enable_user_activity_logging 參數值設為 true。
按一下 [儲存]。
啟用 Amazon Redshift 稽核記錄至 S3
- 前往 https://console.aws.amazon.com/redshiftv2/ 登入 Amazon Redshift 控制台。
- 在導覽選單中選取「叢集」,然後選取要設定的叢集。
- 選取「屬性」分頁標籤。
- 在「資料庫設定」面板中,按一下「編輯」,然後選取「編輯稽核記錄」。
- 在「編輯稽核記錄」頁面中,選取「開啟」。
- 在「記錄目的地」部分,選取「S3 bucket」(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」。
- 選取「第三方服務」做為「用途」。
- 按一下「下一步」。
- 新增說明標記 (如有需要)。
- 按一下「建立存取金鑰」。
- 按一下「Download .csv file」(下載 .csv 檔案),儲存「Access Key」(存取金鑰) 和「Secret Access Key」(私密存取金鑰),以供日後參考。
- 按一下 [完成]。
- 選取「權限」分頁標籤。
- 在「權限政策」部分中,按一下「新增權限」。
- 選取「新增權限」。
- 選取「直接附加政策」。
- 搜尋「AmazonS3FullAccess」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 bucket 存取權的使用者私密金鑰
- 資產命名空間:資產命名空間
- 擷取標籤:要套用至這個動態饋給事件的標籤
- 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 專業人員尋求答案。