Encryption

SAS 資訊安全 (18)

教學目標

初步了解 SAS Viya 平台加密技術的基本概念。

重點概念

首先 Apache HTTP Server 是 SAS Viya 使用者主要的進入點,然而 SAS Viya 部署時預設會自動產生簽署憑證,此時我們是否能夠設定為客製產生的憑證呢?答案是可以的,但是必須先請客戶確認憑證是否正確被客戶端所信任,所謂客戶端主要包括瀏覽器、行動裝置和 REST API 客戶端。

接著設定主要可以分為事先設定和事後設定,建議透過事先進行設定,並且透過 Ansible 進行自動化部署,相關步驟分別為:

  1. 安裝 Apache HTTP Server 和 mod-ssl。
  2. 使用 OpenSSL 工具建立私密金鑰。
  3. 使用 OpenSSL 工具建立憑證請求檔。
  4. 透過憑證請求檔取得被簽署的憑證。
  5. 部署被簽署的憑證和更新 Apache HTTP Server 相關設定。
  6. 重新啟動 Apache HTTP Server 和驗證 HTTPS 相關設定。

安裝 Apache HTTP Server 和 mod-ssl

1
$ sudo yum install -y httpd mod_ssl

使用 OpenSSL 工具建立私密金鑰

1
$ openssl genrsa -out /etc/pki/tls/private/web_server_key.pem 2048

使用 OpenSSL 工具建立私密金鑰

1
$ openssl req -new -key /etc/pki/tls/private/web_server_key.pem -out /etc/pki/tls/certs/web_server_csr.pem

其中憑證請求檔主要用於組織內部簽署或商業憑證頒發機構外簽署,當內部簽署時將會非常快速且有效率,反之採用外部簽署時將會花費許多成本和時間。請注意為了確保憑證能夠正確被瀏覽器處理,所以被簽署的憑證中的 Subject Alternate Names 需要為對應的完整主機名稱,但也有可能是包括 IP 位址的資訊。

再來若是 Linux 作業系統則建議部署 SAS Viya 之前就先進行設定,主要會透過 Ansible 部署與 Apache HTTP Server 和 mod-ssl 等套件進行連結,請注意我們必須在進行 Ansible 部署之前,先確認相關套件的安裝、設定和測試是否正確,並且更新的 vars.yml 設定檔中的 HTTPD_CERT_PATH 屬性值指向 CA 憑證鏈檔,此憑證鏈檔主要包括 CA 根憑證和 CA 中繼憑證,但若是 Apache HTTP Server 已經包括完整的憑證鏈,則就不需要進行設定。當確認無誤之後執行 Ansible 將會增加 CA 憑證錄檔案至「/opt/sas/viya/config/etc/SASSecurityCertificateFramework/cacerts/」目錄中,並且命名為 httpproxy-XXX-ca.crt,其中 XXX 主要為 inventory.ini 設定檔中定義的主機名稱,以及將 CA 憑證鏈加入至 Trust Stores 中,至於 Ansible HTTP Server 憑證將會被儲存在 SAS Configuration Server 中,以利確保 Apache HTTP Server 憑證皆有皆加至所有 Trust Stores 中。

最後我們當然也能夠在部署 SAS Viya 之後再取代預設的伺服器憑證檔「/etc/pki/tls/certs/localhost.crt」和私密金鑰「/etc/pki/tls/private/localhost.key」,以及更新 Apache HTTP Server 憑證設定,主要修改伺服器憑證選項「SSLCertificateFile」和私密金鑰選項「SSLCertificateKeyFile」,當確認無誤之後必須重新啟動 httpproxy 和 httpd 服務才會生效。除此之外我們還必須手動更新 CA 憑證鍵至 Trust Stores 中,主要修改 vars.yml 中屬性值「HTTPD_CERT_PATH」指定憑證鏈,請注意必須設定 Apache HTTP Server 而非 Ansible Controller 的主機伺服器,設定完成之後必須使用 Ansible Playbook 發佈 CA 憑證鏈和更新 Trust Stores,主要指令為「ansible-playbook -i inventory.ini utility/distribute-httpd-certs.yml」,當確認無誤之後必須重新啟動所有服務才會生效。

相關資源

SAS 資訊安全 (17)

教學目標

初步了解 SAS Viya 平台加密技術的基本概念。

重點概念

