Leo Yeh's Blog

SAS Viya (139)

教學目標

初步了解在 SAS Viya 分析平台中稽核記錄資料之基本概念。

重點概念

首先當 SAS Viya 分析平台發生問題時,最關鍵的第一步請先查看記錄檔,並且針對記錄檔中關鍵資訊進行故障排除,而 SAS Viya 分析平台有提供許多伺服器和微服務,對於所有伺服器和微服務的記錄檔通常會儲存在「/op/sas/viya/config/var/log」和「/var/log/sas/viya」目錄中,其中標準的 Linux 記錄檔位置「/var/log/sas/viya」目錄主要是以連接的方式指到「/op/sas/viya/config/var/log」目錄中。而就在今天剛好技術合作夥伴就透過 LINE 通訊軟體詢問為何企業客戶的正式環境和測試環境的 SAS Viya 分析平台皆同時在同一天登入帳號之後出現「500 Internal Server Error 發生錯誤,請連絡您的系統管理員。」,此時我們第一步要先查看 SASLogon 的記錄檔,第二步在記錄檔中發現最近出現「PKIX path validation failed: java.security.cert.CertPath ValidatorException: validity check failed」錯誤訊息,第三步根據錯誤訊息我們就能夠縮小範例至伺服器憑證檔案所導致伺服器不正常運作,最後技術合作夥伴與企業客戶確認的確就是憑證到期所導致。此外更多有關 SAS Viya 記錄檔的詳細資訊,建議參考官方社群文章官方部落格文章

接著我們除了透過記錄檔進行 SAS Viya 分析平台的故障排除之外,我們更能夠透過記錄檔整合應用至 SAS Viya 分析平台的稽核功能,當資源讀取失敗、資源建立、資源更新、資源刪除、嘗試登入、存取權限規則、更新授權規則、… 等相關安全存取操作將會產生稽核記錄,以及稽核記錄主要儲存在 SAS Infrastructure Data Server 的伺服器中,預設情況下保留 7 天,當超過 7 天的記錄,則會儲存至本機儲存位置,至於所謂稽核主要是發生以下類型的事件時就會產生稽核的記錄,分別為:

  1. 針對與資源相關的執行操作:主要包括報表、資料夾或作業等資源的存取操作。
  2. 針對與安全相關的執行操作:主要包括登入至應用程式,以及變更授權規則。

在 SAS Viya 分析平台中的事件驅動架構主要提供了有效的稽核系統資源、活動報表、資料存取等功能,其中稽核將有助於確定分析平台是否按預期執行,或者在出現問題之前是否需要解決任何問題,所有的稽核記錄皆包含以下欄位資訊,請參考下表。

欄位名稱 說明
ID 產生稽核記錄 ID。
Description 描述說明。
TimeStamp 日期時間。
Type 操作類型。
Action 操作執行。
State 操作結果。
User ID 執行使用者、應用程式或服務。
Trace ID 追蹤 ID。
Properties 特別的資訊。
Application 執行操作的應用程式或服務。

再來我們能夠透過「sas-admin」工具查詢特定稽核記錄資料,主要有三個步驟,第一步驟為初始化「sas-admin」工具的設定檔、第二步驟為進行「sas-admin」工具的使用者登入以及第三步驟為透過「sas-admin」工具取得稽核資訊,此外當我們輸入錯誤的指令時系統將會輸出「sas-admin」工具的指令說明,以利我們正確使用「sas-admin」工具的指令,其中比較重要的指令有「limit」預設為 50 筆稽核記錄資料,「details」呈現最詳細的稽核資料的欄位,尤其是「remoteAddress」為連線的客戶端 IP 將能夠符合企業內部的稽核需求,以及透過「after」和「before」設定稽核記錄資料的時間區間,以利定期透過排程 ETL 的方式將稽核記錄資料透過 Java、C#、Python、… 等程式語言整合企業內部稽核記錄資料的機制。此外更多有關 SAS Viya 稽核記錄資料的詳細資訊,建議參考官方文件

初始化「sas-admin」工具的設定檔

1
$ /opt/sas/viya/home/bin/sas-admin profile init

進行「sas-admin」工具的使用者登入

1
$ /opt/sas/viya/home/bin/sas-admin auth login

透過「sas-admin」工具取得稽核資訊

1
$ /opt/sas/viya/home/bin/sas-admin  --output text  --limit "1000" audit list --user-id admuser --sort-by ~timeStamp

輸出「sas-admin」工具的指令說明

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
USAGE:
sas-audit list [command options] [arguments...]

COMMANDS:

