Excel への動的データエクスポート – セキュリティは大丈夫?

みなさん、こんにちは

本日は、セキュリティに関係するトピックを紹介します。

Dynamics CRM 4.0 のよく使われる機能である、Excel への動的データエクスポートですが、この機能で
ユーザはエクスポートされた Excel シートを使用して、常に最新のデータを取得することが可能です。

この機能に関してよくある質問は、どのようにしてこのデータを保護するかということです。設置型 CRM の場合、
エクスポートしたExcel からデータを更新する場合には、たとえ CRM の Web サーバーを SSL で保護していても、
Excel からの通信は暗号化されません。なぜなら、パフォーマンスの観点より、SQL サーバーに直接アクセスする
ためです。この通信を暗号化するためには、IPSec 使用などを検討する必要があります。

※IFD (Internet Facing Deployment) を利用している場合には、この問題は検討する必要はありません。IFD の
場合には、直接 SQL サーバーへクエリすることはなく、CRM の Web サービスに対して、FetchXML を投げることで
データの取得を行うためです。よって HTTP 通信が SSL で保護されている環境では、問題がありません。

今回は CRM サイドおよび SQL サイドの、2 つの解決案を紹介します。

解決案 1: CRM - エクスポートした Excel で FetchXML を使用させる

IFD 環境と同様に、設置型でも FetchXML を利用した Web サービス経由のアクセスを強制できます。
※この機能を使用する場合 CRMTicket を利用するため、クライアントで、Outlook 用 CRM クライアントが
必須となりますので、ご注意ください。

以下の手順で、レジストリの設定を行ってください。

1. レジストリエディタを開いてください。

2. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSCRM を開いていただき、新規の DWORD 値を
  追加してください。

3. 作成した値の名前を UseWebQueryForLiveExport に変更していただき、値を 1 に設定してください。

4. IISRESET を実行してください。

以上の変更により、以後エクスポートされた動的 Excel シートは、FetchXML を使用するようになります。

また、エクセルへのエクスポートを制限したい場合には、セキュリティーロールより 「Excel にエクスポート」 権限を
調整してください。この権限は、事業部管理タブに存在します。

解決案 2: SQL - サーバーでプロトコル暗号を設定する

2 つ目の解決案は、 SQL サーバー側で実施が可能で、既にエクスポートされた Excel シートにも有効な方法です。
それは SQL サーバーの通信に SSL を利用するという方法です。以下の MSDN 記事を参考にしてください。

https://msdn.microsoft.com/ja-jp/library/ms189067(SQL.90).aspx

この案のメリットは、既にある Excel でも暗号化が可能で、Outlook 用 CRM クライアントを必要としないことです。

※ただし、実装時には SQL サービスの再起動が必要なため、ダウンタイムが発生します。
また、当然 SQL サーバーでのパフォーマンスに影響があります。

もし、自社内のネットワークが十分にセキュアな場合には、これらの検討は不要ですが、不安がある場合には
ご検討ください。

情報元: Dynamic Export to Excel feature – How to protect data over the wire
https://blogs.msdn.com/crm/archive/2009/01/26/dynamic-export-to-excel-feature-how-to-protect-data-over-the-wire.aspx

- Dynamics CRM サポート 中村 憲一郎