永続化ストアのセキュリティ構成
SQL Server 永続化データベースへのアクセスは、次の SQL Server の役割によって保護されています。
InstanceStoreUsers。この役割のメンバーは、インスタンス ストアからワークフロー インスタンスをロード、およびインスタンス ストアにワークフロー インスタンスを保存できます。WorkflowServiceHost または WorkflowApplication を使用してサービスをホストし、永続化に SqlWorkflowInstanceStore を使用するアプリケーションは、この役割のメンバーである ID で実行する必要があります。
InstanceStoreObservers。この役割のメンバーは、インスタンス ストアに照会できます。WorkflowServiceHost または WorkflowApplication を使用してサービスをホストし、永続化に SqlWorkflowInstanceStore を使用するアプリケーションは、この役割のメンバーである ID で実行する必要があります。
WorkflowAdministrators。この役割のメンバーは、インスタンス ストアのコマンド キューにコントロール コマンドを登録 (追加) できます。
WorkflowActivationUsers。この役割のメンバーは、アクティブ化可能なワークフロー インスタンスをインスタンス ストアに照会できます。ワークフロー管理サービス (WMS) は、この役割のメンバーである ID で実行する必要があります。
WorkflowManagementServiceUsers。この役割のメンバーは、インスタンス ストアのコマンド キューからコントロール コマンドを削除 (取得コマンド) できます。WMS は、この役割のメンバーである ID で実行する必要があります。
SQL 永続化ストアへのアクセスは、ストアごとに許可されます。インスタンス ストアに格納されたワークフロー サービス インスタンスにアクセスできるユーザーは、ストア内の他のワークフロー サービス インスタンスを含むすべてのインスタンスにアクセスできます。あるサービスのインスタンスにアクセスできるユーザーが他のサービスのインスタンスにアクセスできないようにするには、これらの 2 つのサービスに別個のインスタンス ストアを使用する必要があります。
たとえば、Service1 が User1 の ID で実行されているとすると、Reader1 は Service1 のインスタンスを照会でき、Admin1 は Service1 のインスタンスを制御できます。Service 2 は User2 の ID で実行され、Reader2 は Service2 のインスタンスを照会でき、Admini2 は Service2 のインスタンスを制御できます。User1/Reader1/Admin1 が Service2 のインスタンスをロード/照会/制御できないようにし、User2/Reader2/Admin2 が Service1 のインスタンスをロード/照会/制御できないようにするには、Service1 のインスタンスすべてをインスタンス ストア Store1 に格納し、Service2 のインスタンスすべてをインスタンス ストア Store2 に格納する必要があります。
この場合、ユーザーは次のとおり役割にユーザーまたは Windows グループを追加する必要があります。
Store1 の役割 InstanceStoreUsers に User1 を追加します。または、Windows グループ UserGroup1 に User1 を追加し、Store1 データベースの役割 InstanceStoreUsers に UserGroup1 を追加します。
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 の複数のインスタンスを実行します。たとえば、ワークフロー管理サービスの 2 つのインスタンス WMS1 および WMS2 を実行中であり、どちらのインスタンスも BUILTIN\Local Services のアカウントで実行しているとします。WMS1 はセキュリティ識別子 WMS-SID1 に割り当てられており、WMS2 はセキュリティ識別子 WMS-SID2 に割り当てられているとします。この場合、上記の手順一覧の最後の手順の代わりに、次の手順に従う必要があります。
Windows グループの WMSGroup1 に WMS-SID1 を追加し、Store1 データベースの WorkflowActivationUsers および WorkflowManagementServiceUsers に WMSGroup1 を追加します。
Windows グループの WMSGroup2 に WMS-SID2 を追加し、Store2 データベースの WorkflowActivationUsers および WorkflowManagementServiceUsers に WMSGroup2 を追加します。
インスタンス制御エンドポイントの認証
前セクションで述べた例では、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>
ワークフロー管理サービスの構成
トピックの最初に述べた例では、Store1 を監視するよう WMS1 を構成し、Store2 を監視するよう WMS2 を構成する必要があります。これには、次のサンプル構成で示すとおり、ルート 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 のグループを Administrator、Reader、および User の 3 種類のユーザーに関連付けることができます。既定では、Windows グループの AS_Administrators、AS_Observers、および IIS_USRS が順に Administrator、Reader、および User に関連付けられています。ウィザードは SQL Server の InstanceStoreObservers、WorkflowActivationUsers、WorkflowAdministrators、および WorkflowManagementServiceUsers の役割に AS_Administrators を追加し、InstanceStoreObservers の役割に AS_Observers を追加し、InstanceStoreUsers の役割に IIS_USRS を追加します。
ウィザードは、workflowInstanceManagement 要素の authorizedWindowsGroup 属性の値および、serviceManagement 要素の authorizedWindowsGroup 属性の値を AS_Administrators に設定します。
2011-12-05