Sdílet prostřednictvím


Správa databází v databázi Azure SQL pomocí služby Azure Automation

Tento článek popisuje postup připojení a správy databází v databázi Azure SQL pomocí spravované identity přiřazené systémem ve službě Azure Automation. Pomocí služby Azure Automation můžete spravovat databáze ve službě Azure SQL Database pomocí nejnovějších rutin Az PowerShellu, které jsou k dispozici v Azure Az PowerShellu.

Služba Azure Automation má k dispozici tyto rutiny Azure Az PowerShellu, abyste mohli provádět všechny úlohy správy databáze SQL v rámci služby. Tyto rutiny můžete také spárovat ve službě Azure Automation s rutinami jiných služeb Azure za účelem automatizace složitých úloh napříč službami Azure a napříč systémy třetích stran.

Azure Automation může také vydávat příkazy T-SQL (Transact SQL) na sql servery pomocí PowerShellu.

Pokud chcete spouštět příkazy pro databázi, musíte udělat toto:

  • Ujistěte se, že účet Automation má spravovanou identitu přiřazenou systémem.
  • Zadejte příslušná oprávnění ke spravované identitě Automation.
  • Nakonfigurujte SQL Server tak, aby využíval ověřování Microsoft Entra.
  • Vytvořte uživatele na SQL Serveru, který se mapuje na spravovanou identitu účtu Automation.
  • Vytvořte runbook pro připojení a spuštění příkazů.
  • (Volitelné) Pokud je SQL server chráněný bránou firewall, vytvořte hybrid Runbook Worker (HRW), nainstalujte na tento server moduly SQL a přidejte IP adresu HRW do seznamu povolených v bráně firewall.

Připojení do databáze Azure SQL pomocí spravované identity přiřazené systémem

Pokud chcete povolit přístup ze spravované identity systému Automation k databázi Azure SQL, postupujte takto:

  1. Pokud je spravovaná identita systému Automation vypnutá, postupujte takto:

    1. Přihlaste se k portálu Azure.

    2. Přejděte do svého účtu služby Automation.

    3. Na stránce účtu Automation v části Účet Nastavení vyberte Identita.

    4. Na kartě Přiřazený systém vyberte Stav jako ZAPNUTO.

      Screenshot of setting the status to ON for System assigned managed identity.

  2. Jakmile je spravovaná identita systému zapnutá, musíte pomocí následujícího postupu zadat požadovaný přístup k účtu:

    1. V účtu Automation | Stránka Identita, karta Přiřazená systémem v části Oprávnění, vyberte přiřazení rolí Azure.
    2. Na stránce Přiřazení rolí Azure vyberte +Přidat přiřazení role (Preview).
    3. V části Přidat přiřazení role (Preview) vyberte obor jako SQL, vyberte předplatné, prostředek z rozevíracího seznamu a roli podle minimálních požadovaných oprávnění a pak vyberte Uložit.

    Screenshot of adding role assignment when the system assigned managed identity's status is set to ON.

  3. Pomocí následujícího postupu nakonfigurujte SQL Server pro ověřování active directory:

    1. Přejděte na domovskou stránku webu Azure Portal a vyberte SERVERY SQL.
    2. Na stránce SQL Serveru v části Nastavení vyberte ID Microsoft Entra.
    3. Vyberte Nastavit správce a nakonfigurujte SQL Server pro ověřování AD.
  4. Přidejte ověřování na straně SQL pomocí následujícího postupu:

    1. Přejděte na domovskou stránku webu Azure Portal a vyberte SERVERY SQL.
    2. Na stránce SQL Serveru v části Nastavení vyberte databáze SQL.
    3. Výběrem databáze přejděte na stránku databáze SQL a vyberte Editor dotazů (Preview) a spusťte následující dva dotazy:
      • CREATE USER "AutomationAccount" OD EXTERNÍHO POSKYTOVATELE S OBJECT_ID= ObjectID
      • EXEC sp_addrolemember db_owner, "AutomationAccount"
        • Účet Automation – nahrazení názvem vašeho účtu Automation
        • ID objektu – nahraďte ID objektu (objektu zabezpečení) pro objekt zabezpečení spravované systémem z kroku 1.

Ukázkový kód

Připojení na 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' 

Kontrola oprávnění účtu na straně SQL

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] 

Poznámka:

Pokud sql server běží za bránou firewall, musíte runbook Azure Automation spustit na počítači ve vlastní síti. Ujistěte se, že tento počítač nakonfigurujete jako hybrid Runbook Worker tak, aby brána firewall neblokovala IP adresu nebo síť. Další informace o tom, jak nakonfigurovat počítač jako Hybrid Worker, najdete v tématu vytvoření hybrid workeru.

Použití funkce Hybrid Worker

Pokud používáte Hybrid Worker, musí být moduly, které runbook používá, nainstalované místně z příkazového řádku PowerShellu se zvýšenými oprávněními. Například - Install-module Az.Accounts and Install-module SqlServer. Pokud chcete najít požadované názvy modulů, spusťte v každé rutině příkaz a pak zkontrolujte zdroj. Pokud například chcete zkontrolovat název modulu pro rutinu Connect-AzAccounts , která je součástí modulu Az.Account, spusťte příkaz: get-command Connect-AzAccount

Poznámka:

Doporučujeme přidat následující kód do horní části libovolného runbooku, který má běžet v hybrid workeru: if ($($env:computerName) -eq "CLIENT") {"Runbook running on Azure CLIENT"} else {"Runbook running on " + $env:computerName} Tento kód umožňuje zobrazit uzel, na kterém běží, a v případě, že jste ho omylem spustili v cloudu Azure místo hybrid workeru, pomůže určit důvod, proč runbook nefunguje.

Další kroky