共用方式為


持續性儲存區的安全性設定

您可以透過下列 SQL Server 角色,安全地存取 SQL Server 持續性資料庫:

  • InstanceStoreUsers。此角色的成員可從執行個體儲存區載入工作流程執行個體,或將工作流程執行個體儲存到執行個體儲存區。使用 WorkflowServiceHost 或 WorkflowApplication 主控服務和使用 SqlWorkflowInstanceStore 提供持續性功能的應用程式,應以此角色成員的身分識別執行。

  • InstanceStoreObservers。此角色的成員可查詢執行個體儲存區。使用 WorkflowServiceHost 或 WorkflowApplication 主控服務和使用 SqlWorkflowInstanceStore 提供持續性功能的應用程式,應以此角色成員的身分識別執行。

  • WorkflowAdministrators。此角色的成員可將控制命令放入 (新增至) 執行個體儲存區中的命令佇列。

  • WorkflowActivationUsers。此角色的成員可查詢可啟動之工作流程執行個體的執行個體儲存區。「工作流程管理服務」(WMS) 必須以此角色成員的身分識別執行。

  • WorkflowManagementServiceUsers。此角色的成員可將控制命令從執行個體儲存區中的命令佇列移出 (擷取)。WMS 必須以此角色成員的身分識別執行。

系統會以個別儲存區為基礎來授與 SQL 持續性儲存區的存取權。擁有執行個體儲存區中所儲存工作流程服務執行個體存取權的使用者,即擁有所有執行個體的存取權,包括儲存區中的不同工作流程服務。若要避免擁有某服務執行個體存取權的使用者存取其他服務執行個體,您必須確定這兩個服務是使用不同的執行個體儲存區。

例如,假設 Service1 以 User1 身分識別執行、Reader1 可查詢 Service1 的執行個體,且 Admin1 可控制 Service1 的執行個體。而 Service2 是以 User2 身分識別執行、Reader2 可查詢 Service2 的執行個體,且 Admin2 可控制 Service2 的執行個體。若要避免 User1/Reader1/Admin1 載入/查詢/控制 Service2 的執行個體,以及避免 User2/Reader2/Admin2 載入/查詢/控制 Service1 的執行個體,Service1 的所有執行個體必須儲存在執行個體儲存區 Store1,而 Service2 的所有執行個體必須儲存在執行個體儲存區 Store2。

在此案例中,使用者必須將下列使用者或 Windows 群組新增至以下角色:

  • 將 User1 新增至 Store1 資料庫的 InstanceStoreUsers 角色。或者,將 User1 新增至 Windows 群組 UserGroup1,以及將 UserGroup1 新增至 Store1 資料庫的 InstanceStoreUsers 角色。

  • 將 Reader1 或 ReaderGroup1 (Reader1 所屬的 Windows 群組) 新增至 Store1 資料庫的 InstanceStoreObservers 角色。

  • 將 Admin1 或 AdminGroup1 (Admin1 所屬的 Windows 群組) 新增至 Store1 資料庫的 WorkflowAdminstrators 角色。

  • 將 User2 或 UserGroup2 (User2 所屬的 Windows 群組) 新增至 Store2 資料庫的 InstanceStoreUsers 角色。

  • 將 Reader2 或 ReaderGroup2 (Reader2 所屬的 Windows 群組) 新增至 Store2 資料庫的 InstanceStoreObservers 角色。

  • 將 Admin2 或 AdminGroup2 (Admin2 所屬的 Windows 群組) 新增至 Store2 資料庫的 WorkflowAdministrators 角色。

  • 將 WMS 的安全性識別碼 (SID) 新增至 Windows 群組 AdminGroup1 與 AdminGroup2。

持續性安全性範例

