108bones Technical Notes
108bonesが日々勉強している技術系のメモ。 初心者に優しいサイトを目指します。
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

MSDTCの認証設定を確認する
最近のWEBアプリでは、アプリケーションサーバがDMZに設置され、データベースサーバが
LANに設置されていることが多いと思います。またその場合アプリケーションサーバはドメイン
には参加せず、スタンドアロンになっていることが多いのではないでしょうか。

そのような状況下において 分散トランザクションコーディネーター (MSDTC) を利用する
場合もあると思います。このとき問題になるのが MSDTC のアクセス権です。

本件に関してはMSでKBが出ています。
「コンピュータが同じドメインで実行されていない場合に MSDTC による相互認証が失敗する」
こちらではレジストリによる設定が紹介されていますが、Windows Server 2003(SP1)または、
XP(SP2)では GUI で設定を変更できます。他バージョンは検証していません。

1. 「管理ツール」より「コンポーネント サービス」を開いてください。
2. 以下の画面より「プロパティ」をクリックしてください。
msdtc_sec1.gif

3. 「 MSDTC 」タブをクリックして、左下にある「セキュリティの構成」をクリックします。
msdtc_sec2.gif

4. 「認証を必要としない」にチェックを入れます。(画面は初期設定)
msdtc_sec3.gif

5. 「OK」をクリックして MSDTC を再起動します。

これでアクセス権の設定は完了です。ただ環境により他にもオプションを選択する必要が
あったりもすると思います。SQL2005の 分散パーティションビュー の更新に関しては
この設定でうまくいきました。今回はここまで。

スポンサーサイト
MSDTCを特定範囲のポートで使用する:DCOM全般
分散したSQL環境では 分散トランザクションコーディネーター (MSDTC:Microsoft Distributed
Transaction Coordinator)を利用してトランザクションを実現していますが、構造上アプリケーション
サーバとデータベースサーバが分かれている場合、アプリケーションサーバだけをDMZに設定し、
データベースサーバとの間に ファイアウォール が設置されます。

しかし MSDTC をはじめとした DCOM (Distributed Component Object Model)では動的ポートが
採用されているため、 ファイアウォール で1024番以上のポートを閉じれません。そこでポートを
特定の範囲に限定する方法がMSのページで紹介されているので検証します。

元ネタはこちら→「Using Distributed COM with Firewalls」

早速手順ですが、レジストリを編集するため十分に注意してください。当然無保証。

1. レジストリエディタを開く。
2. HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc を開く。
3. Internetキーを追加する。
4. 以下のように文字列値などを追加する。
rpc_1.gif

画面の通りに設定すると DCOM 系のものは5000~5020番を利用します。
パラメータの説明は以下の通り。

Ports
ポートと範囲を1行につき1つずつ入力します。
例)5000~5020と10000を利用したい場合
5000-5020
10000
PortsInternetAvailable
設定の有効無効を決めます。この設定を使用する場合は Y にします。
UseInternetPorts
Y だとPortsで指定した範囲を DCOM アプリで使います。N だとそれ以外を使います。

5. マシンを再起動すると設定が有効になります。

これで ファイアウォール の設定が行えるようになりました。
最後に一点注意ですが、決めたポート番号以外に 135番 ポートは必ず空けてください。
DCOM クライアントはまずこのポートに DCOM アプリのポートを確認しにいき、その後取得した
ポート番号へ接続に行きます。また DCOM の動作で注意すべき点としては、他のTCP/IP通信と
異なり、 DCOM アプリでは応答時に別のセッションを利用します。つまりクライアント側でも同じく
ファイアウォール でポートを塞ぐ必要がある場合、同じ設定をクライアント側にも行ってください。
※ポート番号は自由です。ポリシーのもと決めることになるかな。

Windows XP のSP2を利用している場合は ファイアウォール が利用できるので、検証できます。
サーバ側だけ設定をして、クライアント側で ファイアウォール を有効にしているとエラーになる
ので一度試してください。

以下の記事も参考になると思います。
「SQL Server 2000 でエラー メッセージ 7391 が表示される」

はじめの英語のサイトには DCOM の動作も含めて解説していますのお勧めです。



上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。