永続化ストアのセキュリティ構成

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