為提升安全性,您可以執行多個 WMS 執行個體。例如,假設「工作流程管理服務」有兩個執行個體 (WMS1 與 WMS2) 正在執行中,而且是以 BUILTIN\Local Services 帳戶執行這兩個執行個體。假設指派給 WMS1 的安全性識別碼是 WMS-SID1,而指派給 WMS2 的安全性識別碼是 WMS-SID2。在這種情況下,您必須遵循下列步驟,而不是執行前述步驟清單中的最後一個步驟:

  • 將 WMS-SID1 新增至 Windows 群組 WMSGroup1,以及將 WMSGroup1 新增至 Store1 資料庫的 WorkflowActivationUsers 與 WorkflowManagementServiceUsers。

  • 將 WMS-SID2 新增至 Windows 群組 WMSGroup2,以及將 WMSGroup2 新增至 Store2 資料庫的 WorkflowActivationUsers 與 WorkflowManagementServiceUsers。

執行個體控制端點授權

對於上一節中描述的情況,您應將保留給 Store1 的所有服務「執行個體控制端點」(ICE) 授權,變更成保留給 WMSGroup1。同樣地,您應將保留給 Store2 的所有服務 ICE 授權,變更成保留給 WMSGroup2。下列範例說明如何使用組態檔來安全存取 ICE。

<configuration>
    <system.serviceModel>
        <behaviors>
            <serviceBehaviors>
                <behavior name="myServiceBehavior">
                    <workflowInstanceManagement authorizedWindowsGroup="WMSGroup1" />
                </behavior>
            </serviceBehaviors >
        </behaviors>
    </system.serviceModel>
</configuration>

服務管理端點授權

對於在本主題開頭所描述的情況,您應將保留給 Store1 的所有服務之「服務管理端點」(ICE) 授權,變更成保留給 WMSGroup1。同樣地,您應將保留給 Store2 的所有服務 SME 授權,變更成保留給 WMSGroup2。下列範例說明如何使用組態檔來安全存取 SME。

<configuration>
    <microsoft.applicationServer>
        <hosting>
            <serviceManagement enabled="true" authorizedWindowsGroup="WMSGroup1" endpointConfiguration="ServiceManagementNetPipeEndpoint" />
        </hosting>
    </microsoft.applicationServer>
</configuration>

工作流程管理服務組態

對於在本主題開頭所描述的情況,您應該設定 WMS1 來監控 Store1,並設定 WMS2 來監控 Store2。若要這樣做,請依照下列範例組態所示,修改根 Web.config 檔案中的「工作流程管理服務」組態區段。

<configuration>
    <microsoft.applicationServer>
        <persistence>
            <workflowManagement>
                <workflowManagementServiceInstances>
                    <workflowManagementServiceInstance name="WMS1">
                        <instanceStores>
                            <instanceStore name="Store1" location="[root, SiteName or VPath]" />
                        </instanceStores>
                    </workflowManagementServiceInstance>
                    <workflowManagementServiceInstance name="WMS2">
                        <instanceStores>
                            <instanceStore name="Store2" location="[root, SiteName or VPath]" />
                        </instanceStores>
                    </workflowManagementServiceInstance>
                </workflowManagementServiceInstances>
            </workflowManagement>
        </persistence>
    </microsoft.applicationServer>
</configuration>

Windows Server AppFabric 設定精靈

您可以使用「AppFabric 設定精靈」將 Windows 群組與以下三種使用者相關聯:「系統管理員」、「讀者」與「使用者」。根據預設值,Windows 群組 AS_Administrators、AS_Observers 及 IIS_USRS 分別與「系統管理員」、「讀者」及「使用者」相關聯。此精靈會將 AS_Administrators 新增至 SQL Server 中的 InstanceStoreObservers、WorkflowActivationUsers、WorkflowAdministrators 與 WorkflowManagementServiceUsers 角色,將 AS_Observers 新增至 InstanceStoreObservers 角色,以及將 IIS_USRS 新增至 InstanceStoreUsers 角色。

此精靈會將 workflowInstanceManagement 元素的 authorizedWindowsGroup 屬性值與 serviceManagement 元素的 authorizedWindowsGroup 屬性值設為 AS_Administrators。

  2011-12-05