Настройка проверки подлинности Microsoft Entra для База данных Azure для MySQL — гибкий сервер

ОБЛАСТЬ ПРИМЕНЕНИЯ: База данных Azure для MySQL — гибкий сервер

В этом руководстве показано, как настроить проверку подлинности Microsoft Entra для База данных Azure для MySQL гибкого сервера.

В этом руководстве описано следующее:

  • Настройте администратора Microsoft Entra.
  • Подключитесь к гибкому серверу База данных Azure для MySQL с помощью идентификатора Microsoft Entra.

Необходимые компоненты

Настройка администратора Microsoft Entra

Чтобы создать пользователя администратора Microsoft Entra, выполните следующие действия.

  • В портал Azure выберите экземпляр гибкого сервера База данных Azure для MySQL, который требуется включить для идентификатора Microsoft Entra.

  • В области "Безопасность" выберите "Проверка подлинности": Схема настройки проверки подлинности Microsoft Entra.

  • Существует три типа проверки подлинности:

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

    • Только проверка подлинности Microsoft Entra— разрешает проверку подлинности только с помощью учетной записи Microsoft Entra. Отключает проверку подлинности mysql_native_password и включает параметр сервера aad_auth_only

    • Проверка подлинности MySQL и Microsoft Entra — разрешает проверку подлинности с помощью собственного пароля MySQL или учетной записи Microsoft Entra. Отключение параметра сервера aad_auth_only

  • Выберите удостоверение — выбрать или добавить назначаемое пользователем управляемое удостоверение . Следующие разрешения необходимы для чтения UMI из Microsoft Graph в качестве удостоверения сервера. Кроме того, предоставьте управляемому удостоверению , назначенному пользователем, роль читателя каталогов .

    • User.Read.All: разрешает доступ к сведениям пользователя Microsoft Entra.
    • GroupMember.Read.All: разрешает доступ к данным группы Microsoft Entra.
    • Application.Read.ALL: разрешает доступ к сведениям субъекта-службы (приложения) Microsoft Entra.

Внимание

Только пользователь с по крайней мере ролью администратора привилегированных ролей может предоставить эти разрешения.

  • Выберите допустимого пользователя Microsoft Entra или группу Microsoft Entra в клиенте клиента, чтобы быть администратором Microsoft Entra. После включения поддержки проверки подлинности Microsoft Entra администраторы Microsoft Entra можно добавить в качестве субъектов безопасности с разрешением добавить пользователей Microsoft Entra на сервер MySQL.

    Примечание.

    Для каждого сервера MySQL можно создать только одного администратора Microsoft Entra и выбрать другой перезапись существующего администратора Microsoft Entra, настроенного для сервера.

Предоставление разрешений управляемому удостоверению, назначенному пользователем

В следующем примере скрипта PowerShell предоставляются необходимые разрешения для UMI. В этом примере назначаются разрешения для UMI umiservertest.

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

Скрипт предоставляет User.Read.AllGroupMember.Read.Allразрешения и Application.Read.ALL разрешения UMI для доступа к Microsoft Graph.

# Script to assign permissions to the UMI "umiservertest"

import-module AzureAD
$tenantId = '<tenantId>' # Your Azure AD tenant ID

Connect-AzureAD -TenantID $tenantId
# Log in as a user with a "Global Administrator" or "Privileged Role Administrator" role
# Script to assign permissions to an existing UMI 
# The following Microsoft Graph permissions are required: 
#   User.Read.All
#   GroupMember.Read.All
#   Application.Read.ALL

# Search for Microsoft Graph
$AAD_SP = Get-AzureADServicePrincipal -SearchString "Microsoft Graph";
$AAD_SP
# Use Microsoft Graph; in this example, this is the first element $AAD_SP[0]

#Output

#ObjectId                             AppId                                DisplayName
#--------                             -----                                -----------
#47d73278-e43c-4cc2-a606-c500b66883ef 00000003-0000-0000-c000-000000000000 Microsoft Graph
#44e2d3f6-97c3-4bc7-9ccd-e26746638b6d 0bf30f3b-4a52-48df-9a82-234910c4a086 Microsoft Graph #Change 