首先在數位憑證和私密金鑰主要是由 SAS Secrets Manager 所產生,主要有三種類型的憑證,分別為:

  1. Root Certificate Authority Certificate & Private Key:主要是憑證頒發機構的根憑證和私密金鑰,被使用於簽署憑證頒發機構的中繼憑證,預設有效期間為 10 年。
  2. Intermediate Certificate Authority Certificate & Private Key:主要是憑證頒發機構的中繼憑證和私密金鑰,被使用於簽署個別服務的伺服器憑證,預設有效期間為 7 年。
  3. Server Certificates & Private Keys:主要是個別服務的伺服器憑證和私密金鑰,被使用於啟用安全連線,預設有效期為 7 年,但若是產生微服務和網站應用程式的伺服器憑證,則預設有效期間為 1 年。

接著我們可以透過 SAS Environment Manager 直接設定 Encryption in-motion 相關設定,以利 SAS Secrets Manager 產生數位憑證和私密金鑰,主要包括四大領域,分別為:

  1. Database Traffic:主要控制不同網段資料庫伺服器的流量,包括 SAS Infrastructure Data Server 和 EP Data Connectors 的連結埠。
  2. SAS Data Traffic:主要控制傳輸資料至 SAS 伺服器的流量,包括 CAS Client、SAS Compute Server、SAS/CONNECT Server、SAS/CONNECT、Spawner、SAS Event Stream Processing Server 的連接埠。
  3. Server Control Traffic:主要控制伺服器叢集之間傳送的流量,包括 SAS Launcher Server 的連接埠。
  4. Web Traffic:主要控制網站應用程式之間任何網路的流量,包括 Apache HTTP Server、SAS Cache Locator、SAS Message Broker、CAS REST API、SAS Event Stream Processing 和 SAS Studio 的連接埠。

此外 SAS Secret Manager 必須啟用安全連線,無法手動停用安全連線。SAS Configuration Server 主要則是透過 vars.yml 中的 SECURE_CONSUL 和 DISABLE_CONSUL_HTTP_PORT 參數設定安全連線。SAS Workspace Server 和 SAS Object Spawner 主要是屬於 SAS Data Traffic,但是並不會使用安全連線,所以啟動時將會停用 AES 加密。至於部署 SAS Viya 時預設將啟用 Encryption in-motion 四大領域的設定,但是我們也能夠手動停用,主要在部署時先修改 sitedefault.yml 設定檔增加以下設定值。

1
2
3
4
5
6
7
config: 
application:
sas.security:
network.web.enabled: false
network.sasData.enabled: false
network.databaseTraffic.enabled: false
network.serverControl.enabled: false

再來我們主要會請求 SAS Secrets Manager 將會產生憑證和私密金鑰,或者透過特定 Token 驗證請求 REST API,SAS Secrets Manager 會將私密金鑰和簽署憑證儲存在快取中,接著將會取出確認憑證是否有效。其中驗證的 Token 主要會儲存在「/opt/sas/viya/config/etc/SASSecurityCertificateFramework/tokens/」路徑中,至於其預設有效期間為 7 年。若我們需要修改 Token 的有效期間,則能夠透過 SAS Environment Manager 進行設定

最後微服務的憑證,預設有效期間為 1 年,當到達 75% 的期間,也就是 9 個月時將會自動更新憑證,此時只要是更新憑證皆需要重新啟動微服務,若有問題發生請先確認憑證是否正確像是對應正確的主機名稱和憑證授權機構 (Certificate Authority,CA) ,以及確認 SAS Configuration Server 的「sas.vault.pki.reuseValidCertificate」屬性值是否為「false」代表不會重複使用有效的憑證。

相關資源

SAS 資訊安全 (16)

教學目標

初步了解 SAS Viya 平台加密技術的基本概念。

重點概念

首先目前有越來越多的產業,像是零售、製造、媒體、金融、政府、醫療、…等產業,目前皆需要使用加密技術,主要解決法規遵循、防止機敏資料外洩、移轉雲端部署、…等相關問題,若是沒妥善進行加密處理將會影響客戶的聲譽,以及遭受罰款。此時 SAS Viya 解決方案就能有效進行加密處理,以解決客戶所面臨的問題,加密技術在 SAS 中針對加密的主要有三種類型,分別為:

  1. At-rest Encryption:主要針對儲存空間中的資料進行加密。
  2. In-motion Encryption:主要針對處理程序之間傳輸的資料進行加密。
  3. In-use encryption:主要針對移出和移入記憶體中的資料進行加密。

