ワークフローのセキュリティ
Windows Workflow Foundation (WF) は、Microsoft SQL Server や Windows Communication Foundation (WCF) などの複数のさまざまなテクノロジと統合されています。 これらのテクノロジと相互作用するうえで、不適切に実行された場合にワークフローでセキュリティの問題が発生することがあります。
Note
ワークフローは、実行順序と、実行時間の短いタスクまたは実行時間の長いタスク間の依存関係を記述します。 コード実行メカニズムとして、信頼されたコードのみを読み込んで実行する必要があります。 開発者は、WF を使用するアプリケーションで信頼されたワークフローのみが使用されるようにする必要があります。
永続化のセキュリティに関する注意事項
Delay アクティビティと永続化を使用するワークフローは、サービスによって再アクティブ化する必要があります。 Windows AppFabric はワークフロー管理サービス (WMS) を使用して、タイマーが期限切れのワークフローを再アクティブ化します。 WMS は WorkflowServiceHost を作成して、再アクティブ化されたワークフローをホストします。 WMS サービスが停止した場合、永続化されたワークフローはタイマーが時間切れになっていると再アクティブ化されません。
永続的なインスタンスへのアクセスは、アプリケーション ドメイン外の安全でないエンティティから保護する必要があります。 また、開発者は、悪意のあるコードが永続性インスタンス化コードと同じアプリケーション ドメインで実行できないようにする必要があります。
永続性インスタンス化は、高い (管理者の) アクセス許可で実行しないでください。
アプリケーション ドメインの外部で処理されるデータは、保護する必要があります。
セキュリティの分離を必要とするアプリケーションは、スキーマ抽象化と同じインスタンスを共有しないようにします。 このようなアプリケーションは、異なるストア プロバイダーを使用するか、別のストアのインスタンス化を使用するように構成されたストア プロバイダーを使用する必要があります。
SQL サーバーのセキュリティに関する注意事項
子アクティビティ、場所、ブックマーク、ホストの拡張機能、またはスコープを多数使用する場合、またはペイロードが非常に大きいブックマークを使用する場合、メモリが不足したり、永続化の実行中に必要以上のディスク容量が割り当てられる可能性があります。 オブジェクト レベルおよびデータベース レベルのセキュリティを使用すると、このような状態を緩和できます。
SqlWorkflowInstanceStore を使用する場合、インスタンス ストアをセキュリティで保護する必要があります。
インスタンス ストアの機密情報は暗号化する必要があります。 詳細については、「 SQL Server の暗号化」を参照してください。
多くの場合、データベース接続文字列は構成ファイルに含まれているので、Windows レベルのセキュリティ (ACL) を使用して、構成ファイル (通常は Web.Config) が安全であるように、またログインとパスワードの情報が接続文字列に含まれないようにする必要があります。 Windows 認証をデータベースと Web サーバー間で代わりに使用する必要があります。
WorkflowServiceHost に関する考慮事項
ワークフローで使用されている Windows Communication Foundation (WCF) エンドポイントは、セキュリティで保護される必要があります。 詳細については、WCF セキュリティの概要に関するページを参照してください。
ServiceAuthorizationManager を使用して、ホスト レベルの認証を実装できます。 詳細については、「方法: サービスで使用するカスタム承認マネージャーを作成する」を参照してください。
受信メッセージの ServiceSecurityContext は、OperationContext へのアクセスによって、ワーク フロー内からも使用できます。
WF Security Pack CTP
Microsoft WF Security Pack Community Technology Preview (CTP) 1 とは、.NET Framework 4 (WF 4) の Windows Workflow Foundation と Windows Identity Foundation (WIF) に基づく、一連のアクティビティとその実装です。 Microsoft WF Security Pack CTP 1 には、アクティビティおよび、ワークフローを使用してさまざまなセキュリティ関連のシナリオを簡単に有効にする方法を示すそのデザイナーの両方が含まれています。これらには以下のものが含まれます。
ワークフローのクライアント ID の偽装
PrincipalPermission やクレームの検証などの内部ワークフローの認証
ユーザー名/パスワードやセキュリティ トークン サービス (STS) から取得するトークンなど、ワークフローで指定される ClientCredentials を使用した認証されたメッセージ
WS-Trust ActAs を使用して、クライアント セキュリティ トークンをバックエンド サービス (クレーム ベースの委任) にフロー
.NET