Leo Yeh's Blog

SAS 系統管理 (82)

教學目標

初步了解 SAS 9 平台中管理稽核記錄的基本概念。

重點概念

首先在 SAS 9 平台針對 SAS 網站應用程式和的 SAS 中間層服務主要能夠提供稽核功能,其能夠記錄使用者透過系統執行的任何動作。此外針對所有SAS 平台的部署皆會在登入、登出和不成功登入時建立稽核記錄,並且針對不同的 SAS 解決方案將會有不同的記錄資訊。

接著稽核記錄主要被儲存在 SAS Web Infrastructure Platform 資料庫中,並且會將稽核記錄儲存至兩個資料表中,分別為 SAS_AUTDIT 和 SAS_AUTDIT_ENTRY 兩個資料表,以及針對記錄檔歸檔,則還會提供 SAS_AUTDIT_ARCHIVE 和 SAS_AUTDIT_ENTRY_ARCHIVE 資料表中。 其中稽核記錄中通常包括許多不同類型的稽核資訊,並且所有稽核記錄一定會有使用者編號、行為代碼、資料和時間等資訊。

再來當稽核功能啟動時,記錄將會被新增至 SAS_AUDIT 和 SAS_AUDIT_ENTRY 資料表,並且記錄將會被歸檔至 SAS_AUDIT_ARCHIVE 和 SAS_AUDIT_ENTRY_ARCHIVE 資料表中,每個歸檔工作主要是被使用於控制記錄進行歸檔,並且歸檔工作將會讀取在 SAS_AUDIT_ARCHIVE_RULE 資料表中的歸檔規則。此外歸檔工作通常會在 SAS Web Infrastrature Platform Services 啟動時開始,預設將會在每個星期一進行歸檔工作,並且我們也能夠透過 JVM 選項的排程設定指定特定歸檔的時間。

JVM 選項設定

1
-Dsas.audit.archive.cron="second minute hour day_of_month month day_of_week"

最後當 SAS 平台執行一段時間之後,SAS_AUDIT_ARCHIVE 和 SAS_AUDIT_ENTRY_ARCHIVE 資料表將會累積許多記錄資料,此時我們可能會需要刪除 SAS_AUDIT_ARCHIVE 和 SAS_AUDIT_ENTRY_ARCHIVE 資料表中的資料,以利避免因為 SAS Web Infrastructure Platform Services 資料庫的資料量過大導致 SAS 平台效能受影響,請參考 SQL 刪除指令。此外我們也能夠透過 psql 工具執行 SQL 定期刪除指令清除資料表中 30 天以上的資料,此時我們僅需將下述指令打包成批次檔設定為 Windows 排程工作就能夠定期進行資料表刪除。

SQL 刪除指令

1
2
3
DELETE FROM sas_audit_entry_archive where audit_id in (select audit_id 
from sas_audit_archive where timestamp_dttm < ‘year-month-day:time’);

DELETE FROM sas_audit_archive where timestamp_dttm < ‘year-month-day:time’;

SQL 定期刪除指令

1
2
3
4
5
DELETE FROM public.sas_audit_entry_archive
where audit_id in (select distinct audit_id from public.sas_audit_archive where
sas_audit_archive.timestamp_dttm < NOW() – INTERVAL30 DAYS’) ;

DELETE FROM public.sas_audit_archive
WHERE sas_audit_archive.timestamp_dttm < NOW() – INTERvAL30 DAYS’ ;

批次執行指令

1
> psql -p 9432 -h xxxxxxx.xxxx.sas.com -d SharedServices -U dbmsowner -f D:\SAS\delete_audit.sql -o D:\SAS\Log\output.txt

相關資源

⬅️ Go back