Dela via


Hantera databaser i Azure SQL-databas med hjälp av Azure Automation

I den här artikeln beskrivs hur du ansluter och hanterar databaser i Azure SQL Database med hjälp av Azure Automations systemtilldelade hanterade identitet. Med Azure Automation kan du hantera databaser i Azure SQL Database med hjälp av de senaste Az PowerShell-cmdletarna som är tillgängliga i Azure Az PowerShell.

Azure Automation har dessa Azure Az PowerShell-cmdletar tillgängliga direkt, så att du kan utföra alla SQL-databashanteringsuppgifter i tjänsten. Du kan också para ihop dessa cmdletar i Azure Automation med cmdletarna för andra Azure-tjänster för att automatisera komplexa uppgifter i Azure-tjänster och i system från tredje part.

Azure Automation kan också utfärda T-SQL-kommandon (Transact SQL) mot SQL-servrarna med hjälp av PowerShell.

Om du vill köra kommandona mot databasen måste du göra följande:

  • Kontrollera att Automation-kontot har en systemtilldelad hanterad identitet.
  • Ange lämpliga behörigheter för den automationshanterade identiteten.
  • Konfigurera SQL-servern så att den använder Microsoft Entra-autentisering.
  • Skapa en användare på SQL-servern som mappar till automationskontots hanterade identitet.
  • Skapa en runbook för att ansluta och köra kommandona.
  • (Valfritt) Om SQL-servern skyddas av en brandvägg skapar du en Hybrid Runbook Worker (HRW), installerar SQL-modulerna på servern och lägger till HRW IP-adressen i listan över tillåtna i brandväggen.

Ansluta till Azure SQL-databas med hjälp av systemtilldelad hanterad identitet

Följ dessa steg för att tillåta åtkomst från automationssystemets hanterade identitet till Azure SQL-databasen:

  1. Om automationssystemets hanterade identitet är AV gör du följande:

    1. Logga in på Azure-portalen.

    2. Gå till ditt Automation-konto.

    3. På sidan Automation-konto går du till Kontoinställningar och väljer Identitet.

    4. Under fliken Systemtilldelat väljer du Status som .

      Skärmbild som visar statusen PÅ för Systemtilldelad hanterad identitet.

  2. När den systemhanterade identiteten är måste du ange den åtkomst som krävs för kontot med hjälp av följande steg:

    1. I Automation-kontot | Identitetssidan, fliken Systemtilldelad, under behörigheter väljer du Azure-rolltilldelningar.
    2. På sidan Azure-rolltilldelningar väljer du +Lägg till rolltilldelning (förhandsversion).
    3. I lägg till rolltilldelning (förhandsversion) väljer du Omfång som SQL, väljer Prenumeration, Resurs i listrutan och Roll enligt minsta behörighet som krävs och väljer sedan Spara.

    Skärmbild av att lägga till rolltilldelning när den systemtilldelade hanterade identitetens status är inställd på PÅ.

  3. Konfigurera SQL-servern för Active Directory-autentisering med hjälp av följande steg:

    1. Gå till Azure Portal startsida och välj SQL-servrar.
    2. På sidan SQL-server går du till Inställningar och väljer Microsoft Entra-ID.
    3. Välj Ange administratör för att konfigurera SQL Server för AD-autentisering.
  4. Lägg till autentisering på SQL-sidan med hjälp av följande steg:

    1. Gå till Azure Portal startsida och välj SQL-servrar.
    2. På sidan SQL-server går du till Inställningar och väljer SQL-databaser.
    3. Välj din databas för att gå till SQL-databassidan och välj Frågeredigeraren (förhandsversion) och kör följande två frågor:
      # 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"
      

Exempelkod

Anslutning till 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' 

Kontrollera kontobehörigheter på SQL-sidan

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] 

Kommentar

När en SQL-server körs bakom en brandvägg måste du köra Azure Automation-runbooken på en dator i ditt eget nätverk. Se till att du konfigurerar den här datorn som en Hybrid Runbook Worker så att IP-adressen eller nätverket inte blockeras av brandväggen. Mer information om hur du konfigurerar en dator som hybridarbetare finns i skapa en hybridarbetare.

Använda Hybrid Worker

När du använder en Hybrid Worker måste de moduler som din runbook använder installeras lokalt från en upphöjd PowerShell-prompt. Exempel: - Install-module Az.Accounts and Install-module SqlServer Om du vill hitta de nödvändiga modulnamnen kör du ett kommando på varje cmdlet och kontrollerar sedan källan. Om du till exempel vill kontrollera modulnamnet för cmdleten Connect-AzAccounts som ingår i az.account-modulen kör du kommandot: get-command Connect-AzAccount

Kommentar

Vi rekommenderar att du lägger till följande kod överst i en runbook som är avsedd att köras på en Hybrid Worker: if ($($env:computerName) -eq "CLIENT") {"Runbook running on Azure CLIENT"} else {"Runbook running on " + $env:computerName}. Med koden kan du se noden som den körs på och om du av misstag kör den i Azure-molnet i stället för Hybrid Worker hjälper den till att fastställa orsaken till att en runbook inte fungerade.

Nästa steg