OPTIONS:
--action Returns entries that are based on the specified action.
--after Returns entries that are created after the specified timestamp. For example: 2017-05-23 2017-05-23T18:15Z
--application Returns entries that are based on the specified application.
--application-contains Returns entries whose application contains the specified pattern.
--before Returns entries that are created before the specified timestamp. For example: 2017-05-23 2017-05-23T18:15Z
--csv Directs the output as CSV of the specified file.
--description Returns entries that are based on the specified description.
--description-contains Returns entries whose description contains the specified pattern.
--details Shows more detailed output, including the attributes: description, type, remoteAddress
--help, -h Shows help.
--limit "50" Maximum number of records of audit entries to return. The default is 50.
--no-header Excludes the header rows in the various output formats.
--remote-address Returns entries that are based on the specified remote address.
--remote-address-contains Returns entries whose remote address contains the specified pattern.
--resolve-uri Where applicable, an audit entry's URI is resolved to the content location of the audit entry's application. For example, the URI for a SAS Report would contain its name and folder.
--sort-by The sort criteria for the returned records of audit entries. By default, the list is sorted by ID. The valid values are: id, timeStamp, type, action, state, description, user, application, remoteAddress
--start "0" 0-based offset of the first record of an audit entry to return. The default is 0.
--state Returns entries that are based on the specified state.
--type Returns entries based on the specified type.
--user-id Returns entries that are based on the specified user ID.
--user-id-contains Returns entries whose user ID contains the specified pattern.
--user-id-starts-with Returns entries whose user ID starts with the specified pattern.

最後如果需要整合企業內部稽核記錄資料的機制,通常需要明確的了解使用者的操作行為,此時我們主要能夠透過「Action」、「State」、「Application」和「URI」等欄位對應的記錄資料根據不同操作情境進行客製解析,像是我們針對使用者登入的操作情境主要能夠判斷「Application」為「SASLogon」,並且「Action」為「login」,針對使用者登出的操作情境主要能夠判斷「Application」為「SASLogon」,並且「Action」為「SessionDestroyed」,針對建立視覺化報表主要能夠判斷「Application」為「reports」,並且「Action」為「create」,針對儲存視覺化報表主要能夠判斷「Application」為「reports」,並且「Action」為「update」,至於其它相關的操作情境,則請參考下表理應就能夠針對不同操作情境找出適當的判斷規則。

操作情境 ID TimeStamp Action State UserID Application URI
使用者登入 49a67d1c-d32d-403b-a361-be93046b329e 2019-11-01T06:54:35.699Z login success sasuser01 SASLogon
使用者登出 442b0418-8546-49a3-a233-e3d0d8640aba 2019-11-01T06:54:20.178Z SessionDestroyed success sasuser01 SASLogon
建立視覺化報表 3a7d0b79-57c8-459a-84de-f5cfa83e3945 2019-11-01T07:11:04.881Z create success sasuser01 reports /reports/reports/504cc905-73b3-40d5-b1ae-9d9e6669c4a0
儲存視覺化報表 dfec55a6-d292-48f7-988c-501050862ef4 2019-11-01T07:25:39.521Z update success sasuser01 reports /reports/reports/504cc905-73b3-40d5-b1ae-9d9e6669c4a0/content
建立資料計劃專案 337a7bd1-bea5-494f-ba74-fc1e345bac86 2019-11-01T07:32:29.222Z create success sasuser01 dataPlans /dataPlans/plans/41d5cb47-80ed-4a06-82fc-e60b9788b613
儲存資料計劃專案 e7b0d23a-a3d0-4cf1-beb6-45de84cad80a 2019-11-01T07:33:38.165Z update success sasuser01 dataPlans /dataPlans/plans/41d5cb47-80ed-4a06-82fc-e60b9788b613
建立分析模型專案 4e559ee3-8491-47bd-a18a-f69731bd6425 2019-11-01T07:02:26.199Z create success sasuser01 dataMining /dataMining/projects/d66458df-8ec4-459f-a78b-e2cef198a6e8
儲存分析模型專案 4c308481-383f-4e54-93c9-ee31d00862e1 2019-11-01T07:25:04.345Z update success sasuser01 dataMining /dataMining/projects/d66458df-8ec4-459f-a78b-e2cef198a6e8/pipelines/e16b7cf8-181f-4f6c-b686-8d0e6cb62219
建立模型管理專案 93ca1acd-1817-4045-9e13-16c65861feab 2019-11-01T07:17:41.687Z create success sasuser01 modelRepository /modelRepository/projects/6c689bc0-b11f-4595-9f97-488fda4bbe54
儲存模型管理專案 b25c76b6-9d76-44a5-9101-578a57549771 2019-11-01T07:22:52.968Z update success sasuser01 modelRepository /modelRepository/projects/6c689bc0-b11f-4595-9f97-488fda4bbe54
建立工作流程定義專案 0e7ec346-fcf4-429a-8f49-d6c195026eb4 2019-11-01T07:29:01.186Z create success sasuser01 workflowDefinition /workflowDefinition/definitions/WF3E543666-BD1A-4449-B117-24B69E0C66A9
儲存工作流程定義專案 b1c971b9-8802-4c96-bf50-368465f28358 2019-11-01T07:30:52.182Z update success sasuser01 workflowDefinition /workflowDefinition/definitions/WF3E543666-BD1A-4449-B117-24B69E0C66A9

總結現有 SAS Viya 分析平台內建就有提供完整的記錄檔機制,並且能夠透過「sas-admin」工具查詢稽核記錄資料,更進一步與企業內部稽核記錄資料的機制進行整合。

相關資源

⬅️ Go back