Azure Service Fabric 安全性最佳做法

除了本文之外,也請檢閱 Service Fabric 安全性檢查清單 以取得詳細資訊。

在 Azure 上部署應用程式是快速、簡單且符合成本效益的。 將雲端應用程式部署至生產環境之前,請先檢閱我們在應用程式中實作安全叢集的基本和建議最佳做法清單。

Azure Service Fabric 是分散式系統平臺,可讓您輕鬆地封裝、部署及管理可調整且可靠的微服務。 Service Fabric 也可解決開發及管理雲端應用程式的重大挑戰。 開發人員與系統管理員可以避免複雜的基礎結構問題,將全部心力集中在實作要求高並可信賴、管理及調整的任務關鍵性工作負載上。

針對每個最佳做法,我們會說明:

  • 最佳做法是什麼。
  • 為何您應該實作最佳做法。
  • 如果您未實作最佳做法,會發生什麼事。
  • 如何瞭解如何實作最佳做法。

我們建議使用下列 Azure Service Fabric 安全性最佳做法:

  • 使用 Azure Resource Manager 範本和 Service Fabric PowerShell 模組來建立安全的叢集。
  • 使用 X.509 憑證。
  • 設定安全性原則。
  • 實作 Reliable Actors 安全性設定。
  • 設定 Azure Service Fabric 的 TLS。
  • 搭配 Azure Service Fabric 使用網路隔離和安全性。
  • 設定 Azure 金鑰保存庫的安全性。
  • 將使用者指派給角色。
  • 在 Service Fabric 叢集中裝載不受信任的應用程式時,需要考慮的事項。

保護叢集的最佳做法

一律使用安全叢集:

  • 使用憑證實作叢集安全性。
  • 使用 Microsoft Entra ID 提供用戶端存取權(系統管理員和唯讀的)。

使用自動化部署:

  • 使用腳本來產生、部署和變換秘密。
  • 將秘密儲存在 Azure 金鑰保存庫,並使用 Microsoft Entra ID 進行所有其他用戶端存取。
  • 需要驗證,才能存取秘密。

此外,請考慮下列組態選項:

  • 使用 Azure 網路安全性群組 (NSG) 建立周邊網路(也稱為非軍事區域、DMZ 和篩選子網)。
  • 使用具有遠端桌面連線的跳躍伺服器,存取叢集虛擬機器(VM)或管理叢集。

您的叢集必須受到保護,以防止未經授權的使用者連線,尤其是在生產環境中執行叢集時。 雖然可以建立不安全的叢集,但如果叢集向公用網際網路公開管理端點,匿名使用者可以連線到您的叢集。

使用各種技術實作叢集安全性有三 種案例

  • 節點對節點安全性:此案例可保護 VM 與叢集中電腦之間的通訊。 這種安全性形式可確保只有已獲授權加入叢集的電腦才能在叢集中裝載應用程式和服務。 在此案例中,在 Azure 上執行的叢集,或是在 Windows 上執行的獨立叢集,可以使用 Windows Server 機器的憑證安全性 Windows 安全性
  • 用戶端對節點安全性:此案例可保護 Service Fabric 用戶端與叢集中個別節點之間的通訊。
  • Service Fabric 角色型存取控制 (Service Fabric RBAC):此案例會針對每個存取叢集的系統管理員和使用者用戶端角色使用不同的身分識別(憑證、Microsoft Entra ID 等等)。 當您建立叢集時,您可以指定角色身分識別。

注意

Azure 叢集的安全性建議: 使用 Microsoft Entra 安全性來驗證用戶端和節點對節點安全性的憑證。

若要設定獨立 Windows 叢集,請參閱 設定獨立 Windows 叢集 的設定。

使用 Azure Resource Manager 範本和 Service Fabric PowerShell 模組來建立安全的叢集。 如需使用 Azure Resource Manager 範本建立安全 Service Fabric 叢集的逐步指示,請參閱 建立 Service Fabric 叢集

使用 Azure Resource Manager 範本:

  • 使用範本來自訂叢集,以設定 VM 虛擬硬碟的受控儲存體(VHD)。
  • 使用範本輕鬆進行組態管理和稽核,以推動資源群組的變更。

將叢集組態視為程式碼:

  • 檢查您的部署組態時,請徹底完成。
  • 避免使用隱含命令直接修改您的資源。

Service Fabric 應用程式生命週期 的許多 層面都可以自動化。 Service Fabric PowerShell 模組 會將部署、升級、移除及測試 Azure Service Fabric 應用程式的一般工作自動化。 應用程式管理的受控 API 和 HTTP API 也可供使用。

