6

pstramiを使用してデプロイメントスクリプトを実行しています。展開の一部は、データベースの移行を実行することです。移行では、統合セキュリティを備えた接続文字列を使用しています。

スクリプトがリモートマシンで実行されると、移行は失敗し、ユーザー'NT AUTHORITY \ANONYMOUSLOGON'のログインに失敗したというSQLエラーが発生します。

スクリプトを実行するのはドメイン管理者です。私たちが実行する他のデプロイメントは、プロセスを開始したユーザーと一緒にリモートスクリプトを実行します。

4

3 に答える 3

16

問題は、統合されたセキュリティのために資格情報がSQLServerにホッピングしていないことです。次のことを行う必要があります。

サーバー上(管理者が実行するときにSQL Server接続を確立しているサーバー:

Enable-WSManCredSSP -Role server

クライアントマシンで、管理者が実行すると、次のようになります。

Enable-WSManCredSSP -Role client -DelegateComputer YOUR_SERVER_NAME

これをすべてのサーバーに公開するには、次のコマンドを実行できます。

Enable-WSManCredSSP -Role client -DelegateComputer *

最後に、invokeコマンドで、-authenticationcredsspを実行していることを確認してください。例:

invoke-command -computername $remoteServer -authentication credssp -scriptblock { write-host "hello!" } -credential $credentials
于 2013-02-08T20:10:36.167 に答える
2

これがシナリオ
です。desktopAからpstrami(deployment)スクリプトを実行します。スクリプトは、インストールファイルをserverAにプッシュします。次に、serverAで、desktopAからスクリプトを開始する人としてスクリプトがリモートで実行されます。手順の1つは、「統合セキュリティ」を使用した接続文字列パラメーターを使用して、fluentmigratorでSQLデータベースupateを実行することであり、データベースはserverB上にあります。

接続文字列の例:

$migration_db_connection = Data Source=serverB;Initial Catalog=PropertyDb;Integrated Security=SSPI; 
.\migrate.exe /conn "$migration_db_connection" /db SqlServer /a $migration_assembly /profile DEBUG

Pstramiは、スクリプトを実行しているアカウントをデフォルトユーザーとして使用するpowershellコマンドinvoke-commandを使用します。つまり、desktopAから「jonDoe」としてスクリプトを実行すると、serverAで認証されます。したがって、pstramiスクリプトはserverAの「jonDoe」の下で実行されます。serverAでfluentmigratorスクリプトを「jonDoe」として実行すると、fluentmigratorはエラーを返します。ユーザー「NTAUTHORITY\ANONYMOUSLOGON」のログインに失敗しました。IISでは、IISサーバーから別のリソースにアクセスする必要があり、特定のかなり一般的な状況が発生すると、興味深い状況に遭遇します。統合セキュリティを使用している場合、匿名アクセスが無効になり、なりすましがオンになり、Windowsのセキュリティ対策が開始されます。tサイトが任意のネットワークサーバー上のリソースにアクセスできるようにします。((http://weblogs.asp.net/owscott/archive/2008/08/22/iis-windows-authentication-and-the-double-hop-issue.aspx

これが、私が遭遇したWindows認証とダブルホップの問題を回避する方法です。移行スクリプトをSQLデータベースサーバーで直接実行し、pstrami環境のサーバーターゲットとして含めます。

例:

Environment "dev" -servers @(
    Server "serverA" @("InstallWeb") 
    Server "serverB" @("RunMigrations")
    ) 

ダブルホップの詳細

于 2012-08-27T20:39:42.757 に答える
0

私はあなたの質問にコメントすることができず、これを回答として投稿することはできません。後で同じものを更新します。

SQLServerにWindowsログインアカウントのログインアカウントがないことが原因である可能性があります。それが問題である場合は、ログインしているユーザーをリモートマシンのSQLServerに追加してください。

これがすでに対処されている場合は、SQLServerおよび使用している特定のデータベースの「NTAUTHORITY\ANONYMOUSLOGON」にDB_Ownerとしての権利を付与するオプションがあります。

于 2012-06-04T11:44:40.937 に答える