SSO

SAS 資訊安全 (5)

基本介紹

教學目標

初步了解 SAS 解決方案中有關單一登入的運作原理和資訊安全政策相關設定。

重點概念

目前若要導入解決方案至企業中,有關 SAS 解決方案中單一登入一直是最被關注的資訊安全議題,在資訊安全中存取控制 (Access Control) 之單一登入 (Single Sign-On,SSO) 皆是企業評估解決方案必須考量的項目之一,因此在 SAS 解決方案中要如何設定單一登入 (Single Sign-On,SSO)呢? 在 SAS 9.4 平台支援許多不同類型的安全驗證協定,像是整合 Windows 驗證 (Integrated Windows Authentication,IWA)、IBM WebSEAL、CA SiteMinder 和 SAML 2.0、…等,但在了解 SAS 9.4 平台中資訊安全設定之前,我們需要先了解 SAS 9.4 平台的企業架構,主要有四個層級,分別為客戶端、中間層、伺服器層和資料層。首先客戶端,像是 Java 應用程式客戶端、.NET 應用程式客戶端、網頁瀏覽器、微軟辦公室軟體,接著主要透過 SAS 網頁伺服器進行負載平衡和反向代理的功能,再來連線至中間層的 SAS 網頁應用程式伺服器,其中主要包括網頁應用程式、網頁服務、網頁基礎平台、Message Broker 和 Cache Locator 等元件,所有元件皆透過網頁基礎平台進行溝通,此外網頁基礎平台還會與 SAS 伺服器、SAS 中繼資料伺服器、SAS 內容伺服器和 SAS 網頁基礎平台資料伺服器或資料庫進行溝通,最後伺服器層主要由 SAS 應用程式伺服器,像是 SAS 中繼資料伺服器、SAS 工作區伺服器和 SAS 預儲程式伺服器所組成,至於資料層則是由 SAS 網頁基礎架構平台資料伺服器和第三方資料庫伺服器所組成。

接著我們開始了解 SAS 9.4 平台是如何進行單一登入的應用,以利進行資訊安全的管理,尤其在金融產業資訊安全的管理首要任務就是單一登入,然而 SAS 網頁應用程式單一登入主要是使用 SAS 登入管理員 統一登入所有 SAS 網頁應用程式伺服器。所謂 SAS 登入管理員 主要是一個網頁應用程式主要是處理所有針對 SAS 網頁應用程式的驗證請求,此時對於使者者來說當需要存取 SAS 網頁應用程式時將會看到相同的登入頁面,至於 SAS 登入管理員 目的主要為驗證和直接成功登入至適當的網頁應用程式,此外透過 SAS 登入管理員 也能夠集中變更與管理驗證機制非常方便。再來當使用者成功通過 SAS 登入管理員 的驗證之後,使用者將會接收全域的單一登入工作階段,所謂全域的單一登入工作階段主要允許使用者存取所有已被授權的 SAS 網頁應用程式,如此一來使用者就不用當存取任何一個網頁應用程式時重新透過憑據進行驗證,請注意在 SAS 9.4 平台中全域的單一登入工作階段到期時間獨立於網頁應用程式到期時間,在 SAS 9.4 平台中有許多有關 Middle Tier 的資訊安全政策設定,可透過 SAS Management Console 進行設定,像是「Log user off on time-out」設定就是決定 SAS 網頁應用程式的到期時間如何影響使用者全域單一登入的工作階段,其值主要為「Yes」或「No」,當為「Yes」代表無論何時任何網頁應用程式達到到期時間的限制時,則全域單一登入的工作階段就會結束,此時使用者就必須重新驗證使用網頁應用程式,反之若為「No」代表無論何時任何網頁應用程式達到到期時間的限制時,則使用者仍然有效使用全域單一登入的工作階段使用其它網頁應用程式,在 SAS 9.4 平台中預設為「No」,至於其它與資訊安全政策相關設定,請參考下表。

