別のドメインでWindows認証を使用してSQL Serverに接続する


74

別のドメインのVPN上のリモートSQL Serverに接続しようとしています。SQL Serverにサーバー名を入力し、[追加の接続パラメーター]を選択して、学校で必要なものを追加します。

Integrated Security=SSPI; User ID=DOMAIN\username; Password=Password

次のエラーが表示されます。

ログインに失敗しました。ログインは信頼できないドメインからのものであり、Windows認証では使用できません。


Windows Credential Managerソリューションの唯一の問題は、サポートするデータベースが大量にある場合、それぞれにエントリを用意し、ドメインパスワードを更新するたびに更新する必要があることです。一部の人々にとっては、30〜60日ごとです。
-smehaffie

この投稿はやや関連しています。
RBT

@smehaffieを使用すると、スクリプトと「cmdkey / add」コマンドを使用してパスワードを簡単に維持できます。これも更新されます。
ミスターマグー

回答:


70

アプリケーションの接続文字列からプレーンテキストでWindows資格情報を渡そうとしています。これは単にWindows認証が機能する方法ではなく、その目的を大きく損ないます。

また、自分のドメインで同じパスワードを使用して同じユーザー名を作成し、それが魔法のように機能することを期待することもできません。ドメイン名はまだ検証の一部です。マシンはドメインの一部であるか、マシンが属するドメインが学校のドメインによって信頼されている必要があります。

私が知っている唯一の回避策はSSMSであり、それrunas /netonlyこの回答で説明されているトリックです。これにより、Windowsは自分のログインではなく、指定したログインとしてSSMSを起動します(これは、SSMSの[接続プロパティ]ダイアログで設定できるものではなく、コマンドラインまたはショートカットからSSMSを起動する方法です)。

runas /netonly /user:domain\username "C:\path_to\ssms.exe"

これにより、リモートドメインでパスワードの入力が求められます。それはなります見て、それはあなたのローカルのWindows資格情報を使用しているように、そうではありません

Visual Studioでも動作する可能性はありますが、実際にはわかりません。

オプションは次のとおりです。

  • 大学に、マシンをドメインに参加させることを許可してもらう
  • 大学にドメインを信頼できるドメインとして追加してもらう
  • VPN内にジャンプボックスがあり、SQL Serverマシンに直接接続するRDPおよびツールを使用できます
  • SQL認証を使用する
  • runas /netonlyVisual Studioでトリックを試す
  • runas /netonlySSMSでトリックを使用するだけです

このrunasこと Visual Studioで機能します。
ダニエルハットマッハー

コマンドプロンプトなしでこの動作を模倣する方法はありますか?
ジルレジー

1
バッチファイルを作成し、バッチファイルをダブルクリックするか、その文字列を使用すると、おそらくショートカットを作成することができますすることができます@Gilles
アーロン・ベルトラン

103

別の方法がありますが、今ではこのrunas /netonly方法よりも優先して使用しています。

Windowsのコントロールパネルにある資格情報マネージャーを使用して、Windowsのプロファイルに資格情報を追加できます。

  1. 資格情報マネージャーを開く
  2. [Windows資格情報の追加]をクリックします
  3. 「インターネットまたはネットワークアドレス」フィールドに、資格情報を保存するSQLインスタンスの名前とポート番号を入力します。

    例:UniServer:1433(1433はデフォルトのポートです。特に名前付きインスタンスに接続している場合は、別のポートが必要になる場合があります)

  4. 「ユーザー名」を入力します(たとえば、ドメインを含めることを忘れないでくださいMYDOMAIN\MYUSER
  5. 「パスワード」を入力します
  6. OKをクリック

サーバー名、ポート、およびログインの詳細が正しい場合、ほとんどのクライアントツール、SSMS、ExcelなどからWindows認証を使用できるようになります。それらはすべて、保存された資格情報を使用します。

ヒント:資格情報を追加するときに、サーバーのFQNを使用する必要がある場合があります。たとえばUniServer.UniDomain.org:1433、それはすべてネットワークの仕様に依存します。

ここにメソッドの簡単なデモがあります:http : //youtu.be/WiVBPsqB9b4

これは、デスクトップでVMで実行されているSQL Serverに接続しようとして(そして失敗して)、必要な資格情報を追加して再試行する-成功した画面です。

ヒント:「cmdkey / add」コマンドを使用して、保存された資格情報の作成と更新をスクリプト化します。


面白い!実際に呼び出されるものではなく、クライアントマシンがリモートマシンが呼び出されると考えるものに依存するようです。IPアドレスのホストファイルに発明されたエントリ( "verysillytest.mwardm")を入れ(ドメインの外部からアクセスしている人は実行する必要がないため)、 "verysillytest.mwardm"という名前の資格情報を設定しました。 1433 "。ホスト名またはIPアドレスを使用して、(Query Expressと呼ばれる小さなアプリから)うまく接続できます。
mwardm

@mwardm yes
ミスターマグー

ああ、「ping -a」では何も得られず、nslookupは(すぐに)動作しませんでした。これは、ドメインのDNSサーバーを使用していなかったためです。心配しないでください。実際には、IPアドレス(およびログイン)を知っているだけで、自分の名前を作成できるという柔軟性が好きです。
mwardm

2
素晴らしい、うまくいきます!私はただ疑問に思う-それはそのように動作するはずですか、それはバグかSQL Serverの側で設計が失敗しますか?MicrosoftまたはMicrosoftの人々は、ドメインに接続されたマシンが必要であることをあらゆる場所で宣伝します。そうしないと、ドメイン資格情報のみを受け入れるように設定されたSQL Serverに接続する方法がありません。
ダウィドフェレンツィーロゴザン

ところで、私はこの答えが受け入れられたとマークされるべきであると言うでしょう、なぜならそれは本当の解決策であるようで、他の答えはより回避策のようです。
ダウィドフェレンツィーロゴザン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.