Leo Yeh's Blog

SAS 資訊安全 (23)

教學目標

初步了解針對 SAS Viya 分析平台中資料進行存取控管的基本概念。

重點概念

首先存取控制模型主要是規定主體 (Subject) 如何存取物件 (Object) 的一種架構,其主要使用存取控制技術和安全機制來實現模型的規則和目標,至於存取控制模型主要有三種類型,分別為:

  1. 角色存取控制 (Role-based access control,RBAC):主體如何存取物件主要是由企業組織內所委派的職責所需從事的任來設定物件的存取權限。
  2. 強制存取控制 (Mandatory Access Control,MAC):主體如何存取物件主要是由系統管理員根據資訊安全策略設定物件的存取權限。
  3. 自主存取控制 (Discretionary Access Control,DAC):主體如何存取物件主要是由建立物件的使用者設定物件的存取權限,並且使用者是該物件的擁有者。

根據不同企業組織的文化、安全目標和業務運作管理模式將會採用一種或多種存取控制類型,而 SAS Viya 分析平台中針對資料存取控管的授權模型能夠支援上述三種類型嗎?是的,我們的確皆能夠透過設定的方式來達到三種類型的存取控制。

接著在 SAS Viya 分析平台中使用任何資料皆需要建立對應資料檔案路徑對應至 CAS 資料館,此時預設僅有 SAS Administrator 群組中的使用者能夠建立和管理 CAS 資料館,因為 SAS Administrator 群組預設屬於 CAS 資料館中的超級使用者 (Superuser),而 CAS 授權要求不適用於請求使用者已經擔任免除所有適用授權要求的角色,也就是 CAS 伺服器中的超級使用者角色,因此非屬於 CAS 伺服器中的超級使用者角色之使用者皆無法建立和管理 CAS 資料館嗎?不完全正確,因為針對每個 CAS 資料館我們能夠設定三種類型的存取層級給任何使用者和群組,分別為:

  1. 讀取 (Read):主要能夠查看瀏覽 CAS 資料館中的資料物件和讀取其資料值。
  2. 寫入 (Write):主要除了沒有設定 CAS 資料館的存取控制和修改 CAS 資料館的屬性。
  3. 完全控制 (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 資料館對應使用者的存取權限

1
$ /opt/sas/viya/home/bin/sas-admin cas caslibs add-control --server <CAS 伺服器名稱> --caslib <CAS 資料館名稱> --user <使用者 ID> --grant <存取權限>

新增 CAS 資料館對應群組的存取權限

1
$ /opt/sas/viya/home/bin/sas-admin cas caslibs add-control --server <CAS 伺服器名稱> --caslib <CAS 資料館名稱> --group <群組 ID> --grant <存取權限>

刪除 CAS 資料館對應使用者的存取權限

1
$ /opt/sas/viya/home/bin/sas-admin cas caslibs remove-control --server <CAS 伺服器名稱> --caslib <CAS 資料館名稱> --user <使用者 ID> --grant <存取權限>

刪除 CAS 資料館對應群組的存取權限

1
$ /opt/sas/viya/home/bin/sas-admin cas caslibs remove-control --server <CAS 伺服器名稱> --caslib <CAS 資料館名稱> --group <群組 ID> --grant <存取權限>

最後雖然企業對於不同角色的存取控管通常非常複雜,但是 SAS Viya 分析平台中皆能夠透過設定滿足企業不同角色複雜的存取控管,除了支援三種類型存取控制之外,每個存取權限皆有預設、允許和拒絕,而以優先等級來說,拒絕優於允許,允許優於預設,預設為隱含拒絕,請注意所謂預設就是將存取權限刪除,或者將存取權限設定為「無」,所以任何使用者皆能夠屬於多個群組,並且按照不同權限設定的優先等級自動按照以下流程給予最正確的權限設定,分別為:

  1. 如果有針對使用者有被個別設定拒絕或允許的存取權限,則結果為該存取權限優先。
  2. 如果有針對使用者所屬的群組中設定拒絕的存取權限,則結果為未授權。
  3. 如果有針對使用者所屬的群組中設定允許的存取權限,則結果為已授權。

若是所有使用者不論有沒有設定皆為已驗證的使用者 (Authenticated Users),所以我們能夠透過設定已驗證的使用者的存取權限讓企業組織中的任何使用者預設皆有相對應 CAS 資料館的權限,此外 SAS 官方文件針對 CAS 授權機制有提供簡化安全的原則,非常建議企業組織進行參考,分別為:

  1. 限制管理角色的成員資格。
  2. 盡量減少使用單個資料表作為目標。
  3. 最大限度地減少個別使用者作為主體的使用。
  4. 任何未授予的存取權限都會被隱含拒絕,請不要設置不必要的拒絕。
  5. 在對系統進行重大變更之前和之後皆必須執行備份機制。

總結我們針對在 SAS Viya 分析平台的資料存取控管主要將會以 CAS 資料館來進行三種類型的存取控制模型進行設定,以利透過手動設定和自動設定的方式來符合企業組織的資料存取控管需求。

相關資源

⬅️ Go back