政策設定 預設值 說明
Allow client password storage Yes 決定網站是否允許遠端 SAS 客戶端會將使用者密碼憑據儲存至客戶端本機中,請注意許多網站禁止客戶端緩存或持久使用分佈應用程式中的密碼。
Log user off on time-out No 決定 SAS 網頁應用程式的到期時間如何影響使用者全域單一登入的工作階段,其值主要為「是」或「否」,當為「是」代表無論何時任何網頁應用程式達到到期時間的限制時,則全域單一登入的工作階段就會結束,此時使用者就必須重新驗證使用網頁應用程式,反之若為「否」代表無論何時任何網頁應用程式達到到期時間的限制時,則使用者仍然有效使用全域單一登入的工作階段使用其它網頁應用程式。
Allow user sign-in from web sign-out page Yes 決定是否顯示登入按鈕在登出成功的頁面中。
Allow user sign-in from web time-out page Yes 決定是否顯示登入按鈕在工作階段時間到期的頁面中。
Display custom sign-in message No 決定是否顯示客制化訊息在標準登入頁面中。
Display custom sign-out message No 決定是否顯示客制化訊息在標準登出頁面中。
Display custom s time-out message No 決定是否顯示客制化訊息在標準工作階段時間到期頁面中。
Display custom s time-out message No 決定是否顯示客制化訊息在標準工作階段時間到期頁面中。
Display sign-out security message No 決定是否顯示安全訊息在登出成功的頁面中。
Display time-out security message No 決定是否顯示安全訊息在成功工作階段時間到期的頁面中。
Display failed sign-in hints No 決定是否在失敗登入頁面中顯示詳細訊息,若設定「Yes」則會指出密碼無效的錯誤訊息,反之設定「No」則只會顯示使用者輸入錯誤的錯誤訊息。
Enable autocomplete feature on sign-in page No 決定是否在登入頁面中使用自動完成功能。
Allow clients to keep service sessions alive Yes 決定是在應用程式客戶端保持資源的存活,若設定「Yes」則會透過 ping 伺服器保留資源的可用性,反之設定「No」則資源到期時間類似於網頁應用程式。

在 SAS 9.4 平台中 SAS 登入管理員 僅會執行在 SASServer1_1 實體伺服器中,所有 SAS 網頁應用程式伺服器皆會使用相同的 SAS 登入管理員 進行登入。然而當我們整合第三方單一登入產品時,則驗證將會強制在 SASServer1_1 實體伺服器中執行,請注意整合第三方單一登入產品可能會使用 SAS 網頁伺服器或 SAS 網頁應用程式伺服器。接著 SASServer1_1 實體伺服器主要以 Pivotal tc Server 為主,也就是 Tomcat ,其中單一登入功能相關的元件最主要有 Authenticator Valve 和 Realm 兩個元件,所謂 Authenticator Valve 是自動針對任何內容增加使用基本驗證設定,所謂 Realm 是儲存識別網頁應用程式中有效使用者的帳號和密碼,同時也包括角色的關聯。再來 SAS 登入管理員 主要是使用 CAS 進行實作,所謂 CAS 主要是開源程式碼的驗證系統,CAS 主要使用票據減少應用程式透過憑據驗證使用者的步驟,其中 CAS 主要是由 Java Spring Framework 所建置,以及 CAS 伺服器與 SAS 網頁基礎架構平台相關的套件為 sas.svcs.logon.war,Servlet 會自動對應像是「/login」直接透過適當網址導入至 CAS 伺服器中,以利提供單一登入的功能。

範例網址

1
http://www.company.com/SASLogon/login?service=http://www.company.com/SASStudio/j_spring_cas_security_check