其中 In-use Encryption 的加密類型,因為需要硬體和作業系統修改相關的操作,但是 SAS Viya 解決方案主要以應用程式軟體資料安全為主,所以目前並沒有對應的加密技術。

接著加密主要是由數學程序執行資料加密的計算,也就是加密演算法,透過演算法資訊將會被轉換為無意義的密文,並且需要使用金鑰才能夠進行密文的解密。金鑰也就是密碼金鑰主要是被使用於加密演算法的位元字串,是加密運作中最核心且最重要的部份。至於加密金鑰的技術主要有五種,分別為:

  1. Symmetric Key Encryption:相同金鑰進行加密和解密。
  2. Asymmetric Key Encryption:一個金鑰進行加密,另一個金鑰進行解密。
  3. Public Key Encryption:分享公開金鑰進行加密,僅有私密金鑰才能夠解密。
  4. Transport Layer Encryption (TLS):主要提供隱私和資料完整性得安全通訊。
  5. Hashing:轉換字元文字至固定長度值或關鍵值。

其中 Symmetric Key Encryption 非常快,強度取決於演算法和金鑰長度,但是困難於安全的分散金鑰,像是 3DES、AES。Asymmetric Key Encryption 非常慢,強度取決於演算法和金鑰長度,能夠安全的分散公開金鑰,像是 TLS 和 SSH。Public Key Encryption 則常被用於安全連線或數位簽章等應用。Transport Layer Encryption (TLS) 主要有兩層,第一層是 Record Protocol 提供連線安全,主要使用對稱金鑰加密。第二層是 Handshake Protocol 提供允許伺服器和客戶端驗證另一方、協商加密演算,以及用於資料交換的加密金鑰,也就是公開金鑰。 Hashing 主要透過加密雜湊函數或數學演算進行單向轉向,無法還原,此外還可以再透過 Salt 隨機資料讓雜湊值更安全,主要確保資料的完整性,避免資料傳輸時被更改。

再來在 SAS Viya 中針對加密技術的關鍵服務主要有四個,分別為:

  1. Apache HTTP Server:主要透過代理的功能實作 HTTPS 安全連線之應用。
  2. SAS Secrets Manager:主要建立私密金鑰和簽署給予服務使用的伺服器憑證。
  3. SAS Credentials Microservice:主要儲存對於使用者存取第三方資源的外部憑據。
  4. SAS Configuration Server:主要儲存加密設定的資訊。

最後 SAS Viya 在 Linux 作業系統中將會以預設設定 Encryption in-motion 安全連線,主要以是 Transport Layer Encryption (TLS) 加密技術為主,但是 SAS Cloud Analytics Services inter-node communication 和 SAS Embedded Process 預設不會進行設定,若有需要則要進行手動設定,此外 SAS Viya 主要是透過 SAS Secrets Manager 產生服務安全連線 (HTTPS) 相關的私密金鑰和簽署伺服器憑證,請注意並不包括 Apache HTTP Server 的部份,因為 Apache HTTP Server 相關的私密金鑰和簽署伺服器憑證主要還是會以企業環境因素和作業系統為主。

相關資源

SAS 資訊安全 (11)

基本介紹

教學目標

初步了解在 SAS Viya 平台中資訊安全應用的基本概念。

重點概念

在 SAS Viya 平台中主要有四大資訊安全應用,分別為:

  1. 身份驗證
  2. 授權
  3. 加密
  4. 網站安全

首先身份驗證主要是驗證使用者或服務帳號識別,主要有三種驗證方式,分別為:

  1. Host Authentication
  2. Direct LDAP Authentication
  3. Dual Authentication

接著授權主要是決定使用者可以使用哪一些資源,在 SAS Viya 平台中授權階層主要由兩個授權系統所組成,分別為:

  1. CAS Authorization System
  2. General Authorization System

再來加密主要是透過轉換保護傳輸或儲存中的資料,針對 SAS Viya 平台的部署主要有兩種加密方式,分別為:

  1. Data in Motion
  2. Data at Rest

其中 Data in Motion 主要透過 TLS 安全連線保護傳輸中的資料,安裝 SAS Viya 平台預設會提供自簽憑證讓使用者能夠透過 HTTPS 安全連線直接存取 SASHome 網站。至於 Data at Rest 主要是設定資料加密的技術保護儲存中的資料,安裝 SAS Viya 平台預設不會啟動加密。

