第 5 章:資訊安全
此章節主要介紹 SAS 平台如何落實資訊安全
基本介紹
首先不論是 SAS 9 平台或 SAS Viya 平台中所有軟體產品的開發皆有符合完整的軟體開發生命週期 (SDLC) ,並且遵循安全架構設計模式,以利建立符合資訊安全和隱私保護的軟體,其中主要遵循美國國家標準協會所制定的產業最佳實務和標準技術 (NIST) 和開放網站應用程式安全專案 (OWASP) 所歸納出的十大網路資安風險,像是注入攻擊、無效身份驗證、敏感資料外洩、… 等。此外 SAS 研發團隊更會審核和確保所有開源程式碼皆以獲取授權,並且透過軟體組合分析工具在整合之前確保已知安全性的漏洞皆已完成修正,以及執行靜態和動態應用程式的安全測試,更進一步將會持續追踪和修復應用程式的安全漏洞,更多資訊請先參考官方文件。
接著 SAS 9 平台提供資訊安全功能主要包括稽核記錄、身份驗證、授權管理和加密保護,其中所謂稽核記錄主要是將與安全相關的事件作為系統範圍的日誌記錄工具的一部分進行記錄,像是已驗證事件資訊、客戶端連線資訊、使用者和群組變更資訊、…等。所謂身份驗證主要是將每個使用者的外部帳號儲存在 SAS 中繼資料伺服器中作為每個連線使用者建立唯一身份驗證的識別,同時進行區分存取和追蹤使用者相關存取活動。所謂授權管理主要是基於中繼資料的授權存取機制機制整合作業系統和其它系統的授權存取機制,我們能夠針對所有中繼資料物件進行授權管理。所謂加密保護主要是提供加密功能將有助於保護傳輸和儲存中的所有資訊,更多資訊請先參考官方文件。
再來 SAS Viya 平台提供資訊安全功能主要包括網頁安全、身份驗證、授權管理和加密保護,所謂網頁安全主要是針對網站應用程式特定類型的攻擊之安全性保護,以及使用現代網頁瀏覽器中可用的安全性功能。所謂身份驗證主要是驗證使幅或服務帳號身份的安全方式,像是主機驗證、LDAP 驗證、整合驗證、… 等。所謂授權管理主要是確定哪些使用者將能夠使用哪些資源,並且授權管理主要由兩個授權系統組成,分別為一般授權系統和 CAS 授權系統。所謂加密保護主要是提供加密功能將有助於保護傳輸和儲存中的所有資訊,更多資訊請先參考官方文件。
最後企業客戶通常還會想了解使用者登入網站是否為 Session 方式進行連線和網站應用程式的 Time-out 的時間是否能夠調整呢?答案為是的,不論是 SAS 9 平台或 SAS Viya 平台皆能夠透過參數或屬性設定來調整網站應用程式的 Time-out 的時間,預設時間皆為 30 分鐘,此外當使用者登入 SAS 平台中的網站進行操作時,皆是以 Session 方式進行連線。此外不論是 SAS 9 平台或 SAS Viya 平台皆有提供能夠根據企業客戶的需求進行客製化開發儲存任何複雜操作和變更記錄之功能機制,以利進行符合資安政策和稽核規範的要求。
總結不論是 SAS 9 平台或 SAS Viya 平台中所有軟體產品皆有提供完善的機制透過設定完成,但是針對複雜操作和變更記錄,則需要進行客製化開發服務,才能夠符合企業中資安政策和稽核規範要求。
SAS 9
首先管理使用者主要可以分為兩種層級一是 Administrators ,二是 Unrestricted Users ,其中 Unrestricted 角色所關聯的內部 SAS 帳號為 sasadm@saspw,其中所有 SAS 內部帳號皆會有 @saspw,內部帳號被使用提供主要初始化為 Metadata 伺服器。角色主要決定哪一個使用者在操作應用程式時可以看到哪些介面元素,此外在不同應用程式中提供基於角色的管理稱為能力,也就是說使用者角色是能力的集合,當使用者或群組為特定角色時才能夠執行正確的行為,當我們安裝 SAS 智慧平台時 SAS 部署精靈會為了幾個使用者角色建立 Metadata 定義,初始角色主要被建立於執行系統管理任務,Metadata 伺服器主要有三個角色,分別為無限制角色、使用者管理角色和營運操作角色,以及 SAS Management Console 主要有二個角色,分別為進階角色和內容管理角色,此外 SAS 部署精靈也會針對特定的客戶端應用程式建立角色,其中包 SAS Add-in for Microsoft Office、SAS Enterprise Guide、SAS Management Console 和 SAS Web Report Studio。
接著所謂 Metadata 伺服器中的無限制角色之初始名稱為 META: Unrestricted User Role,初始顯示為 Metadata Server: Unrestricted,這個角色可以忽略 SAS 權限設定直接存取所有 Metadata 除了帳號與密碼,並且執行所有在使用者管理角色和營運操作角色中的使用者可以執行的功能,同時當 Metadata 伺服器暫停時還能夠繼續存取 Metadata 儲存體和使用 SAS Management Console 中的功能。因此無限制角色除了應用於必須在 Metadata 伺服器暫停時的執行任務,以及針對未註冊的基礎儲存體進行建立、刪除和格式化等相關應用。此外若要使用此角色的帳號,僅能夠透過 SAS Management Console 進行登入操作,無法透過其它客戶端應用程式進行登入操作。以及所謂 Metadata 伺服器中的使用者管理角色之初始名稱為 META: User and Group Administrators Role,初始顯示為 Metadata Server: User Administration,一般來說,SAS 部署精靈會指定的 SAS 管理群組至這個角色,此角色的使用者會建立和修改使用者、群組和角色,並且被授權更新使用者密碼,此外此角色無法讀取存在的密碼,除非密碼是該使用者所擁有登入資格。以及所謂 Metadata 伺服器中的營運操作角色之初始名稱為 META: Operators Role,初始顯示為 Metadata Server: Operation,一般來說,SAS 部署精靈會指定的 SAS 管理群組至這個角色,此角色的使用者會停止、暫停、恢復和重新整理 Metadata 伺服器,新增、刪除、格式化和取消註冊 Metadata 儲存體 (除了基礎儲存體之外),以及管理Metadata 伺服器備份和還原工具,其中所謂格式化是指寫入和顯示的資料類型,主要可分為數值、字元、日期、時間和時間截記。
最後 SAS Management Console 中的進階角色初始化被設定允許存取在 SAS Management Console 中全部 plug-in 的功能,SAS 部署精靈會指定的 SAS 管理群組至這個角色。在 SAS Management Console 中的內容管理角色初始化被設定啟用存取 SAS Management Console 中的外掛,其中主要包括 User Manager 、 Authorization Manager 和 Library Manager,以及存取資料夾頁籤。
SAS Viya
授權管理
首先授權主要是用於確定哪些使用者能夠存取哪些資源,在 SAS Viya 平台中主要有兩個授權系統,當受驗證的使用者未指定任何權限登入至 SAS Viya 平台中的 SAS Environment Manager 時,預設則會在瀏覽列中看到資料、伺服器、內容、工作和我的認證等項目,其中資料的授權對應為 Cloud Analytic Services (CAS) 授權系統,而內容的授權對應為一般授權系統,並且每個系統皆使用不同的模型來保護不同類別的資源。此外這兩個系統皆能夠共享同一個身份提供者,並且預設禁止 (隱含) 任何未被允許授權的存取權限,以及皆能夠使用 SAS Environment Manager 或命令提示工具管理這兩個授權系統。
接著 Cloud Analytic Services (CAS) 授權系統和一般授權系統的詳細比較資訊,請參考下表。
特性 | CAS 授權系統 | 一般授權系統 |
基礎 | 資料庫管理系統風格的存取控制。 | 以屬性為基礎的存取控制。 |
物件 | CAS 物件,像是資料館和資料表。 | 一般物件,像是資料夾和報表。 |
繼承方式 | 主要透過物件的層次結構,像是從資料館至其資料表。 | 透過容器層次結構,像是從檔案資料夾至其成員。 |
優先權 | 按照物件的層次結構 (最接近的優先),然後按照身份類型 (使用者優先),最後按照設定類型 (拒絕優先)。 | 按照設定類型 (禁止總是優先)。 |
特殊存取 | 主要以篩選器進行列層級的存取。 | 主要以布林規則展開式進行有條件的存取。 |
最高權限 | 超級使用擁有最高權限。 | SAS 管理員群組擁有最高權限。 |
此外在 CAS 授權系統中,成員資格,繼承和列層級篩選器皆會影響存取,至於在一般授權系統中,有關請求使用者,目標資源和環境的資訊皆會影響存取,每個存取請求皆有一個上下文,其中包括環境資料,像是時間和設備類型,並且能夠使用條件來結合環境限制。
再來 CAS 授權系統主要透過「sas-admin」命令提示工具,以「cas」參數進行授權管理,而一般授權系統主要透過「sas-admin」命令提示工具,以「authorization」參數進行授權管理,像是我們能夠透過「sas-admin cas tables list-controls —server serverA —caslib caslibA —table tableA」命令輸出 tableA 的直接存取控制列表,更多使用範例請參考官方文件,以及我們能夠透過「sas-admin authorization show-rule —id d85144aa-79dc-4852-b949-645cc5ff8ffc —details」命令顯示特定規則的詳細屬性,更多使用範例請參考官方文件。此外若是企業有複雜權限管理的需求時,則我們就能透過「sas-admin」命令提示工具進行客製開發來滿足需求,像是企業資訊人員從資料庫產生 CSV 資料檔之後,我們再透過 Python 程式碼整合「sas-admin」命令提示工具進行網域使用者權限同步、群組權限同步和物件授權同步的自動化整合應用。
最後 SAS Viya 平台其本質上為開放,它將是一個非常強大分析平台,能夠透過提供的命令提示工具進行客製化開發,但是若是實際用過「sas-admin」命令提示工具,就能發現為了解決簡單的情境應用就會需要執行更複雜的任務,此時會整合許多個「sas-admin」命令提示工具,非常麻煩,因此 SAS 官方就提供「pyviyatools」基於「sas-admin」命令提示工具的套件,讓程式開發人員直接透過 Python 程式針對 SAS Viya 平台的授權系統進行自動化操作。此外這個「pyviyatools」套件是開放源始碼,所以若當我們發現「pyviyatools」套件無法解決企業客戶所面臨複雜的整合問題,則建議參考 Github 專案中相關的 Python 程式碼進行彈性調整,以利解決企業客戶所面臨複雜的整合問題。
存取控制
首先存取控制模型主要是規定主體 (Subject) 如何存取物件 (Object) 的一種架構,其主要使用存取控制技術和安全機制來實現模型的規則和目標,至於存取控制模型主要有三種類型,分別為:
角色存取控制 (Role-based access control,RBAC):主體如何存取物件主要是由企業組織內所委派的職責所需從事的任來設定物件的存取權限。
強制存取控制 (Mandatory Access Control,MAC):主體如何存取物件主要是由系統管理員根據資訊安全策略設定物件的存取權限。
自主存取控制 (Discretionary Access Control,DAC):主體如何存取物件主要是由建立物件的使用者設定物件的存取權限,並且使用者是該物件的擁有者。
根據不同企業組織的文化、安全目標和業務運作管理模式將會採用一種或多種存取控制類型,而 SAS Viya 分析平台中針對資料存取控管的授權模型能夠支援上述三種類型嗎?是的,我們的確皆能夠透過設定的方式來達到三種類型的存取控制。
接著在 SAS Viya 分析平台中使用任何資料皆需要建立對應資料檔案路徑對應至 CAS 資料館,此時預設僅有 SAS Administrator 群組中的使用者能夠建立和管理 CAS 資料館,因為 SAS Administrator 群組預設屬於 CAS 資料館中的超級使用者 (Superuser),而 CAS 授權要求不適用於請求使用者已經擔任免除所有適用授權要求的角色,也就是 CAS 伺服器中的超級使用者角色,因此非屬於 CAS 伺服器中的超級使用者角色之使用者皆無法建立和管理 CAS 資料館嗎?不完全正確,因為針對每個 CAS 資料館我們能夠設定三種類型的存取層級給任何使用者和群組,分別為:
讀取 (Read):主要能夠查看瀏覽 CAS 資料館中的資料物件和讀取其資料值。
寫入 (Write):主要除了沒有設定 CAS 資料館的存取控制和修改 CAS 資料館的屬性。
完全控制 (Full Control):主要能夠完全管理 CAS 資料館,但是沒有權限移除 CAS 資料館。
所以當使用者非屬於 CAS 伺服器中的超級使用者角色之使用者,若該使用者有被設定為對於該 CAS 資料館有完全控制的存取層級,則該使用者雖然無法建立和移除 CAS 資料館,但是能夠管理 CAS 資料館的存取權限。此時我們回到三種類型的存取控制,SAS Viya 分析平台針對 CAS 資料館預設是僅能由屬於超級使用者角色的使用者進行建立和管理 CAS 資料館,則屬於強制存取控制 (MAC),同時建立 CAS 資料館的使用者預設將會成為 CAS 資料館的擁有者,也就是被設定為完全控制的權限,此時若使用者為非系統管理員,則屬於自主存取控制 (DAC),此外屬於超級使用者角色的使用者將能夠指定任何使用者或群組,因此若當我們指定為群組時,則屬於角色存取控制 (Role-based access control,RBAC),為何呢?因為在 SAS Viya 分析平台中沒有角色的概念,但是我們能夠針對不同群組設定對應 CAS 資料館不同功能的存取權限之後,僅需要將特定使用者加入至群組中,就能夠像是以角色為基礎的概念直接提供適當的 CAS 資料館存取權限給該使用者。
再來若是企業組織主要以角色存取權限為基礎進行存取控制,此時就會需要進行自動化整合不同角色對應的 CAS 資料館,預設我們能夠分為三個存取層級,而每個存取層級將會對應不同的存取權限,請參考下表。
存取層級 | 存取權限 |
讀取 (Read) | ReadInfo, Select |
寫入 (Write) | ReadInfo, Select, LimitedPromote, Promote, CreateTable, DropTable, DeleteSource, Insert, Update, Delete, AlterTable |
完全控制 (Full Control) | ReadInfo, Select, LimitedPromote, Promote, CreateTable, DropTable, DeleteSource, Insert, Update, Delete, AlterTable, AlterCaslib, ManageAccess |
當然我們更能夠針對企業不同的角色定義建立不同的角色,並且根據不同的角色設定對應的存取權限,此時我們除了能夠透過 SAS Environment Manager 網站畫面手動設定不同 CAS 資料館對應不同使用者和群組的存取權限,更能夠透過 SAS Viya Command-Line Interfaces (CLI) 指令工具自動設定不同 CAS 資料館對應不同使用者和群組的存取權限,請注意在設定時必須確保所提供的使用者 ID 或群組 ID 正確無誤,以及在 CAS 授權概念中主體對應的術語為 Principal,物件對應的術語為 Target,存取權限對應的術語為 Permission,授權元素的組合的術語為 Access Control,因此若我們授權元素的組合為存取控制將 ReadInfo 授予 caslibA 上的 groupA 時,則 ReadInfo 為 Permission,caslibA 為 Target,groupA 為 Principal,則透過 SAS Viya Command-Line Interfaces (CLI) 指令工具自動化設定的指令為「/opt/sas/viya/home/bin/sas-admin cas caslibs add-control —server serverA —caslib caslibA —group groupA —grant ReadInfo」。
新增 CAS 資料館對應使用者的存取權限
新增 CAS 資料館對應群組的存取權限
刪除 CAS 資料館對應使用者的存取權限
刪除 CAS 資料館對應群組的存取權限
最後雖然企業對於不同角色的存取控管通常非常複雜,但是 SAS Viya 分析平台中皆能夠透過設定滿足企業不同角色複雜的存取控管,除了支援三種類型存取控制之外,每個存取權限皆有預設、允許和拒絕,而以優先等級來說,拒絕優於允許,允許優於預設,預設為隱含拒絕,請注意所謂預設就是將存取權限刪除,或者將存取權限設定為「無」,所以任何使用者皆能夠屬於多個群組,並且按照不同權限設定的優先等級自動按照以下流程給予最正確的權限設定,分別為:
如果有針對使用者有被個別設定拒絕或允許的存取權限,則結果為該存取權限優先。
如果有針對使用者所屬的群組中設定拒絕的存取權限,則結果為未授權。
如果有針對使用者所屬的群組中設定允許的存取權限,則結果為已授權。
若是所有使用者不論有沒有設定皆為已驗證的使用者 (Authenticated Users),所以我們能夠透過設定已驗證的使用者的存取權限讓企業組織中的任何使用者預設皆有相對應 CAS 資料館的權限,此外 SAS 官方文件針對 CAS 授權機制有提供簡化安全的原則,非常建議企業組織進行參考,分別為:
限制管理角色的成員資格。
盡量減少使用單個資料表作為目標。
最大限度地減少個別使用者作為主體的使用。
任何未授予的存取權限都會被隱含拒絕,請不要設置不必要的拒絕。
在對系統進行重大變更之前和之後皆必須執行備份機制。
總結我們針對在 SAS Viya 分析平台的資料存取控管主要將會以 CAS 資料館來進行三種類型的存取控制模型進行設定,以利透過手動設定和自動設定的方式來符合企業組織的資料存取控管需求。
開始使用
登入至 SAS Viya 分析平台。
在畫面左上方點選【顯示應用程式功能表】鈕。
選取【管理環境】。
在畫面左下角點選【展開瀏覽列】。
選取【資料】。
選取【資料來源】頁籤,點選【cas-shared-default】。
在【CASUSER (...)】個人檔案系統資料館上,按右鍵點選【編輯授權】。
因為這是個人的 CAS 資料館,所以我們不可以檢視或管理個人 CAS 資料館的存取權限,按下【關閉】鈕。
在【Public】資料館上,按下右鍵點選【檢視授權】。
查看【Public】資料館的個別權限之存取層級,按下【關閉】鈕。
在【Samples】資料館上,按下右鍵點選【檢視授權】。
選取【內容】。
在【My Folder】上,按下右鍵點選【編輯授權】。
在【驗證的使用者】對應的【Read】權限圖示。
點選【允許】。
確認直接設定的權限圖示,按下【儲存】鈕,即完成授權設定。
Last updated