安全建模最佳作法
在 ThingWorx 中設定安全模型是模型開發的其中一個最重要的步驟,其可確保使用者能夠正確存取模型中的資產,並確保每一步都會考慮安全性影響。管理 Edge 安全性是此流程的一個重要方面。在 ThingWorx 中,您需要透過下列作業來設定對遠端物件的細微權限:
• 建立代表遠端物件的唯一使用者
• 將使用者指派給正確組織
• 在唯一使用者前後關聯中建立唯一應用程式金鑰
|
如果您使用應用程式的 檔案上載功能,請注意,檔案上載允許具有適當存取權限的使用者將任何類型的檔案內容上載至系統。PTC 不保證所上載檔案的安全性,也不保證輸入來自信任的使用者。
|
此主題中的資訊旨在為您提供在模型中設定安全性時不應執行之操作的提示,以及盡可能安全地設定模型的最佳作法。
管理 Edge 安全性
管理 Edge 安全性是保護模型安全的重要方面,需要先建構模型,然後再進行安全部署。Edge 是 ThingWorx (Composer) 中的建模環境與外部資料來源之間的障礙。在 ThingWorx 中,可透過多種方法管理 Edge 安全性,包括使用 TLS/SSL 通訊來在 Edge 與平台之間進行通訊。使用 TLS/SSL 會產生下列結果:
◦ 遠端物件會使用憑證驗證伺服器。
◦ 流量會使用 TLS 加密。
◦ 應用程式金鑰會向平台驗證遠端物件,且與應用程式金鑰相關聯的使用者前後關聯會限制平台內的存取。
欲避免的作法
雖然您可以採取一些步驟來盡可能地保護 Edge 的安全,但某些作法可能會降低整個系統的安全性。這些作法包括下列內容:
• 不建議關閉 SSL。即使在行動電話中,某些網路的安全性架構中也會有已知瑕疵。
• 使用具有已知易受攻擊雜湊的憑證。
◦ 請勿使用 MD5、SHA1 等。請使用 NIST 建議的憑證。
◦ 請勿使用開發以外的自我簽署憑證。
• 對多個裝置使用相同的應用程式金鑰。使用應用程式金鑰驗證連線。如果應用程式金鑰在裝置之間不具唯一性,則將難以跨連線稽核模擬連線或惡意連線。
• 使用具有廣泛權限的應用程式金鑰。這會導致為資產授與其不應獲得的存取權。
欲使用的作法
• 使用受信任的憑證授權單位。
• 使用用戶端憑證授權 - 相互 TLS。
• 使用應用程式金鑰。設定應用程式金鑰與 ThingWorx 使用者時,請始終授與最少權限。將「管理員」群組成員指派至應用程式金鑰並不是最佳作法。
設定模型
為了完全保護應用程式的安全,最佳作法始終是使用下列原則來加以保護:
• 授與最少權限
• 深度防禦
• 保護預設值的安全
1. 設定組織
為 Edge 裝置建構安全模型的第一步是,使用
組織正確設定實體的可見度。組織可為具有應用程式適當權限的使用者提供整個系統的可見度設定。
2. 設定使用者群組
設定使用者群組來根據使用者角色開發存取控制。
|
ThingWorx 提供多個預先定義的使用者群組。如需詳細資訊,請參閱 使用者群組。
|
3. 設定使用者
使用者提供對資料的細微存取權。設定組織與使用者群組之後,應為平台中的每個唯一允許實體建立一位使用者。從 Edge 的角度來講,這表示為將連線至平台的每個 Edge 裝置建立一位使用者。
4. 設定應用程式金鑰
應用程式金鑰可用來取得平台的安全存取權,並連結至使用者前後關聯來確定權限。應該為連線的每個 Edge 裝置建立一個應用程式金鑰。對於應用程式金鑰與使用者/裝置,比率應該為 1:1。
5. 設定遠端物件:可見度、設計時間與執行時間權限
建立遠端物件之後,要設定的第一個安全性前後關聯為
可見度。可見度會影響組織和組織單位。
接著,設定設計時間權限。只應將設計時間權限授與可在應用程式中修改行為與模型的受信任使用者。通常,這表示使用者/裝置將沒有設計時間權限,因為裝置無法自行修改其行為。
最後,為代表裝置的使用者設定執行時間權限,以便裝置可對應用程式起到功能性作用。執行時間權限對細微性來說很重要。將執行時間權限設定為最小值可讓使用者僅存取物件。如有必要,可對內容進行更細微的設定。
設定模型的其他提示
• 最好在生產環境中移除所有設計時間權限,以免在關鍵業務應用程式中發生迴歸。所有設計都應在沙箱內實行及驗證,然後僅在成功驗證應用程式之後,部署至生產環境。
• 使用者、應用程式金鑰與遠端物件可使用程式設計方式建立,但建立以實行此功能的任何服務都應在應用程式的安全性模型內嚴格控制,並遵守前述部份的指引。
• 如果有兩個 Edge 物件透過相同的 EMS 或 SDK 連線,則無法將一個應用程式金鑰指派給每個 Edge 物件。如果需要區分這些裝置的權限模型,建議透過不同的 SDK 連線,以為每個連線端點提供不同的安全性前後關聯。
• 如果存在每個遠端物件需要多個資料來源的應用程式,或者如果有多個使用者從混搭存取相同物件的不同資料來源,則可針對個別內容與服務設定執行時間權限。
• 當與任何
資料儲存類型實體 (wiki、部落格、資料表、串流與值串流) 搭配使用時,建議提供對
平台子系統 GetDefaultDataPersistenceProviderName 服務的服務執行權限。使用者必須擁有系統中至少一個持續性提供者的可見度,才能建立新的資料儲存類型物件。