最後網站安全主要是處理不同類型的攻擊方式入侵網站應用程式,以及使用網站瀏覽器的安全功能,在 SAS Viya 平台針對網站安全風險主要有以下相關屬性,分別為:

  1. Cross-Origin Resource Sharing
  2. Cross-Site Request Forgery (CSRF)
  3. X-Frame-Options
  4. Content-Security-Policy
  5. X-Content-Type-Options
  6. X-XSS-Protection

總結 SAS Viya 平台相較於 SAS 9 平台針對身份驗證、授權、加密和網站安全有更完整的資訊安全應用,尤其是預設直接設定自簽憑證以利使用者進行安全連線,接著僅需更換自簽憑證為企業內憑證設定,理應就能滿足許多企業內部資訊安全最小需求。

相關資源

SAS Viya (8)

教學目標

初步了解在 SAS Viya 中針對資訊安全三個方面的應用。

重點概念

首先在 SAS Viya 中針對資訊安全主要有三個方面的應用,分別為:

  1. 驗證 (Authentication)
  2. 授權 (Authorization)
  3. 加密 (Encryption)

接著驗證主要識別使用者身份或服務帳號方面的安全,我們主要會透過下述三種模式進行驗證,分別為:

  1. 主機驗證 (Host Authentication)
  2. 直接驗證 (Direct LDAP Authentication)
  3. 雙重驗證 (Dual Authentication)

其中所謂主機驗證是指透過主機進行任何驗證機制的處理請求,當我們登入至 SAS Studio 時將會關聯 Object Spawner 要求主機驗證憑證,當驗證成功將會啟動工作站伺服器,此外當我們從 SAS Studio 中使用 CAS 服務時,則必須在 CAS 伺服器主機進行驗證。所謂直接驗證是指過 LDAP 提供者進行直接的驗證,此外針對單一登入 (Single Sign On,SSO) 也支援 IWA、OAuth 和 SAML 等機制,請注意 IWA、OAuth 和 SAML 僅能修改登入服務 SAS Logon Manager 的識別驗證機制,無法修改識別服務 Identities Service 的使用者和群組資訊,當我們登入 SAS Visual Analytics 或 SAS Environment Manager 時,則必須使用此模式進行驗證。所謂雙重驗證主要是同時使用主機驗證和直接驗證,若是 servicesBaseUrl 選項被設定時,則 CAS 需要進行雙重驗證,其中 LDAP 提供者又可分為相同提供者 (Shared Provider) 和不同提供者 (Different Provider),當我們登入 CAS Server Monitor 和從 SAS Studio 存取 CAS 服務時皆需要使用雙重驗證,此外當我們透過 SAS Visual Analytics 或 SAS Environment Manager 存取 CAS 服務時必須確認 OAuth Token 是有效才能夠正常操作。

再來授權主要是決定哪一個資源被可哪一個使用者使用,SAS Viya 授權層級主要由兩個授權系統所組成,分別為:

  1. CAS 授權系統 (CAS authorization system)
  2. 一般授權系統 (General authorization system)

其中任何系統皆使用不同的模型保護不同的資源類別,請注意初始和預設存取是被限制的,主要有五個重點,分別為:

  1. 任何未被授予的存取是被禁止的。
  2. 預先定義的物件會被預先定義的規則或存取控制所保護。
  3. 只有特定群組或角色的成員才能夠存取特權管理的功能。
  4. 使用者存取物件的管理是會被繼承、同時也能設定規則和直接設定。
  5. 一般使用者是有限的存取,僅可以存取個人資料庫和共享的資料夾。

最後加密主要是將資料轉換為無法理解的形式來進行傳輸或儲存的安全應用,分別為:

  1. 資料傳輸 (Data in Motion)
  2. 資料儲存 (Data at Rest)

其中所謂資料傳輸主要是提供 TLS 安全性,並且遵循最高的資安標準,在安裝時 SAS Viya 提供 HTTPS 安全存取的方式。所謂資料儲存主要是針對 PATH、HDFS 和 CASLIB 進行加密設定。

總結本篇主要是簡單介紹 SAS Viya 中針對資訊安全三個方面的應用,分別為驗證、授權和加密,其實也就是企業中經常提到的資訊安全之應用,分別為:

  1. 單一登入應用,也就是驗證應用。
  2. 權限控管應用,也就是授權應用。
  3. 安全連線應用,也就是加密應用。

相關資源