收集 Tanium 稽核記錄
支援的國家/地區:
Google SecOps
SIEM
本文說明如何使用 Tanium Connect 的原生 S3 匯出功能,透過 Amazon S3 將 Tanium 稽核記錄擷取至 Google Security Operations。剖析器會先清除許多預設欄位,然後擷取記錄。然後,它會使用 grok 和 json 篩選器剖析記錄訊息,擷取時間戳記、裝置 IP 和稽核詳細資料等欄位。剖析器會將這些擷取的欄位對應至 UDM,並處理各種資料類型和條件邏輯,根據特定 Tanium 稽核記錄屬性的存在與值,填入適當的 UDM 欄位。
事前準備
請確認您已完成下列事前準備事項:
- Google SecOps 執行個體
- Tanium Connect 和 Tanium Console 的特殊權限
- AWS (S3、IAM) 的特殊存取權
建立 Amazon S3 bucket
- 開啟 Amazon S3 控制台。
- 如有需要,可以變更「區域」。
- 在導覽列中,選取要存放 Tanium 稽核記錄的區域。
- 按一下「建立 Bucket」。
- Bucket Name:輸入 bucket 的名稱 (例如
tanium-audit-logs
)。 - 區域:選取偏好的區域 (例如
us-east-1
)。 - 點選「建立」。
- Bucket Name:輸入 bucket 的名稱 (例如
建立可完整存取 Amazon S3 的 IAM 使用者
- 開啟 IAM console。
- 依序點選「使用者」>「新增使用者」。
- 輸入使用者名稱 (例如
tanium-connect-s3-user
)。 - 視需要選取「程式輔助存取」和/或「AWS 管理主控台存取」。
- 選取「自動產生密碼」或「自訂密碼」。
- 點選 [Next: Permissions] (下一步:權限)。
- 選擇「直接附加現有政策」。
- 搜尋並選取要授予使用者的 AmazonS3FullAccess 政策。
- 按一下「下一步:代碼」。
- 按一下 [下一步:檢閱]。
- 按一下「建立使用者」。
- 複製並儲存「存取金鑰 ID」和「私密存取金鑰」,以供日後參考。
設定 Amazon S3 值區的權限
- 在 Amazon S3 管理中心中,選擇您先前建立的值區。
- 依序點選「Permissions」(權限)「Bucket policy」(儲存空間政策)。
在「Bucket Policy Editor」(值區政策編輯器) 中,新增下列政策:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::YOUR_ACCOUNT_ID:user/tanium-connect-s3-user" }, "Action": [ "s3:PutObject", "s3:PutObjectAcl", "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::tanium-audit-logs", "arn:aws:s3:::tanium-audit-logs/*" ] } ] }
請替換下列變數:
- 將
YOUR_ACCOUNT_ID
改為您的 AWS 帳戶 ID。 - 如果不同,請將
tanium-audit-logs
變更為實際值區名稱。 - 如果不同,請將
tanium-connect-s3-user
變更為實際的 IAM 使用者名稱。
- 將
按一下 [儲存]。
設定 Tanium Connect,以便匯出至 S3
在 Tanium Connect 中建立 AWS S3 連線
- 以管理員身分登入 Tanium Console。
- 依序前往「Tanium Connect」>「Connections」。
- 按一下「建立連線」。
- 在「一般資訊」部分,提供下列設定詳細資料:
- 名稱:輸入描述性名稱 (例如
Tanium Audit to S3
)。 - 說明:輸入有意義的說明 (例如
Export Tanium audit logs to S3 for Google SecOps ingestion
)。 - 啟用:選取即可啟用連線。
- 「記錄層級」:選取「資訊」 (預設),或視需要調整。
- 名稱:輸入描述性名稱 (例如
設定連線來源
- 在「設定」部分,針對「來源」選取「Tanium Audit」。
- 設定稽核來源設定:
- 要擷取的記錄天數:輸入要擷取的稽核記錄天數 (例如
7
代表一週)。 - 稽核類型:選取要匯出的稽核類型。選擇下列其中一種做法:
- 動作記錄:主控台操作員發出的動作。
- 驗證:使用者驗證事件。
- 內容:內容變更和修改。
- 群組:電腦群組異動。
- 套件:與套件相關的活動。
- 感應器:感應器修改。
- 系統設定:系統設定變更。
- 使用者:使用者管理活動。
- 要擷取的記錄天數:輸入要擷取的稽核記錄天數 (例如
設定 AWS S3 目的地
- 在「目的地」部分,選取「AWS S3」。
- 提供下列設定詳細資料:
- 目的地名稱:輸入名稱 (例如
Google SecOps S3 Bucket
)。 - AWS 存取金鑰:輸入先前建立的 IAM 使用者存取金鑰 ID。
- AWS 密鑰:輸入先前建立的 IAM 使用者存取密鑰。
- Bucket Name:輸入 S3 bucket 名稱 (例如
tanium-audit-logs
)。 - Bucket 路徑:選用。輸入路徑前置字串 (例如
tanium/audit/
)。 - 區域:選取儲存空間所在的 AWS 區域 (例如
us-east-1
)。
- 目的地名稱:輸入名稱 (例如
設定格式和排程
- 在「格式」部分中,設定輸出格式:
- 格式類型:選取「JSON」。
- 包含欄標題:選取是否要包含欄標題。
- 產生文件:取消選取這個選項,即可傳送原始 JSON 資料。
- 在「Schedule」(排程) 部分,設定連線的執行時間:
- 排程類型:選取「Cron」。
- Cron 運算式:輸入定期匯出的 Cron 運算式 (例如
0 */1 * * *
代表每小時匯出一次)。 - 開始日期:設定時間表的開始日期。
- 按一下 [儲存變更]。
測試及執行連線
- 在「連結總覽」頁面中,前往「連結」。
- 按一下您建立的連線 (「Tanium Audit to S3」)。
- 按一下「立即執行」測試連線。
- 確認要執行連線。
- 監控連線狀態,並確認稽核記錄已匯出至 S3 儲存空間。
選用:為 Google SecOps 建立唯讀 IAM 使用者和金鑰
- 依序前往 AWS 管理中心 > IAM > 使用者 > 新增使用者。
- 點選 [Add users] (新增使用者)。
- 提供下列設定詳細資料:
- 使用者:輸入
secops-reader
。 - 存取類型:選取「存取金鑰 - 程式輔助存取」。
- 使用者:輸入
- 按一下「建立使用者」。
- 附加最低讀取權限政策 (自訂):依序選取「Users」(使用者) >「secops-reader」>「Permissions」(權限) >「Add permissions」(新增權限) >「Attach policies directly」(直接附加政策) >「Create policy」(建立政策)。
在 JSON 編輯器中輸入下列政策:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["s3:GetObject"], "Resource": "arn:aws:s3:::tanium-audit-logs/*" }, { "Effect": "Allow", "Action": ["s3:ListBucket"], "Resource": "arn:aws:s3:::tanium-audit-logs" } ] }
將名稱設為
secops-reader-policy
。依序前往「建立政策」> 搜尋/選取 >「下一步」>「新增權限」。
依序前往「安全憑證」>「存取金鑰」>「建立存取金鑰」。
下載 CSV (這些值會輸入至動態饋給)。
在 Google SecOps 中設定動態饋給,擷取 Tanium 稽核記錄
- 依序前往「SIEM 設定」>「動態饋給」。
- 按一下「+ 新增動態消息」。
- 在「動態饋給名稱」欄位中輸入動態饋給名稱 (例如
Tanium Audit logs
)。 - 選取「Amazon S3 V2」做為「來源類型」。
- 選取「Tanium Audit」做為「記錄類型」。
- 點選「下一步」。
- 指定下列輸入參數的值:
- S3 URI:
s3://tanium-audit-logs/tanium/audit/
(如果使用不同的值區名稱或路徑,請調整路徑)。 - 來源刪除選項:根據偏好設定選取刪除選項。
- 檔案存在時間上限:包含在過去天數內修改的檔案。預設值為 180 天。
- 存取金鑰 ID:具有 S3 值區存取權的使用者存取金鑰 (來自上述建立的唯讀使用者)。
- 私密存取金鑰:具有 S3 bucket 存取權的使用者私密金鑰 (來自上述建立的唯讀使用者)。
- 資產命名空間:資產命名空間。
- 擷取標籤:要套用至這個動態饋給事件的標籤。
- S3 URI:
- 點選「下一步」。
- 在「完成」畫面中檢查新的動態饋給設定,然後按一下「提交」。
UDM 對應表
記錄欄位 | UDM 對應 | 邏輯 |
---|---|---|
ActionId |
metadata.product_log_id |
直接從「ActionId 」欄位對應。 |
ActionName |
security_result.action_details |
直接從「ActionName 」欄位對應。 |
Approver |
additional.fields[Approver].value.string_value |
直接從「Approver 」欄位對應。 |
Approver |
principal.user.userid |
如果沒有 Issuer ,則會從 Approver 欄位對應。 |
audit_name |
metadata.description |
直接從「audit_name 」欄位對應。 |
audit_row_id |
additional.fields[audit_row_id].value.string_value |
直接從「audit_row_id 」欄位對應。 |
audit_type |
additional.fields[audit_type].value.string_value |
直接從「audit_type 」欄位對應。 |
authentication_type |
principal.user.attribute.labels[authentication_type].value |
直接從從 details 欄位擷取的 authentication_type 欄位對應。 |
Command |
principal.process.command_line |
網址解碼後,直接從 Command 欄位對應。 |
creation_time |
target.resource.attribute.creation_time |
直接從「creation_time 」欄位對應。 |
details |
network.session_id |
使用鍵/值剖析從 details 欄位擷取。 |
details |
principal.user.attribute.labels[authentication_type].value |
使用鍵/值剖析從 details 欄位擷取。 |
details |
principal.asset.ip 、principal.ip |
系統會使用鍵/值剖析功能,從 details 欄位擷取 IP 位址,並對應至 principal.asset.ip 和 principal.ip 。 |
DistributeOver |
additional.fields[DistributeOver].value.string_value |
直接從「DistributeOver 」欄位對應。 |
dvc_ip |
intermediary.hostname |
直接從 syslog 訊息擷取的 dvc_ip 欄位對應。 |
dvc_ip |
observer.ip |
如果沒有 logstash.collect.host ,則直接從 dvc_ip 欄位對應。 |
Expiration |
additional.fields[Expiration].value.string_value |
直接從「Expiration 」欄位對應。 |
host.architecture |
target.asset.hardware.cpu_platform |
直接從「host.architecture 」欄位對應。 |
host.id |
target.asset.asset_id |
直接從 host.id 欄位對應,並加上「主機 ID:」前置字元。 |
host.ip |
target.ip |
直接從「host.ip 」欄位對應。 |
host.mac |
target.mac |
直接從「host.mac 」欄位對應。 |
host.name |
target.hostname |
如果沒有 host.hostname ,則直接從 host.name 欄位對應。 |
host.os.kernel |
target.platform_patch_level |
直接從「host.os.kernel 」欄位對應。 |
host.os.name |
additional.fields[os_name].value.string_value |
直接從「host.os.name 」欄位對應。 |
host.os.version |
target.platform_version |
直接從「host.os.version 」欄位對應。 |
InsertTime |
additional.fields[InsertTime].value.string_value |
直接從「InsertTime 」欄位對應。 |
Issuer |
additional.fields[Issuer].value.string_value |
直接從「Issuer 」欄位對應。 |
Issuer |
principal.user.userid |
如有,則直接從 Issuer 欄位對應。 |
last_modified_by |
principal.resource.attribute.labels[last_modified_by].value |
直接從「last_modified_by 」欄位對應。 |
log.source.address |
principal.ip |
系統會從 log.source.address 欄位擷取 IP 位址,並對應至 principal.ip 。 |
log.source.address |
principal.port |
通訊埠是從 log.source.address 欄位擷取。 |
logstash.collect.host |
observer.ip |
如有,則直接從 logstash.collect.host 欄位對應。 |
logstash.collect.timestamp |
metadata.collected_timestamp |
直接從「logstash.collect.timestamp 」欄位對應。 |
logstash.ingest.timestamp |
metadata.ingested_timestamp |
直接從「logstash.ingest.timestamp 」欄位對應。 |
logstash.irm_environment |
additional.fields[irm_environment].value.string_value |
直接從「logstash.irm_environment 」欄位對應。 |
logstash.irm_region |
additional.fields[irm_region].value.string_value |
直接從「logstash.irm_region 」欄位對應。 |
logstash.irm_site |
additional.fields[irm_site].value.string_value |
直接從「logstash.irm_site 」欄位對應。 |
logstash.process.host |
intermediary.hostname |
直接從「logstash.process.host 」欄位對應。 |
message |
dvc_ip 、json_data 、timestamp |
使用 grok 剖析,擷取 dvc_ip 、json_data 和 timestamp 。 |
modification_time |
target.resource.attribute.last_update_time |
直接從「modification_time 」欄位對應。 |
modifier_user_id |
principal.resource.attribute.labels[modifier_user_id].value |
直接從「modifier_user_id 」欄位對應。 |
object_id |
target.resource.product_object_id |
直接從「object_id 」欄位對應。 |
object_name |
target.resource.name |
直接從「object_name 」欄位對應。 |
object_type_name |
target.resource.attribute.labels[object_type_name].value |
直接從「object_type_name 」欄位對應。 |
PackageName |
additional.fields[PackageName].value.string_value |
直接從「PackageName 」欄位對應。 |
SourceId |
additional.fields[SourceId].value.string_value |
直接從「SourceId 」欄位對應。 |
StartTime |
additional.fields[StartTime].value.string_value |
直接從「StartTime 」欄位對應。 |
Status |
security_result.action |
如果 Status 為「Closed」,則對應至「BLOCK」;如果 Status 為「Open」,則對應至「ALLOW」。 |
Status |
security_result.summary |
直接從「Status 」欄位對應。 |
tanium_audit_type |
metadata.product_event_type |
直接從「tanium_audit_type 」欄位對應。 |
timestamp |
metadata.event_timestamp |
直接從 Syslog 訊息或 timestamp 欄位擷取的 message 欄位對應。 |
type |
additional.fields[type].value.string_value |
直接從「type 」欄位對應。 |
type_name |
metadata.product_event_type |
直接從「type_name 」欄位對應。 |
User |
principal.user.userid |
直接對應至「User 」欄位。由剖析器邏輯根據 src_ip 、has_target 和 has_user 的存在與否決定。可以是「NETWORK_CONNECTION」、「USER_RESOURCE_ACCESS」、「STATUS_UPDATE」或「GENERIC_EVENT」。硬式編碼為「TANIUM_AUDIT」。硬式編碼為「cybersecurity」。硬式編碼為「TANIUM_AUDIT」。 |
@version |
metadata.product_version |
直接從「@version 」欄位對應。 |
agent.ephemeral_id |
additional.fields[ephemeral_id].value.string_value |
直接從「agent.ephemeral_id 」欄位對應。 |
agent.id |
observer.asset_id |
直接從 agent.id 欄位對應,並加上「filebeat:」前置字元。 |
agent.type |
observer.application |
直接從「agent.type 」欄位對應。 |
agent.version |
observer.platform_version |
直接從「agent.version 」欄位對應。 |
Comment |
security_result.description |
直接從「Comment 」欄位對應。 |
host.hostname |
target.hostname |
如有,則直接從 host.hostname 欄位對應。 |
input.type |
network.ip_protocol |
如果 input.type 為「tcp」或「TCP」,則對應至「TCP」。 |
syslog_severity |
security_result.severity |
如果 syslog_severity 為「error」或「warning」,則對應至「HIGH」;如果為「notice」,則對應至「MEDIUM」;如果為「information」或「info」,則對應至「LOW」。 |
syslog_severity |
security_result.severity_details |
直接從「syslog_severity 」欄位對應。 |
還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。