最後我們到底是如何透過 SAS 登入管理員 和 CAS 伺服器驗證使用者呢?請參考下述流程,情境中主要有四個角色,分別為網頁瀏覽器、SAS 網頁應用程式、SAS 登入管理員和 CAS 伺服器。

  1. 使用者會先透過網頁瀏覽器輸入網址,像是 SAS Studio 網頁應用程式的網址 http://www.company.com/SASStudio
  2. SAS 網頁應用程式會透過 Spring Framework 中的 SecurityFilterChain 設定重新導至 SAS 登入管理員中。
  3. SAS 登入管理員將會與 CAS 伺服器進行安全處理的溝通。
  4. 若發現使用者還未進行驗證,則 SAS 登入管理員會使用者輸入的憑據,像是帳號與密碼。
  5. SAS 登入管理員將會使用使用者輸入的憑據請求 CAS 服務票據,之後網頁瀏覽器就會透過票據針對 SAS 網頁應用程式進行登入和回應。
  6. 網頁瀏覽器會透過 CAS 服務票據重新傳送初始登入的請求至 SAS 網頁應用程式。
  7. 此時 SAS 網頁應用程式會透過 Spring Framework 中的 SecurityFilterChain 設定與 CAS 伺服器驗證票據,以利完成登入,若是驗證成功就會回傳 SAS 網頁應用程式的頁面。

至於使用者憑據的產生預設是在 SAS 網頁應用程式中使用在 SAS 登入管理員中以表單為基礎的驗證方式,當憑據由 SAS 登入管理員所提供時,憑據將會傳送給 SAS 中繼資料伺服器進行驗證,此時 SAS 中繼資料伺服器主要會透過驗證提供者驗證憑據是否正確,預設驗證提供者為本機作業系統。

總結有關導入企業解決方案中存取控制的問題所涉及的範圍非常廣泛,本篇僅針對 SAS 9.4 平台單一登入進行簡單說明,下一篇將會針對 SAS 登入管理員如何因應資訊安全的議題進行系統設定或客制開發的詳細說明。

相關資源

Cognos 設定管理 (2)

基本介紹

教學目標

初步了解 Cognos 單一登入設定。

重點概念

單一登入 (Single Sign-On) 是一種機制,主要藉由使用者驗證和授權的一次行為會允許使用者存取所有有存取權限的電腦和系統,不需要再輸入多重密碼,因此單一登入減少人為錯誤和系統錯誤,雖然有大量的需要但是實作困難。所以 Open Group 就提出一種開放式基於輕量型目錄存取協定 (Lightweight Directory Access Protocol,LDAP) 之目錄模型針對單一登入進行定義,以利各家廠商工具進行單一登入應用的開發與測試。

IBM Cognos Business Intelligence 除了支援 LDAP 身份驗證和授權存取協定之外,更能支援單一登入之應用。主要先完成基於 LDAP 協定進行 Cognos 的登入作業,並且不允許匿名登入,例如: Active Directory ,接著再透過 Cognos 管理工具在「安全」->「驗證」中選擇對應的「命名空間」,新增「進階屬性」為 singleSignOnOption = IdentityMapping ,確認無誤之後重新啟動 Cognos 伺服器就能完成單一登入的應用。

上述設定雖然簡單,但卻為我們解決問題,每個企業都會有入口網站,所有工具的存取權限皆會透過入口網站進行控管,一般來說會傳遞參數可是不會包括使用者密碼,只會有 Token 存取權證,並且授權存取或稽核記錄皆會有許多資安政策的限制,以及後續管理維護等考量規劃,讓事情變的更複雜導致問題看似無解,只能藉由客製化程式的方式解決問題,此時就會耗費大量資源,就只為了達到單一登入應用。此時只要透過設定,就能同時在符合資安政策的情況下解決單一登入的問題,並且簡化後續維護與管理。

最後並非所有問題皆能完全透過設定解決,此時就必須透過官方 SDK 進行客製化開發,例如: 根據入口網站的權限進行使用者對應授權報表群組的設定,就必須以客製化開發來解決問題。

相關資源