Управление базами данных в базе данных SQL Azure с помощью служба автоматизации Azure

В этой статье описывается процедура подключения баз данных и управления ими в базе данных SQL Azure с помощью управляемого удостоверения, назначаемого системой служба автоматизации Azure. С помощью служба автоматизации Azure можно управлять базами данных в База данных SQL Azure с помощью последних командлетов Az PowerShell, доступных в Azure Az PowerShell.

служба автоматизации Azure эти командлеты Azure Az PowerShell доступны вне поля, чтобы вы могли выполнять все задачи управления базами данных SQL в службе. Эти командлеты можно также связать в служба автоматизации Azure с командлетами других служб Azure для автоматизации сложных задач в службах Azure и в сторонних системах.

служба автоматизации Azure также могут выдавать команды T-SQL (Transact SQL) на серверах SQL с помощью PowerShell.

Чтобы выполнить команды в базе данных, выполните следующие действия:

  • Убедитесь, что у учетной записи службы автоматизации есть управляемое удостоверение, назначаемое системой.
  • Предоставьте соответствующие разрешения управляемому удостоверению службы автоматизации.
  • Настройте SQL Server для использования проверки подлинности Microsoft Entra.
  • Создайте пользователя на сервере SQL Server, который сопоставляется с управляемым удостоверением учетной записи службы автоматизации.
  • Создайте модуль Runbook для подключения и выполнения команд.
  • (Необязательно) Если сервер SQL защищен брандмауэром, создайте гибридную рабочую роль Runbook (HRW), установите модули SQL на этом сервере и добавьте IP-адрес HRW в список разрешений брандмауэра.

Подключение в базу данных SQL Azure с помощью управляемого удостоверения, назначаемого системой

Чтобы разрешить доступ из управляемого удостоверения системы автоматизации в базу данных SQL Azure, выполните следующие действия.

  1. Если управляемое удостоверение системы автоматизации имеет значение OFF, сделайте следующее:

    1. Войдите на портал Azure.

    2. Перейдите в учетную запись службы автоматизации.

    3. На странице учетной записи службы автоматизации в разделе "Учетная запись" Параметры выберите "Удостоверение".

    4. На вкладке " Назначаемая системой" выберите состояние в качестве ON.

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

  2. После включения управляемого удостоверения системы необходимо предоставить учетную запись необходимого доступа, выполнив следующие действия.

    1. В учетной записи службы автоматизации | Страница удостоверений , вкладка "Назначенная системой" в разделе разрешений выберите назначения ролей Azure.
    2. На странице назначений ролей Azure нажмите кнопку +Добавить назначение ролей (предварительная версия).
    3. В раскрывающемся списке Добавление назначения ролей (предварительная версия) выберите областькак SQL, выберите подписку, ресурс из раскрывающегося списка и роли в соответствии с минимальными необходимыми разрешениями, а затем нажмите кнопку "Сохранить".

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

  3. Настройте SQL Server для проверки подлинности Active Directory, выполнив следующие действия.

    1. Перейдите на домашнюю страницу портал Azure и выберите серверы SQL.
    2. На странице SQL Server в разделе Параметры выберите идентификатор Microsoft Entra.
    3. Выберите " Задать администратора" , чтобы настроить SQL Server для проверки подлинности AD.
  4. Добавьте проверку подлинности на стороне SQL, выполнив следующие действия:

    1. Перейдите на домашнюю страницу портал Azure и выберите серверы SQL.
    2. На странице SQL Server в разделе Параметры выберите База данных SQL.
    3. Выберите базу данных, чтобы перейти на страницу базы данных SQL и выберите редактор запросов (предварительная версия) и выполните следующие два запроса:
      • CREATE USER "AutomationAccount" FROM EXTERNAL PROVIDER WITH OBJECT_ID= ObjectID
      • EXEC sp_addrolemember db_owner, AutomationAccount
        • Учетная запись службы автоматизации— замените имя учетной записи службы автоматизации
        • Идентификатор объекта— замените идентификатором объекта (субъекта) для субъекта управляемого удостоверения системы на шаге 1.

Пример кода

Подключение ion to 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' 

Проверка разрешений учетной записи на стороне 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] 

Примечание.

При запуске СЕРВЕРА SQL Server за брандмауэром необходимо запустить модуль Runbook служба автоматизации Azure на компьютере в собственной сети. Убедитесь, что этот компьютер настроен как гибридная рабочая роль Runbook, чтобы IP-адрес или сеть не блокировались брандмауэром. Дополнительные сведения о настройке компьютера в качестве гибридной рабочей роли см. в статье о создании гибридной рабочей роли.

Использование гибридной рабочей роли

При использовании гибридной рабочей роли модули, используемые модулем Runbook, необходимо установить локально из запроса PowerShell с повышенными привилегиями. Например, - Install-module Az.Accounts and Install-module SqlServer. Чтобы найти необходимые имена модулей, выполните команду для каждого командлета, а затем проверка источник. Например, чтобы проверка имя модуля для командлетаConnect-AzAccounts, который является частью модуля Az.Account, выполните команду:get-command Connect-AzAccount

Примечание.

Рекомендуется добавить следующий код в верхней части любого модуля Runbook, который предназначен для запуска в гибридной рабочей роли: if ($($env:computerName) -eq "CLIENT") {"Runbook running on Azure CLIENT"} else {"Runbook running on " + $env:computerName} Код позволяет видеть узел, на котором он работает, и в случае случайного запуска его в облаке Azure вместо гибридной рабочей роли, а затем помогает определить причину, по которой модуль Runbook не работал.

Следующие шаги