지속성 저장소에 대한 보안 구성
SQL Server 지속성 데이터베이스에 대한 액세스는 다음과 같은 SQL Server 역할을 통해 보호됩니다.
InstanceStoreUsers. 이 역할의 구성원은 인스턴스 저장소에서 워크플로 인스턴스를 로드하거나 인스턴스 저장소에 저장할 수 있습니다. WorkflowServiceHost 또는 WorkflowApplication을 사용하여 서비스를 호스트하고 지속성에 SqlWorkflowInstanceStore를 사용하는 응용 프로그램은 이 역할의 구성원인 ID로 실행되어야 합니다.
InstanceStoreObservers. 이 역할의 구성원은 인스턴스 저장소를 쿼리할 수 있습니다. WorkflowServiceHost 또는 WorkflowApplication을 사용하여 서비스를 호스트하고 지속성에 SqlWorkflowInstanceStore를 사용하는 응용 프로그램은 이 역할의 구성원인 ID로 실행되어야 합니다.
WorkflowAdministrators. 이 역할의 구성원은 인스턴스 저장소의 명령 큐에 제어 명령을 삽입(추가)할 수 있습니다.
WorkflowActivationUsers. 이 역할의 구성원은 활성화 가능 워크플로 인스턴스에 대해 인스턴스 저장소를 쿼리할 수 있습니다. WMS(Workflow Management Service)는 이 역할의 구성원인 ID로 실행되어야 합니다.
WorkflowManagementServiceUsers. 이 역할의 구성원은 인스턴스 저장소의 명령 큐에서 제어 명령을 제거(검색)할 수 있습니다. WMS는 이 역할의 구성원인 ID로 실행되어야 합니다.
SQL 지속성 저장소에 대한 액세스 권한은 저장소별로 부여됩니다. 인스턴스 저장소에 저장된 워크플로 서비스의 인스턴스에 대한 액세스 권한이 있는 사용자는 저장소의 다른 워크플로 서비스의 인스턴스를 비롯한 모든 인스턴스에 액세스할 수 있습니다. 한 서비스의 인스턴스에 대한 액세스 권한이 있는 사용자가 다른 서비스의 인스턴스에 액세스하지 못하게 하려면 이러한 두 서비스에 대해 각각 다른 인스턴스 저장소를 사용하도록 해야 합니다.
예를 들어, Service1이 User1 ID로 실행되고 Reader1이 Service1의 인스턴스를 쿼리할 수 있으며 Admin1이 Service1의 인스턴스를 제어할 수 있다고 가정합니다. 또한 Service2는 User2 ID로 실행되고 Reader2는 Service2의 인스턴스를 쿼리할 수 있으며 Admini2는 Service2의 인스턴스를 제어할 수 있다고 가정합니다. User1/Reader1/Admin1이 Service2의 인스턴스를 로드/쿼리/제어하지 못하게 하고 User2/Reader2/Admin2가 Service1의 인스턴스를 로드/쿼리/제어하지 못하게 하려면 Service1의 모든 인스턴스는 인스턴스 저장소 Store1에 저장되고 Service2의 모든 인스턴스는 인스턴스 저장소 Store2에 저장되어야 합니다.
이 시나리오에서 사용자는 다음 사용자 또는 Windows 그룹을 다음 역할에 추가해야 합니다.
User1을 Store1 데이터베이스의 InstanceStoreUsers 역할에 추가합니다. 또는 User1을 Windows 그룹 UserGroup1에 추가하고 UserGroup1을 Store1 데이터베이스의 InstanceStoreUsers 역할에 추가합니다.
Reader1 또는 Reader1이 구성원으로 속해 있는 Windows 그룹인 ReaderGroup1을 Store1 데이터베이스의 InstanceStoreObservers 역할에 추가합니다.
Admin1 또는 Admin1이 구성원으로 속해 있는 Windows 그룹인 AdminGroup1을 Store1 데이터베이스의 WorkflowAdminstrators 역할에 추가합니다.
User2 또는 User2가 구성원으로 속해 있는 Windows 그룹인 UserGroup2를 Store2 데이터베이스의 InstanceStoreUsers 역할에 추가합니다.
Reader2 또는 Reader2가 구성원으로 속해 있는 Windows 그룹인 ReaderGroup2를 Store2 데이터베이스의 InstanceStoreObservers 역할에 추가합니다.
Admin2 또는 Admin2가 구성원으로 속해 있는 Windows 그룹인 AdminGroup2를 Store2 데이터베이스의 WorkflowAdministrators 역할에 추가합니다.
WMS의 SID(보안 식별자)를 Windows 그룹 AdminGroup1 및 AdminGroup2에 추가합니다.
보안을 더 강화하려면 WMS의 인스턴스를 여러 개 실행할 수 있습니다. 예를 들어, Workflow Management service 의 2개 인스턴스 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에 유지되는 모든 서비스의 SME(서비스 관리 끝점)에 대한 권한 부여를 WMSGroup1로 변경해야 합니다. 마찬가지로 Store2에 유지되는 모든 서비스의 SME에 대한 권한 부여를 WMSGroup2로 변경해야 합니다. 다음 예제는 구성 파일을 사용하여 SME에 대한 액세스를 보호하는 방법을 보여 줍니다.
<configuration>
<microsoft.applicationServer>
<hosting>
<serviceManagement enabled="true" authorizedWindowsGroup="WMSGroup1" endpointConfiguration="ServiceManagementNetPipeEndpoint" />
</hosting>
</microsoft.applicationServer>
</configuration>
Workflow Management service 구성
이 항목의 시작 부분에 설명된 시나리오의 경우 WMS1이 Store1을 모니터링하고 WMS2가 Store2를 모니터링하도록 구성해야 합니다. 이렇게 하려면 다음 샘플 구성에 표시된 대로 루트 Web.config 파일에서 Workflow Management service 구성 섹션을 수정합니다.
<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 그룹을 Administrators, Readers 및 Users와 같은 세 가지 유형의 사용자와 연결할 수 있습니다. 기본적으로 Windows 그룹 AS_Administrators, AS_Observers 및 IIS_USRS는 각각 Administrators, Readers 및 Users와 연결되어 있습니다. 이 마법사는 AS_Administrators를 SQL Server의 InstanceStoreObservers, WorkflowActivationUsers, WorkflowAdministrators 및 WorkflowManagementServiceUsers 역할에 추가하고, AS_Observers를 InstanceStoreObservers 역할에 추가하며, IIS_USRS를 InstanceStoreUsers 역할에 추가합니다.
이 마법사는 workflowInstanceManagement 요소의 authorizedWindowsGroup 특성 값과 serviceManagement 요소의 authorizedWindowsGroup 특성 값을 AS_Administrators로 설정합니다.
2011-12-05