Настройка безопасности для хранилищ сохраняемости
Доступ к базе данных сохраняемости SQL Server защищается с помощью следующих ролей SQL Server.
InstanceStoreUsers. Члены этой роли могут загружать экземпляры рабочих процессов из хранилища экземпляров и сохранять их в этом хранилище. Приложение, которое использует WorkflowServiceHost или WorkflowApplication для размещения служб и SqlWorkflowInstanceStore для сохраняемости, должно запускаться с учетными данными, являющимися членом этой роли.
InstanceStoreObservers. Члены этой роли могут запрашивать хранилище экземпляров. Приложение, которое использует WorkflowServiceHost или WorkflowApplication для размещения служб и SqlWorkflowInstanceStore для сохраняемости, должно запускаться с учетными данными, являющимися членом этой роли.
WorkflowAdministrators. Члены этой роли могут помещать (добавлять) команды управления в очередь команд хранилища экземпляров.
WorkflowActivationUsers. Члены этой роли могут запрашивать экземпляры рабочих процессов, готовые к активации, в хранилище экземпляров. Служба управления рабочими процессами (WMS) должна запускаться с учетными данными, являющимися членом этой роли.
WorkflowManagementServiceUsers. Члены этой роли могут удалять (извлекать) команды управления из очереди команд в хранилище экземпляров. Служба управления рабочими процессами должна запускаться с учетными данными, являющимися членом этой роли.
Доступ к хранилищу сохраняемости 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 в роль InstanceStoreUsers базы данных Store1, или добавить пользователя User1 в группу Windows UserGroup1, а затем добавить группу UserGroup1 в роль InstanceStoreUsers базы данных Store1.
Добавить пользователя Reader1 или группу Windows ReaderGroup1, в которую входит Reader1, в роль InstanceStoreObservers базы данных Store1.
Добавить пользователя Admin1 или группу Windows, в которую входит Admin1, в роль WorkflowAdminstrators базы данных Store1.
Добавить пользователя User2 или группу Windows, в которую входит User2, в роль InstanceStoreUsers базы данных Store2.
Добавить пользователя Reader2 или группу Windows ReaderGroup2, в которую входит Reader2, в роль InstanceStoreObservers базы данных Store2.
Добавить пользователя Admin2 или группу Windows AdminGroup2, в которую входит Admin2, в роль WorkflowAdminstrators базы данных Store2.
Добавить идентификатор безопасности (SID) службы управления рабочими процессами в группы Windows AdminGroup1 и AdminGroup2.
Чтобы дополнительно увеличить безопасность, можно запустить насколько экземпляров службы управления рабочими процессами. Например, предположим, что имеется два запущенных экземпляра службы управления рабочими процессами, WMS1 и WMS2, и оба экземпляра запущены с учетной записью BUILTIN\Local Services. Предположим, что WMS1 назначен идентификатор безопасности WMS-SID1, а WMS2 назначен идентификатор безопасности WMS-SID2. В таком случае необходимо выполнить следующие действия вместо последнего действия из предыдущего примера.
Добавить WMS-SID1 в группу Windows WMSGroup1 и добавить группу WMSGroup1 в роли WorkflowActivationUsers и WorkflowManagementServiceUsers базы данных Store1.
Добавить WMS-SID2 в группу Windows WMSGroup2 и добавить группу WMSGroup2 в роли WorkflowActivationUsers и WorkflowManagementServiceUsers базы данных Store2.
Авторизация конечной точки управления экземплярами
Для сценария, приведенного в предыдущем разделе, следует изменить авторизацию конечных точек управления экземплярами всех служб, которые существуют в хранилище Store1, на WMSGroup1. Аналогично, следует изменить авторизацию конечных точек управления экземплярами всех служб, которые существуют в хранилище Store2, на WMSGroup2. В следующем показан способ защиты доступа к конечной точке управления экземплярами с помощью файла конфигурации.
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="myServiceBehavior">
<workflowInstanceManagement authorizedWindowsGroup="WMSGroup1" />
</behavior>
</serviceBehaviors >
</behaviors>
</system.serviceModel>
</configuration>
Авторизация конечной точки управления службами
Для сценария, приведенного в начале раздела, следует изменить авторизацию конечных точек управления службами всех служб, которые существуют в хранилище Store1, на WMSGroup1. Аналогично, следует изменить авторизацию конечных точек управления службами всех служб, которые существуют в хранилище Store2, на WMSGroup2. В следующем показан способ защиты доступа к конечной точке управления службами с помощью файла конфигурации.
<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>
Мастер настройки Microsoft AppFabric 1.1 для Windows Server
Мастер настройки AppFabric позволяет сопоставить группы Windows с тремя типами пользователей: администраторами, читателями и пользователями. По умолчанию группы Windows AS_Administrators, AS_Observers и IIS_USRS сопоставляются с администраторами, читателями и пользователями соответственно. Мастер добавляет группу AS_Administrators в роли SQL Server InstanceStoreObservers, WorkflowActivationUsers, WorkflowAdministrators и WorkflowManagementServiceUsers, группу AS_Observers – в роль InstanceStoreObservers и группу IIS_USRS – в роль InstanceStoreUsers.
Мастер устанавливает для атрибута authorizedWindowsGroup элемента workflowInstanceManagement и для атрибута authorizedWindowsGroup элемента serviceManagement значение "AS_Administrators".
2012-03-05