Verwalten von Datenbanken in Azure SQL-Datenbank mit Azure Automation
In diesem Artikel wird das Verfahren zum Verbinden und Verwalten von Datenbanken in der Azure SQL-Datenbank mithilfe der systemseitig zugewiesenen verwalteten Identität von Azure Automation beschrieben. Mit Azure Automation können Sie Datenbanken in Azure SQL-Datenbank mit den aktuellen Az-PowerShell-Cmdlets verwalten, die in den Azure Az PowerShell-Tools zur Verfügung stehen.
In Azure Automation sind diese Azure Az PowerShell-Cmdlets sofort einsatzfähig, sodass Sie alle Aufgaben im Zusammenhang mit der SQL-Datenbankverwaltung innerhalb des Diensts ausführen können. Sie können diese Cmdlets in Azure Automation auch mit den Cmdlets von anderen Azure-Diensten koppeln, um komplexe Aufgaben über Azure-Dienste und Drittanbietersysteme hinweg zu automatisieren.
Azure Automation kann auch T-SQL-Befehle (Transact SQL) für SQL Server mithilfe von PowerShell ausgeben.
Um die Befehle für die Datenbank auszuführen, müssen Sie die folgenden Schritte ausführen:
- Stellen Sie sicher, dass das Automation-Konto über eine systemseitig zugewiesene verwaltete Identität verfügt.
- Geben Sie die entsprechenden Berechtigungen für die verwaltete Automation-Identität an.
- Konfigurieren Sie SQL Server für die Verwendung der Microsoft Entra-Authentifizierung.
- Erstellen Sie Benutzer*innen in SQL Server, die der verwalteten Identität des Automation-Kontos zugeordnet sind.
- Erstellen Sie ein Runbook, um eine Verbindung herzustellen und die Befehle auszuführen.
- (Optional) Wenn SQL Server durch eine Firewall geschützt ist, erstellen Sie einen Hybrid Runbook Worker (HRW), installieren Sie die SQL-Module auf diesem Server, und fügen Sie die HRW-IP-Adresse der Positivliste der Firewall hinzu.
Herstellen einer Verbindung mit Azure SQL-Datenbank mithilfe einer systemseitig zugewiesenen verwalteten Identität
Führen Sie die folgenden Schritte aus, um den Zugriff von der systemseitig verwalteten Automation-Identität auf die Azure SQL-Datenbank zuzulassen:
Wenn die systemseitig verwaltete Automation-Identität AUS ist, gehen Sie wie folgt vor:
Melden Sie sich beim Azure-Portal an.
Navigieren Sie zu Ihrem Automation-Konto.
Wählen Sie auf der Seite des Automation-Kontos unter Kontoeinstellungen die Option Identität aus.
Wählen Sie auf der Registerkarte Systemseitig zugewiesen für Status den Wert EIN aus.
Wenn die systemseitig verwaltete Identität EIN ist, müssen Sie dem Konto mit den folgenden Schritten den erforderlichen Zugriff bereitstellen:
- Wählen Sie auf der Seite Automation-Konto | Identität auf der Registerkarte Systemseitig zugewiesen unter „Berechtigungen“ die Option Azure-Rollenzuweisungen aus.
- Wählen Sie auf der Seite „Azure-Rollenzuweisungen“ die Option + Rollenzuweisung hinzufügen (Vorschau) aus.
- Wählen Sie unter Rollenzuweisung hinzufügen (Vorschau) für Bereich die Option SQL aus, wählen Sie Abonnement und Ressource aus der Dropdownliste und Rolle entsprechend den erforderlichen Mindestberechtigungen aus. Wählen Sie dann Speichern aus.
Konfigurieren Sie SQL Server für die Active Directory-Authentifizierung mithilfe der folgenden Schritte:
- Wechseln Sie zur Startseite des Azure-Portals, und wählen Sie SQL Server aus.
- Wählen Sie auf der Seite SQL Server unter Einstellungen die Option Microsoft Entra ID aus.
- Wählen Sie Administrator festlegen aus, um SQL Server für die AD-Authentifizierung zu konfigurieren.
Fügen Sie die Authentifizierung auf SQL-Seite hinzu, indem Sie die folgenden Schritte ausführen:
- Wechseln Sie zur Startseite des Azure-Portals, und wählen Sie SQL Server aus.
- Wählen Sie auf der Seite SQL Server unter Einstellungen die Option SQL-Datenbanken aus.
- Wählen Sie Ihre Datenbank aus, um zur SQL-Datenbankseite zu wechseln, wählen Sie Abfrage-Editor (Vorschau) aus, und führen Sie die folgenden beiden Abfragen aus:
# AutomationAccount - replace with your Automation account's name # ObjectID - replace with object (principal) ID for your system managed identity principal from step 1. CREATE USER "AutomationAccount" FROM EXTERNAL PROVIDER WITH OBJECT_ID = `ObjectID` EXEC sp_addrolemember `db_owner`, "AutomationAccount"
Beispielcode
Verbindung mit Azure SQL Server
if ($($env:computerName) -eq "Client") {"Runbook running on Azure Client sandbox"} else {"Runbook running on " + $env:computerName}
Disable-AzContextAutosave -Scope Process
Connect-AzAccount -Identity
$Token = (Get-AZAccessToken -ResourceUrl https://database.windows.net).Token
Invoke-Sqlcmd -ServerInstance azuresqlserverxyz.database.windows.net -Database MyDBxyz -AccessToken $token -query 'select * from TableXYZ'
Überprüfen von Kontoberechtigungen auf SQL-Seite
SELECT roles.[name] as role_name, members.name as [user_name]
from sys.database_role_members
Join sys.database_principals roles on database_role_members.role_principal_id= roles.principal_id
join sys.database_principals members on database_role_members.member_principal_id=members.principal_id
Order By
roles.[name], members.[name]
Hinweis
Wenn SQL Server hinter einer Firewall ausgeführt wird, müssen Sie das Azure Automation-Runbook auf einem Computer in Ihrem eigenen Netzwerk ausführen. Stellen Sie sicher, dass Sie diesen Computer als Hybrid Runbook Worker konfigurieren, damit die IP-Adresse oder das Netzwerk nicht von der Firewall blockiert wird. Weitere Informationen zum Konfigurieren eines Computers als Hybrid Worker finden Sie unter Erstellen eines Hybrid Workers.
Verwenden des Hybrid Workers
Wenn Sie einen Hybrid Worker verwenden, müssen die von Ihrem Runbook verwendeten Module lokal über eine PowerShell-Eingabeaufforderung mit erhöhten Rechten installiert werden. Beispielsweise - Install-module Az.Accounts and Install-module SqlServer
. Um die erforderlichen Modulnamen zu finden, führen Sie einen Befehl für jedes Cmdlet aus, und überprüfen Sie dann die Quelle. Um beispielsweise den Modulnamen für das Cmdlet Connect-AzAccounts
zu überprüfen, das Teil des Az.Account-Moduls ist, führen Sie den folgenden Befehl aus: get-command Connect-AzAccount
Hinweis
Es wird empfohlen, den folgenden Code oben in jedem Runbook hinzuzufügen, das auf einem Hybrid Worker ausgeführt werden soll: if ($($env:computerName) -eq "CLIENT") {"Runbook running on Azure CLIENT"} else {"Runbook running on " + $env:computerName}
. Mit dem Code können Sie den Knoten sehen, auf dem es ausgeführt wird. Falls Sie es versehentlich in der Azure-Cloud und nicht auf dem Hybrid Worker ausführen, ist dies nützlich, um den Grund zu ermitteln, warum ein Runbook nicht funktioniert hat.
Nächste Schritte
- Ausführliche Informationen zur Verwendung von Anmeldeinformationen finden Sie unter Verwalten von Anmeldeinformationen in Azure Automation.
- Weitere Informationen zu Modulen finden Sie unter Verwalten von Modulen in Azure Automation.
- Wenn Sie Informationen zum Starten eines Runbooks benötigen, lesen Sie den Artikel Starten eines Runbooks in Azure Automation.
- Details zu PowerShell finden Sie in der PowerShell-Dokumentation.