プラグイン分離、信頼、および統計

 

公開日: 2017年1月

対象: Dynamics 365 (online)、Dynamics 365 (on-premises)、Dynamics CRM 2016、Dynamics CRM Online

Microsoft Dynamics 365 (オンラインおよび設置型) では、隔離された環境でのプラグインとユーザー定義ワークフロー活動の実行をサポートします。 この隔離された環境 (サンドボックスとも呼ばれます) の中で、プラグインまたはユーザー定義の活動は Microsoft Dynamics 365 SDK のすべての機能を使用して組織の Web サービスにアクセスできます。 ファイル システム、システム イベント ログ、特定のネットワーク プロトコル、レジストリなどへのアクセスは、サンドボックス内では禁止されています。 ただし、サンドボックス プラグインとユーザー定義の活動は、Azure Cloud Services などの外部エンドポイントにはアクセスできます。

Microsoft Dynamics 365 は、サンドボックス内で実行されるプラグインとユーザー定義ワークフロー活動の実行時統計を収集し、監視します。 このカスタム コードをホストするサンドボックス ワーカー プロセスが CPU、メモリ、またはハンドルの制限のしきい値を超過するか、何らかの理由で反応しなくなった場合、そのプロセスはプラットフォームによって強制終了されます。 その時点で、ワーカー プロセス内で実行中のプラグインまたはユーザー定義ワークフロー活動はすべて例外により失敗します。 ただし、プラグインまたはユーザー定義ワークフロー活動の次回の実行時には、プラグインは正常に動作します。 組織ごとに 1 つのワーカー プロセスが存在するので、1 つの組織で発生したエラーが別の組織に影響を与えることはありません。

要約すれば、サンドボックスは安全性が高く、実行時の監視と統計の報告をサポートし、Microsoft Dynamics 365 のすべての展開でサポートされるため、プラグインの推奨実行環境です。 また、ユーザー定義ワークフロー活動の実行は、サンドボックスに登録されている場合にのみ Microsoft Dynamics 365 (オンライン) でサポートされます。

信頼

開発者は、プラグインをサンドボックスに登録する (部分信頼) か、サンドボックスの外部に登録する (完全信頼) ことを選択できます。 完全信頼は、設置型およびインターネットに接続する Microsoft Dynamics 365 展開でサポートされます。Microsoft Dynamics 365 (オンライン) 展開の場合、プラグインまたはユーザー定義ワークフロー活動は、前述のように隔離されるサンドボックスに登録する必要があります (部分信頼)。

重要

Microsoft Dynamics CRM 4.0 SDK を使用して開発されたカスタム ワークフロー活動およびプラグインは、サンドボックスまたは Microsoft Dynamics 365 (オンライン) での実行はサポートされません。

実行時統計

Microsoft Dynamics 365 プラットフォームは、サンドボックス内で実行されるプラグインとユーザー定義ワークフロー活動の実行時情報を収集します。 この情報は、PluginTypeStatistic エンティティ レコードを使用して、データベースに格納されます。 これらのレコードは、サンドボックス化されたカスタム コードの実行後、30 分から 1 時間以内にデータが取り込まれます。 収集される情報の内容については、PluginTypeStatistic 属性を参照してください。 この情報は、取得メッセージまたは取得メソッドを使用して取得できます。

Web アクセス

サンドボックス化されたプラグインとユーザー定義ワークフロー活動は、HTTP および HTTPS プロトコルを介してネットワークにアクセスできます。 この機能によって、ソーシャル サイト、ニュース フィード、Web サービスなどの一般的な Web リソースにアクセスできます。 このサンドボックスの機能には、次の Web アクセス制限が適用されます。

  • 許可されるプロトコルは HTTP および HTTPS だけです。

  • localhost (ループバック) へのアクセスは許可されません。

  • IP アドレスは使用できません。DNS による名前解決を必要とする名前付き Web アドレスを使用する必要があります。

  • 匿名認証がサポートされ、その使用が推奨されます。 ログオン ユーザーの資格情報を入力または保存する必要はありません。

このような既定の Web アクセス制限は、Microsoft.Crm.Sandbox.HostService.exe プロセスを実行するサーバーのレジストリ キーに定義されています。 レジストリ キーの値は、システム管理者がビジネスおよびセキュリティのニーズに応じて変更できます。 サーバーのレジストリ キー パスは次のとおりです。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSCRM\SandboxWorkerOutboundUriPattern

キー値は、Web アクセス制限を定義する正規表現文字列です。 既定のキー値は次のとおりです。

"^http[s]?://(?!((localhost[:/])|(\[.*\])|([0-9]+[:/])|(0x[0-9a-f]+[:/])|(((([0-9]+)|(0x[0-9A-F]+))\.){3}(([0-9]+)|(0x[0-9A-F]+))[:/]))).+";

このレジストリ キー値を変更することで、Web アクセスをサンドボックス プラグイン用に変更できます。

System_CAPS_security セキュリティ メモ

サンドボックス処理サービス ロールは、アウトバウンド コールが有効になるように既定で設定されます。 カスタム コード (プラグインまたはユーザー定義のワークフロー活動) からアウトバウンド コールを許可したくない場合、サンドボックス処理サービス ロールをホストしているサーバーで以下のレジストリ キーを 1 (DWORD) に設定して、アウトバウンド コールを無効化できます。 次に、Microsoft Dynamics 365 Sandbox Processing Service を再開します。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSCRM\SandboxWorkerDisableOutboundCalls

関連項目

イベント フレームワークの紹介
プラグインを記述する
ユーザー定義ワークフロー活動の作成
Microsoft Dynamics 365 の Azure 拡張機能
PluginTypeStatistic エンティティのメッセージおよびメソッド
サンプル: 隔離されたプラグインからの Web アクセス

Microsoft Dynamics 365

© 2017 Microsoft. All rights reserved. 著作権