$MSIName = "<managedIdentity>";  # Name of your user-assigned
$MSI = Get-AzureADServicePrincipal -SearchString $MSIName 
if($MSI.Count -gt 1)
{ 
Write-Output "More than 1 principal found, please find your principal and copy the right object ID. Now use the syntax $MSI = Get-AzureADServicePrincipal -ObjectId <your_object_id>"

# Choose the right UMI

Exit
} 

# If you have more UMIs with similar names, you have to use the proper $MSI[ ]array number

# Assign the app roles

$AAD_AppRole = $AAD_SP.AppRoles | Where-Object {$_.Value -eq "User.Read.All"}
New-AzureADServiceAppRoleAssignment -ObjectId $MSI.ObjectId -PrincipalId $MSI.ObjectId -ResourceId $AAD_SP.ObjectId -Id $AAD_AppRole.Id 
$AAD_AppRole = $AAD_SP.AppRoles | Where-Object {$_.Value -eq "GroupMember.Read.All"}
New-AzureADServiceAppRoleAssignment -ObjectId $MSI.ObjectId -PrincipalId $MSI.ObjectId -ResourceId $AAD_SP.ObjectId -Id $AAD_AppRole.Id
$AAD_AppRole = $AAD_SP.AppRoles | Where-Object {$_.Value -eq "Application.Read.All"}
New-AzureADServiceAppRoleAssignment -ObjectId $MSI.ObjectId -PrincipalId $MSI.ObjectId -ResourceId $AAD_SP.ObjectId -Id $AAD_AppRole.Id

В последних шагах скрипта, если у вас есть больше UMIs с похожими именами, необходимо использовать соответствующее $MSI[ ]array число. Например, $AAD_SP.ObjectId[0].

Проверка разрешений на управляемое удостоверение, назначаемое пользователем

Чтобы проверить разрешения для UMI, перейдите на портал Azure. В ресурсе Идентификатора Microsoft Entra перейдите в корпоративные приложения. Выберите все приложения для типа приложения и найдите созданный UMI.

Выберите UMI и перейдите к параметрам Разрешения в разделе Безопасность.

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

Подключение к гибкому серверу База данных Azure для MySQL с помощью идентификатора Microsoft Entra

1. Проверка подлинности с помощью идентификатора Microsoft Entra

Начните с проверки подлинности с помощью идентификатора Microsoft Entra с помощью средства Azure CLI.
(Этот шаг не требуется в Azure Cloud Shell.)

  • Войдите в учетную запись Azure с помощью команды az login . Обратите внимание на свойство ID, которое ссылается на идентификатор подписки для учетной записи Azure:

    az login
    

Команда запускает окно браузера на странице проверки подлинности Microsoft Entra. Для этого необходимо предоставить идентификатор пользователя и пароль Microsoft Entra.

  • Если у вас несколько подписок, выберите соответствующую подписку с помощью команды az account set:

    az account set --subscription \<subscription id\>
    

2. Получение маркера доступа Microsoft Entra

Вызовите средство Azure CLI, чтобы получить маркер доступа для пользователя, прошедшего проверку подлинности Microsoft Entra, с шага 1 для доступа к База данных Azure для MySQL гибкому серверу.

  • Пример (для общедоступного облака)

    az account get-access-token --resource https://ossrdbms-aad.database.windows.net
    
  • Приведенное выше значение ресурса должно быть указано точно так, как показано. Для других облаков можно найти значение ресурса, используя следующее:

    az cloud show
    
  • Для Azure CLI 2.0.71 и более поздних версий команду можно указать в следующей более удобной версии для всех облаков.

    az account get-access-token --resource-type oss-rdbms
    
  • В среде PowerShell маркер доступа можно получить с помощью следующей команды:

    $accessToken = Get-AzAccessToken -ResourceUrl https://ossrdbms-aad.database.windows.net
    $accessToken.Token | out-file C:\temp\MySQLAccessToken.txt
    

