2008/10/14

Security in Plone3

網站的安全機制 (security) 由 Zope 在系統底層負責,管理員和開發者應該了解「權限」「角色」「使用者」「群組」等概念,才能發揮安全機制帶來的便利。

首先,要有足夠的權限才能存取網站內容,不然,會遇到 AccessControl.Unauthorized 的訊息回應。權限 (permission) 並不是直接對應給使用者 (user),而是先被指定給角色 (role),再經角色指定給使用者。

一位使用者,可以被指定多種角色,生效範圍可以是全站性,或是只在特定目錄裡生效。角色也可以指定給群組 (group),如此一來,群組裡的使用者就具備被指定的角色。


在 ZMI 裡 Security 頁籤,可以看到整個系統的「安全列表」,多數權限項目的「Acquire permission settings?」選項是打勾狀態,表示「會繼承上一層目錄的權限結果」,在此情況下,角色設定的效果會再加上去。

一般情況下,並不需要去更改安全列表的設定狀況,即使需要調整,也應該只更改網站根目錄的設定值。除此之外的情況,都會讓整個安全機制變得很複雜。

權限是安全機制裡的最小單位,網站應用軟體如果用到安全機制,通常是要檢查權限,而不是檢查角色。檢查使用者或群組名稱,通常不是好主意。

Professional Plone Development 書中第 83 頁,提到 "Security-aware code should almost always check for permissions, rather than roles. Checking for specific user or group names is rarely a good idea, because roles can change depending on the current context and security policy of the site." 我猜,它的意思是「檢查角色、使用者名稱、群組名稱,都應該盡量避免」吧。

No comments: