Настройка проверки подлинности Microsoft Entra для База данных Azure для MySQL — гибкий сервер
ОБЛАСТЬ ПРИМЕНЕНИЯ: База данных Azure для MySQL — гибкий сервер
В этом руководстве показано, как настроить проверку подлинности Microsoft Entra для База данных Azure для MySQL гибкого сервера.
В этом руководстве описано следующее:
- Настройте администратора Microsoft Entra.
- Подключитесь к гибкому серверу База данных Azure для MySQL с помощью идентификатора Microsoft Entra.
Необходимые компоненты
Учетная запись Azure с активной подпиской.
Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.
Примечание.
С бесплатной учетной записью Azure теперь можно попробовать База данных Azure для MySQL гибкий сервер бесплатно в течение 12 месяцев. Дополнительные сведения см. в статье "Попробовать База данных Azure для MySQL гибкий сервер бесплатно".
Установите Azure CLI или обновите его до последней версии. Дополнительные сведения см. в статье Установка Azure CLI.
Настройка администратора Microsoft Entra
Чтобы создать пользователя администратора Microsoft Entra, выполните следующие действия.
В портал Azure выберите экземпляр гибкого сервера База данных Azure для MySQL, который требуется включить для идентификатора 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.All
GroupMember.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, выполните следующие действия после подключения:
- Сначала убедитесь, что пользователь
<user>@yourtenant.onmicrosoft.com
Microsoft Entra является допустимым пользователем в клиенте Microsoft Entra. - Войдите в База данных Azure для MySQL экземпляр в качестве пользователя администратора Microsoft Entra.
- Создайте пользователя
<user>@yourtenant.onmicrosoft.com
в Базе данных Azure для MySQL.
Пример:
CREATE AADUSER 'user1@yourtenant.onmicrosoft.com';
Для имен пользователей, превышающих 32 символов, рекомендуется использовать псевдоним вместо этого при подключении:
Пример:
CREATE AADUSER 'userWithLongName@yourtenant.onmicrosoft.com' as 'userDefinedShortName';
Примечание.
- MySQL игнорирует начальные и конечные пробелы, поэтому имя пользователя не должно иметь начальных или конечных пространств.
- Проверка подлинности пользователя с помощью идентификатора 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
параметр
- Connector/J (mysql-connector-java): поддерживается, необходимо использовать
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
в строка подключения
- go-sql-driver: поддерживается, добавьте
PHP
расширение mysqli: поддерживается
драйвер PDO_MYSQL: поддерживается
Следующие шаги
- Ознакомьтесь с основными понятиями проверки подлинности Microsoft Entra с помощью гибкого сервера База данных Azure для MySQL