После успешной проверки подлинности идентификатор Microsoft Entra возвращает маркер доступа:

{
  "accessToken": "TOKEN",
  "expiresOn": "...",
  "subscription": "...",
  "tenant": "...",
  "tokenType": "Bearer"
}

Маркер представляет собой строку Base 64, которая кодирует все сведения о прошедшем проверку подлинности пользователя и предназначена для службы База данных Azure для MySQL.

Срок действия маркера доступа составляет от 5 до 60 минут. Прежде чем инициировать вход, рекомендуется получить маркер доступа для База данных Azure для MySQL гибкого сервера.

  • Следующая команда PowerShell позволяет проверить действительность маркера.
   $accessToken.ExpiresOn.DateTime

3. Использование маркера в качестве пароля для входа в MySQL

При подключении необходимо использовать маркер доступа в качестве пароля пользователя MySQL. Метод, описанный выше, можно использовать для получения маркера с помощью клиентов ГРАФИЧЕСКОго интерфейса, таких как MySQL Workbench.

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

При использовании интерфейса командной строки для подключения можно использовать следующее:

Пример (Linux/macOS):

mysql -h mydb.mysql.database.azure.com \
  --user user@tenant.onmicrosoft.com \
  --enable-cleartext-plugin \
  --password=`az account get-access-token --resource-type oss-rdbms --output tsv --query accessToken`

Пример (PowerShell):

mysql -h mydb.mysql.database.azure.com \
  --user user@tenant.onmicrosoft.com \
  --enable-cleartext-plugin \
  --password=$(az account get-access-token --resource-type oss-rdbms --output tsv --query accessToken)


