0

J'espère que vous pourrez m'aider à résoudre un problème auquel je suis confronté. C'est long pour fournir le contexte. En bref, mon accès d'authentification Windows à une base de données SQL Server 2008 R2 échoue car il semble essayer d'accéder à la base de données en tant que «NT AUTHORITY \ ANONYMOUS LOGON» et non à l'utilisateur actuel.Connexion à SQL Server 2012 (via l'authentification Windows) via powershell Enter-PSSession

Voici mon scénario: batterie de serveurs avec plusieurs serveurs exécutant des bases de données SQL Server autonomes sur lesquelles un certain nombre de scripts PowerShell doivent être exécutés, qui se connectent aux bases de données et exécutent des requêtes basées sur les requêtes. tables de base de données. Nous échouons au login de Windows auth à la base de données (qui fonctionne bien avec SQL Server Mgmt Studio v10).

Il ressemble à ceci:

  1. win7pc PS C:> Enter-PSSession -ComputerName winsvr2k8r2
  2. [winsvr2k8r2]: PS c: \ users \ svs_acct1>
  3. [winsvr2k8r2]: PS c: \ users \ svs_acct1> set-Location C:

    • NB: il y a un répertoire de script qui fait partie du $env:PATH ensemble dans le profil
  4. [winsvr2k8r2]: PS c: \ users \ svs_acct1>. . \ Users \ svs_acct1 \ bin \ Run-AdminTasks

sortie Script

Loading AD module ... 
Setting Global Variables ... 
I am user: domreff1\dbappuser 
Initiating DB Connection using windows auth to: sTango @ hgr23992\atr77504 
    with connect string ... 
    Data Source=hgr23992\atr77504;Initial Catalog=sTango;Integrated Security=SSPI 

erreur

Exception appelant "Open" avec l'argument "0" (s): "La connexion a échoué pour l'utilisateur 'NT AUTHORITY \ ANONYMOUS LOGON'."
à C: \ users \ svs_acct1 \ bin \ Run-AdminTasks: 21 car: 20
+ SqlConnection.open $ < < < <();
+ CategoryInfo: NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId: DotNetMethodException

Les éléments de connexion pertinents DB dans le script:

$SQLServer = "hgr23992\atr77504"; 
$SQLDBName = "sTango"; 
$SQLDBUser = [Security.Principal.WindowsIdentity]::GetCurrent().Name; 

$SqlConnection = New-Object System.Data.SqlClient.SqlConnection 
$SqlConnection.ConnectionString = "Data Source=$SQLServer;Initial Catalog=$SQLDBName;Integrated Security=SSPI" 
$SqlConnection.open(); 

Je traînants dans différents postes et a essayé chaîne de connexion d'un certain nombre de façons différentes, par exemple

Data Source=$SQLServer;Initial Catalog=$SQLDBName;Integrated Security=[Yes|True|SSPI] 

sans joie.

Des idées sur ce que le problème peut être et pourquoi la connexion DB semble refléter un contexte/utilisateur différent de ce que je suis en cours d'exécution du script?

Répondre

0

Le problème est kerberos auth et la délégation manquante du jeton.

Vous pouvez activer l'authentification CredSSP pour powershell (sur le côté serveur & côté client). Veuillez le faire uniquement via SSL sinon vous êtes vulnérable pour un MITM.

check https://msdn.microsoft.com/en-us/library/ee309365(v=vs.85).aspx

+0

Merci @marc_s pour les modifications. –

+0

Merci marc_s pour les modifications. @Neroon, merci pour votre suggestion. J'essaie d'obtenir que les administrateurs concernés effectuent les changements de configuration requis pour permettre que cela soit testé, mais ils ne peuvent pas être autorisés à terminer cette action dans son format actuel. Si je n'arrive pas à passer les équipes d'administration et de sécurité au courant de la semaine prochaine, je chercherai une autre avenue/approche. Très apprécié –

+0

Juste une mise à jour rapide. Je n'ai pas pu tester cela dans notre environnement actuel [politique interne ou politique, etc.] et j'ai choisi une méthode différente (lire bidouille) pour réaliser ce qui était nécessaire. –