2017-07-13 4 views
2

Je dois me connecter via Azure Automation à Azure SQL Server à l'aide de mon compte Azure Active Directory Admin défini comme Az AD SQL Server Azure SQL Server.Connexion au mot de passe Active Directory Échec SQL Azure d'Azure Automation

Je suis en mesure de se connecter à SQL Azure:

  1. En utilisant SSMS avec le compte administrateur AD Azure
  2. Utilisation de l'ISE PowerShell avec le compte administrateur AD Azure dans un ConnectionString SQL
  3. Utilisation de l'automatisation Azure avec le compte Azure SQL Admin (créé lors de la création d'un nouveau serveur SQL Azure) dans une chaîne de connexion SQL

Cependant, lors de la tentative de connexion à Azure SQL i n Azure Automation à l'aide du compte d'administration Active Directory dans Azure automatisation dans un ConnectionString SQL, je reçois l'erreur suivante:

New-Object : Exception calling ".ctor" with "1" argument(s): "Keyword not supported: 'authentication'."

Voici ma tentative de connexion:

$server = "tcp:myazuresql.database.windows.net,1433" 
$database = "TestDB" 
$adminName = "[email protected]" 
$adminPassword = "test1234" 

$connectionString = "Server=$server;Database=$database;User ID=$adminName;Password=$adminPassword;authentication=Active Directory Password;" 
$connection = New-Object -TypeName System.Data.SqlClient.SqlConnection($connectionString) 

Des idées sur pourquoi je peux me connecter via PowerShell ISE et SSMS mais pas Azure Automation avec l'administrateur Azure Active Directory? Je peux également me connecter via Azure Automation et le compte Azure SQL Admin (le compte d'administrateur par défaut que vous créez avec Azure SQL). La seule façon de ne pas pouvoir me connecter est d'utiliser l'administrateur Azure Active Directory lié à Azure SQL lors de l'utilisation d'Azure Automation.

+0

Utilisez-vous le module d'importation AzureAutomationAuthoringToolkit? –

+0

J'utilise Azure Automation sans importer le module. Que fait ce module? Exécution du même code dans Powershell ISE fonctionne sans problème – Kode

+1

Vous pouvez lire à propos du module ici: https: //www.powershellgallery.com/packages/AzureAutomationAuthoringToolkit/0.2.3.8 Je l'ai seulement fait de cette façon. Je vais fournir le code avec vos informations. –

Répondre

2

En utilisant AD Azure pour se connecter à SQL n'est pas encore pris en charge avec la fonction d'Azure automatisation nécessite .NET Framework 4.6 et actuellement les travailleurs d'automatisation Azure avait seulement .NET Framework 4.5.

Suggestion:

1

En utilisant l'automatisation Azure Module

## Using Azure Automation ISE Add-on 
    #Install-Module -Name AzureAutomationAuthoringToolkit 
    Import-Module AzureAutomationAuthoringToolkit 
    $SqlServer = "myazuresql.database.windows.net" 
    $SqlServerPort = "1433" 
    $Database = "TestDB" 
    $Table = "" 
    $SqlCredentialAsset = "" 
    $SqlCredential = Get-AutomationPSCredential -Name $SqlCredentialAsset 
    if ($SqlCredential -eq $null) 
     { 
      throw "Could not retrieve '$SqlCredentialAsset' credential asset. Check that you created this first in the Automation service." 
     } 
    $SqlUsername = $SqlCredential.UserName 
    $SqlPass = $SqlCredential.GetNetworkCredential().Password 
    $Conn = New-Object System.Data.SqlClient.SqlConnection("Server=tcp:$SqlServer,$SqlServerPort;Database=$Database;User ID=$SqlUsername;Password=$SqlPass;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;") 

    $Conn.Open() 
    $Cmd=new-object system.Data.SqlClient.SqlCommand("SELECT COUNT(*) from $Table", $Conn) 
    $Cmd.CommandTimeout=120 
    $Conn.Close() 

Code pour l'intérieur Runbook

#Runbook 
Param 
(
[Parameter(Mandatory=$true)] 
[String] 
$AureConnectionName 
) 

$AzureConn = Get-AutomationConnection -Name $AzureConnectionName 

If ($AuzreConn -eq $null) 
{ 
    throw "Could not retrieve '$SqlCredentialAsset' credential asset." 
} 
$Certificate = Get-AutomationCertificate -Name $AzureConn.AutomationCertificateName 

if ($Certificate -eq $null) 
{ 
throw "Could not retrieve '$AzureConn.AutomationCertificateName' certificate asset." 
} 

$cred = Get-Credential -Credential Domain\User 
Login-AzureRmAccount -Credential $cred 
Get-AzureRmSubscription | Select-AzureRmSubscription 
+0

Le problème que je rencontre est que, sans désigner le type d'authentification "Mot de passe Active Directory", cela ne fonctionne pas. Cela fonctionne dans PowerShell ISE mais pas dans le véritable Azure Automation Runbook exécuté à partir d'Azure Automation – Kode

+0

Utilisation du Runbook Azure Automation est difficile à expliquer. Vous devez créer AutomationCertificate, puis faire ce que vous feriez dans PowerShell ISE. Je n'ai pas touché à cette méthode depuis RM. C'était seulement dans Azure Classic. –

+0

Appréciez la tentative. J'utilise l'AZ Auto GUI et il est étrange que le code fonctionne dans PowerShell ISE et pas Azure Automation – Kode

1

S'il vous plaît se référer à cette question similaire.

Si vous souhaitez connecter le serveur SQL à l'utilisateur Azure AD, vous devez installer le ADAL SQL library sur votre machine virtuelle. Maintenant, le compte d'automatisation Azure n'installe pas la bibliothèque. Si vous souhaitez utiliser l'utilisateur Azure AD pour vous connecter à votre serveur SQL, vous pouvez sélectionner hybrid workers.

Runbooks in Azure Automation cannot access resources in your local data center since they run in the Azure cloud. The Hybrid Runbook Worker feature of Azure Automation allows you to run runbooks on machines located in your data center to manage local resources. The runbooks are stored and managed in Azure Automation and then delivered to one or more on-premises machines.

+0

Bonjour Walter. Je me connecte à Azure SQL, pas SQL hébergé dans une machine virtuelle. Je suis en mesure de me connecter à l'aide d'Azure SQL Admin et d'Azure Automation, mais pas de l'administrateur Azure Active Directory que vous pouvez définir avec Azure SQL à partir d'Azure Automation. Je peux me connecter à partir de PowerShell ISE avec le compte Azure Active Directory en tant qu'administrateur sur mon serveur Azure SQL Server (PaaS n'est pas une machine virtuelle). – Kode

+1

@Kode Sur la base de mes connaissances, pour l'instant, il n'est pas possible de se connecter au serveur SQL avec l'utilisateur Azure AD avec runbook. Parce qu'il a besoin de la bibliothèque ADAL SQL, mais l'automatisation ne l'installe pas. –

+0

C'est bon à savoir. Une idée de pourquoi cela fonctionne avec PowerShell ISE? – Kode