使用 X.509 憑證

一律使用 X.509 憑證或 Windows 安全性保護您的叢集。 安全性只會在叢集建立時設定。 建立叢集之後無法開啟安全性。

若要指定 叢集憑證 ,請將 ClusterCredentialType 屬性的值 設定為 X509。 若要指定外部連線的伺服器憑證,請將 ServerCredentialType 屬性設定為 X509。

此外,請遵循下列做法:

  • 使用正確設定的 Windows Server 憑證服務,建立生產叢集的憑證。 您也可以從已核准的憑證授權單位單位 (CA) 取得憑證。
  • 如果憑證是使用 MakeCert.exe 或類似工具建立的,則請勿將暫存或測試憑證用於生產叢集。
  • 針對測試叢集使用自我簽署憑證,但不適用於生產叢集。

如果叢集不安全,任何人都可以匿名連線到叢集並執行管理作業。 基於這個理由,請一律使用 X.509 憑證或 Windows 安全性來保護生產叢集。

若要深入瞭解如何使用 X.509 憑證,請參閱 新增或移除 Service Fabric 叢集 的憑證。

設定安全性原則

Service Fabric 也會保護應用程式所使用的資源。 部署應用程式時,檔案、目錄和憑證等資源會儲存在使用者帳戶下。 這項功能可讓執行中的應用程式彼此更安全,即使在共用裝載的環境中也是如此。

  • 使用 Active Directory 網域群組或使用者:在 Active Directory 使用者或群群組帳戶的認證下執行服務。 請務必在網域內使用 Active Directory 內部部署,而不是 Microsoft Entra ID。 使用網域使用者或群組來存取已授與許可權之網域中的其他資源。 例如,例如檔案共用等資源。

  • 為 HTTP 和 HTTPS 端點指派安全性存取原則:指定 SecurityAccessPolicy 屬性,以在服務資訊清單使用 HTTP 宣告端點資源時,將 RunAs 原則套用 至服務。 配置給 HTTP 端點的埠是服務執行所執行 RunAs 使用者帳戶的正確存取控制清單。 未設定原則時,HTTP.sys 無法存取服務,而且您可以從用戶端呼叫失敗。

若要瞭解如何在 Service Fabric 叢集中使用安全性原則,請參閱 設定應用程式 的安全性原則。

實作 Reliable Actors 安全性設定

Service Fabric Reliable Actors 是動作專案設計模式的實作。 如同任何軟體設計模式,使用特定模式的決定是以軟體問題是否符合模式為基礎。

一般而言,使用動作專案設計模式來協助建立下列軟體問題或安全性案例的模型解決方案:

  • 您的問題空間牽涉到大量的小型、獨立和隔離狀態和邏輯單位。
  • 您正使用不需要從外部元件進行重大互動的單一線程物件,包括跨一組動作專案查詢狀態。
  • 您的動作專案實例不會藉由發出 I/O 作業來封鎖呼叫端發生無法預測的延遲。

在 Service Fabric 中,動作專案會在 Reliable Actors 應用程式架構中實作。 此架構是以動作專案模式為基礎,並以 Service Fabric Reliable Services 為基礎 。 您寫入的每個可靠動作專案服務都是分割的具狀態可靠服務。

每個動作專案都會定義為動作專案類型的實例,與 .NET 物件是 .NET 類型的實例相同。 例如, 實作計算機功能的動作專案類型 可以有許多該類型的動作專案,這些動作專案分散在叢集上的各種節點上。 每個分散式動作專案都是以動作專案識別碼唯一的特點。

複寫器安全性設定 可用來保護複寫期間所使用的通道。 此設定可防止服務看到彼此的複寫流量,並確保高可用性資料是安全的。 根據預設,空白的安全性組態區段會防止複寫安全性。 複寫器設定複寫器,負責讓動作專案狀態提供者狀態高度可靠。

設定 Azure Service Fabric 的 TLS

伺服器驗證程式 向管理用戶端驗證叢集管理端點。 然後,管理用戶端會辨識其正在與實際叢集交談。 此憑證也提供 HTTPS 管理 API 的 TLS ,以及透過 HTTPS 的 Service Fabric Explorer。 您必須取得叢集的自訂功能變數名稱。 當您向憑證授權單位單位要求憑證時,憑證的主體名稱必須符合您用於叢集的自訂功能變數名稱。