mysql -h mydb.mysql.database.azure.com \
  --user user@tenant.onmicrosoft.com \
  --enable-cleartext-plugin \
  --password=$((Get-AzAccessToken -ResourceUrl https://ossrdbms-aad.database.windows.net).Token)

Подключение к гибкому серверу База данных Azure для MySQL с помощью MySQL Workbench

  • Запустите MySQL Workbench и выберите параметр "База данных", а затем выберите "Подключиться к базе данных".
  • В поле имени узла введите полное доменное имя MySQL, например, mysql.database.azure.com.
  • В поле имени пользователя введите имя администратора Microsoft Entra MySQL. Например, user@tenant.onmicrosoft.com.
  • В поле пароля выберите Store in Vault и вставьте маркер доступа из файла, например C:\temp\MySQLAccessToken.txt.
  • Выберите вкладку "Дополнительно" и убедитесь, что установлен подключаемый модуль проверки подлинности Cleartext.
  • Щелкните ОК, чтобы подключиться к базе данных.

Важные рекомендации при подключении

  • user@tenant.onmicrosoft.com — имя пользователя или группы Microsoft Entra, которую вы пытаетесь подключить как
  • Обязательно используйте точный способ написания имени пользователя или группы Microsoft Entra
  • Имена пользователей и групп Microsoft Entra чувствительны к регистру
  • При подключении в качестве группы используйте только имя группы (например, GroupName)
  • Если это имя содержит пробелы, экранируйте каждый пробел, добавив перед ним символ \.

Примечание.

Параметр enable-cleartext-plugin — необходимо использовать аналогичную конфигурацию с другими клиентами, чтобы убедиться, что маркер отправляется на сервер без хэширования.

Теперь вы прошли проверку подлинности на гибком сервере MySQL с помощью проверки подлинности Microsoft Entra.

Другие команды администратора Microsoft Entra

  • Управление администратором Active Directory сервера

    az mysql flexible-server ad-admin
    
  • Создание администратора Active Directory

    az mysql flexible-server ad-admin create
    

    Пример. Создание администратора Active Directory с пользователем "john@contoso.com, идентификатор администратора "0000000000-0000-0000-0000-0000000000000" и удостоверение "test-identity"

    az mysql flexible-server ad-admin create -g testgroup -s testsvr -u john@contoso.com -i 00000000-0000-0000-0000-000000000000 --identity test-identity
    
  • Удаление администратора Active Directory

    az mysql flexible-server ad-admin delete
    

    Пример. Удаление администратора Active Directory

    az mysql flexible-server ad-admin delete -g testgroup -s testsvr
    
  • Вывод списка всех администраторов Active Directory

    az mysql flexible-server ad-admin list
    

    Пример. Перечисление администраторов Active Directory

    az mysql flexible-server ad-admin list -g testgroup -s testsvr
    
  • Получение администратора Active Directory

    az mysql flexible-server ad-admin show
    

    Пример. Получение администратора Active Directory

    az mysql flexible-server ad-admin show -g testgroup -s testsvr
    
  • Дождитесь выполнения определенных условий администратором Active Directory

    az mysql flexible-server ad-admin wait
    

    Примеры:

    • Подождите, пока администратор Active Directory не будет
    az mysql flexible-server ad-admin wait -g testgroup -s testsvr --exists
    
    • Дождитесь удаления администратора Active Directory
    az mysql flexible-server ad-admin wait -g testgroup -s testsvr –deleted
    

Создание пользователей Microsoft Entra в База данных Azure для MySQL

Чтобы добавить пользователя Microsoft Entra в базу данных База данных Azure для MySQL, выполните следующие действия после подключения:

  1. Сначала убедитесь, что пользователь <user>@yourtenant.onmicrosoft.com Microsoft Entra является допустимым пользователем в клиенте Microsoft Entra.
  2. Войдите в База данных Azure для MySQL экземпляр в качестве пользователя администратора Microsoft Entra.
  3. Создайте пользователя <user>@yourtenant.onmicrosoft.com в Базе данных Azure для MySQL.

Пример:

CREATE AADUSER 'user1@yourtenant.onmicrosoft.com';

Для имен пользователей, превышающих 32 символов, рекомендуется использовать псевдоним вместо этого при подключении:

Пример:

CREATE AADUSER 'userWithLongName@yourtenant.onmicrosoft.com' as 'userDefinedShortName';

Примечание.

  1. MySQL игнорирует начальные и конечные пробелы, поэтому имя пользователя не должно иметь начальных или конечных пространств.
  2. Проверка подлинности пользователя с помощью идентификатора Microsoft Entra не дает пользователю никаких разрешений на доступ к объектам в базе данных База данных Azure для MySQL. Вы должны предоставить пользователю необходимые разрешения вручную.

Создание групп Microsoft Entra в База данных Azure для MySQL

Чтобы включить группу Microsoft Entra для доступа к базе данных, используйте точный механизм для пользователей, но вместо этого укажите имя группы:

Пример:

CREATE AADUSER 'Prod_DB_Readonly';

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

Совместимость с драйверами приложений

Большинство драйверов поддерживаются; Однако не забудьте использовать параметры для отправки пароля в виде ясного текста, поэтому маркер отправляется без изменения.

  • C/C++

    • libmysqlclient: поддерживается
    • mysql-connector-c++: поддерживается
  • Java

    • Connector/J (mysql-connector-java): поддерживается, необходимо использовать useSSL параметр
  • Python

    • Соединитель или Python: поддерживается
  • Ruby

    • mysql2: поддерживается
  • .NET

    • mysql-connector-net: поддерживается, необходимо добавить подключаемый модуль для mysql_clear_password
    • mysql-net/MySqlConnector: поддерживается
  • Node.js

    • mysqljs: не поддерживается (не отправляет маркер в ясном тексте без исправления)
    • node-mysql2: поддерживается
  • Perl

    • DBD::mysql: поддерживается
    • Net::MySQL: не поддерживается
  • Go

    • go-sql-driver: поддерживается, добавьте ?tls=true&allowCleartextPasswords=true в строка подключения
  • PHP

    • расширение mysqli: поддерживается

    • драйвер PDO_MYSQL: поддерживается

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