Udostępnij za pośrednictwem


Zarządzanie bazami danych w usłudze Azure SQL Database przy użyciu usługi Azure Automation

W tym artykule opisano procedurę łączenia baz danych w bazie danych Azure SQL Database i zarządzania nimi przy użyciu przypisanej przez system tożsamości zarządzanej usługi Azure Automation. Usługa Azure Automation umożliwia zarządzanie bazami danych w usłudze Azure SQL Database przy użyciu najnowszych poleceń cmdlet programu PowerShell Az dostępnych w programie Azure Az PowerShell.

Usługa Azure Automation udostępnia gotowe polecenia cmdlet programu Azure Az programu PowerShell, dzięki czemu można wykonywać wszystkie zadania zarządzania bazami danych SQL w usłudze. Te polecenia cmdlet można również sparować w usłudze Azure Automation za pomocą poleceń cmdlet innych usług platformy Azure, aby zautomatyzować złożone zadania w usługach platformy Azure i w systemach innych firm.

Usługa Azure Automation może również wydać polecenia języka T-SQL (Transact SQL) względem serwerów SQL przy użyciu programu PowerShell.

Aby uruchomić polecenia względem bazy danych, należy wykonać następujące czynności:

  • Upewnij się, że konto usługi Automation ma tożsamość zarządzaną przypisaną przez system.
  • Podaj odpowiednie uprawnienia do tożsamości zarządzanej usługi Automation.
  • Skonfiguruj serwer SQL w celu korzystania z uwierzytelniania firmy Microsoft Entra.
  • Utwórz użytkownika na serwerze SQL, który mapuje na tożsamość zarządzaną konta usługi Automation.
  • Utwórz element Runbook, aby nawiązać połączenie i wykonać polecenia.
  • (Opcjonalnie) Jeśli serwer SQL jest chroniony przez zaporę, utwórz hybrydowy proces roboczy elementu Runbook (HRW), zainstaluj moduły SQL na tym serwerze i dodaj adres IP HRW do listy dozwolonych na zaporze.

Nawiązywanie połączenia z bazą danych Azure SQL Database przy użyciu przypisanej przez system tożsamości zarządzanej

Aby zezwolić na dostęp z tożsamości zarządzanej przez system usługi Automation do bazy danych Azure SQL Database, wykonaj następujące kroki:

  1. Jeśli tożsamość zarządzana systemu automatyzacji jest wyłączona, wykonaj następujące czynności:

    1. Zaloguj się w witrynie Azure Portal.

    2. Przejdź do konta usługi Automation.

    3. Na stronie Konto usługi Automation w obszarze Ustawienia konta wybierz pozycję Tożsamość.

    4. Na karcie Przypisane przez system wybierz pozycję Stan jako .

      Zrzut ekranu przedstawiający ustawienie stanu WŁĄCZONE dla tożsamości zarządzanej przypisanej przez system.

  2. Gdy tożsamość zarządzana systemu jest włączona, musisz podać konto wymaganego dostępu, wykonując następujące kroki:

    1. Na koncie usługi Automation | Strona tożsamości , karta Przypisano system w obszarze uprawnienia wybierz pozycję Przypisania ról platformy Azure.
    2. Na stronie Przypisania ról platformy Azure wybierz pozycję +Dodaj przypisanie roli (wersja zapoznawcza).
    3. W obszarze Dodawanie przypisania roli (wersja zapoznawcza) wybierz pozycję Zakres jako SQL, wybierz pozycję Subskrypcja, Zasób z listy rozwijanej i Rola zgodnie z minimalnymi wymaganymi uprawnieniami, a następnie wybierz pozycję Zapisz.

    Zrzut ekranu przedstawiający dodawanie przypisania roli, gdy stan tożsamości zarządzanej przypisanej przez system ma wartość WŁĄCZONE.

  3. Skonfiguruj serwer SQL na potrzeby uwierzytelniania usługi Active Directory, wykonując następujące kroki:

    1. Przejdź do strony głównej witryny Azure Portal i wybierz pozycję Serwery SQL.
    2. Na stronie serwera SQL w obszarze Ustawienia wybierz pozycję Microsoft Entra ID.
    3. Wybierz pozycję Ustaw administratora , aby skonfigurować serwer SQL na potrzeby uwierzytelniania w usłudze AD.
  4. Dodaj uwierzytelnianie po stronie bazy danych SQL, wykonując następujące kroki:

    1. Przejdź do strony głównej witryny Azure Portal i wybierz pozycję Serwery SQL.
    2. Na stronie serwera SQL w obszarze Ustawienia wybierz pozycję Bazy danych SQL.
    3. Wybierz bazę danych, aby przejść do strony bazy danych SQL, a następnie wybierz pozycję Edytor zapytań (wersja zapoznawcza) i wykonaj następujące dwa zapytania:
      # 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"
      

Przykładowy kod

Połączenie z programem 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' 

Sprawdzanie uprawnień konta po stronie bazy danych 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] 

Uwaga

Gdy serwer SQL działa za zaporą, należy uruchomić element Runbook usługi Azure Automation na maszynie w własnej sieci. Upewnij się, że ta maszyna jest skonfigurowana jako hybrydowy proces roboczy elementu Runbook, aby adres IP lub sieć nie były blokowane przez zaporę. Aby uzyskać więcej informacji na temat konfigurowania maszyny jako hybrydowego procesu roboczego, zobacz tworzenie hybrydowego procesu roboczego.

Korzystanie z hybrydowego procesu roboczego

W przypadku korzystania z hybrydowego procesu roboczego moduły używane przez element Runbook muszą być instalowane lokalnie z poziomu wiersza polecenia programu PowerShell z podwyższonym poziomem uprawnień. Na przykład - Install-module Az.Accounts and Install-module SqlServer. Aby znaleźć wymagane nazwy modułów, uruchom polecenie w każdym poleceniu cmdlet, a następnie sprawdź źródło. Aby na przykład sprawdzić nazwę modułu dla polecenia cmdlet Connect-AzAccounts będącego częścią modułu Az.Account, uruchom polecenie: get-command Connect-AzAccount

Uwaga

Zalecamy dodanie następującego kodu w górnej części dowolnego elementu Runbook, który ma być uruchamiany w hybrydowym procesie roboczym: if ($($env:computerName) -eq "CLIENT") {"Runbook running on Azure CLIENT"} else {"Runbook running on " + $env:computerName}. Kod umożliwia wyświetlenie węzła, w którym jest uruchomiony, i w przypadku przypadkowego uruchomienia go w chmurze platformy Azure zamiast hybrydowego procesu roboczego, pomaga określić przyczynę, dla której element Runbook nie zadziałał.

Następne kroki