若要設定應用程式的 TLS,您必須先取得 CA 簽署的 SSL/TLS 憑證。 CA 是受信任的協力廠商,會針對 TLS 安全性目的發行憑證。 如果您還沒有 SSL/TLS 憑證,則必須從銷售 SSL/TLS 憑證的公司取得憑證。

憑證必須符合 Azure 中 SSL/TLS 憑證的下列需求:

  • 憑證必須包含私密金鑰。

  • 憑證必須針對金鑰交換建立,而且可以匯出至個人資訊交換 (.pfx) 檔案。

  • 憑證的主體名稱必須符合用來存取雲端服務的功能變數名稱。

    • 取得用來存取雲端服務的自訂功能變數名稱。
    • 使用符合您服務自訂功能變數名稱的主體名稱,向 CA 要求憑證。 例如,如果您的自訂功能變數名稱是 contoso.com ,則 CA 的憑證應該具有主體名稱 .contoso.com www.contoso.com。

    注意

    您無法從 cloudapp.net 網域的 CA 取得 SSL/TLS 憑證。

  • 憑證至少必須使用 2,048 位加密。

HTTP 通訊協定不安全,並受限於竊聽攻擊。 透過 HTTP 傳輸的資料會以純文字形式從網頁瀏覽器傳送至網頁伺服器或其他端點之間。 攻擊者可以攔截和檢視透過 HTTP 傳送的敏感性資料,例如信用卡詳細資料和帳戶登入。 透過 HTTPS 透過瀏覽器傳送或張貼資料時,SSL 可確保機密資訊已加密且不受攔截保護。

若要深入瞭解如何使用 SSL/TLS 憑證,請參閱 在 Azure 中設定應用程式的 TLS。

搭配 Azure Service Fabric 使用網路隔離和安全性

使用 Azure Resource Manager 範本 作為範例, 設定 3 個 nodetype 安全叢集。 使用範本和網路安全性群組來控制輸入和輸出網路流量。

此範本針對每個虛擬機器擴展集都有 NSG,可用來控制進出集合的流量。 規則預設會設定為允許系統服務和範本中指定的應用程式埠所需的所有流量。 檢閱這些規則,並進行任何變更以符合您的需求,包括為您的應用程式新增規則。

如需詳細資訊,請參閱 Azure Service Fabric 的常見網路案例。

設定 Azure 金鑰保存庫的安全性

Service Fabric 會使用憑證來提供驗證和加密來保護叢集及其應用程式。

Service Fabric 會使用 X.509 憑證來保護叢集,並提供應用程式安全性功能。 您可以使用 Azure 金鑰保存庫來管理 Azure 中 Service Fabric 叢集的憑證 。 建立叢集的 Azure 資源提供者會從金鑰保存庫提取憑證。 提供者接著會在 Azure 上部署叢集時,在 VM 上安裝憑證。

Azure 金鑰保存庫 、Service Fabric 叢集和使用憑證的資源提供者之間 存在憑證關聯性。 建立叢集時,憑證關聯性的相關資訊會儲存在金鑰保存庫中。

設定金鑰保存庫有兩個基本步驟:

  1. 特別為您的金鑰保存庫建立資源群組。

    我們建議您將金鑰保存庫放在自己的資源群組中。 如果移除其他資源群組,例如儲存體、計算或包含叢集的群組,此動作有助於防止金鑰和秘密遺失。 包含金鑰保存庫的資源群組必須與使用該保存庫的叢集位於相同的區域中。

  2. 在新的資源群組中建立金鑰保存庫。

    金鑰保存庫必須啟用以進行部署。 然後,計算資源提供者可以從保存庫取得憑證,並將其安裝在 VM 實例上。

若要深入瞭解如何設定金鑰保存庫,請參閱 什麼是 Azure 金鑰保存庫?

將使用者指派給角色

建立應用程式來代表叢集之後,請將使用者指派給 Service Fabric 支援的角色:唯讀和系統管理員。您可以使用 Azure 入口網站來指派這些角色。

注意

如需在 Service Fabric 中使用角色的詳細資訊,請參閱 Service Fabric 用戶端 的 Service Fabric 角色型存取控制。

Azure Service Fabric 針對連線至 Service Fabric 叢集 的用戶端支援兩種存取控制類型:系統管理員和使用者。 叢集系統管理員可以使用存取控制來限制對不同使用者群組特定叢集作業的存取。 存取控制可讓叢集更安全。

在 Service Fabric 叢集中裝載不受信任的應用程式時要考慮的事項

請參閱 在 Service Fabric 叢集中 裝載不受信任的應用程式。

下一步