Configurar a autenticação do Microsoft Entra para o Banco de Dados do Azure para MySQL – Servidor Flexível
APLICA-SE A: Banco de Dados do Azure para MySQL – Servidor flexível
Este tutorial mostra como configurar a autenticação do Microsoft Entra para o servidor flexível do Banco de Dados do Azure para MySQL.
Neste tutorial, você aprenderá a:
- Configure o administrador do Microsoft Entra.
- Conecte-se ao servidor flexível do Banco de Dados do Azure para MySQL usando o Microsoft Entra ID.
Pré-requisitos
Uma conta do Azure com uma assinatura ativa.
Caso você não tenha uma assinatura do Azure, crie uma conta gratuita do Azure antes de começar.
Observação
Com uma conta gratuita do Azure, você já pode experimentar o servidor flexível do Banco de Dados do Azure para MySQL gratuitamente por 12 meses. Para obter mais informações, consulte Experimente o servidor flexível do Banco de Dados do Azure para MySQL para obter gratuitamente.
Instale ou atualize CLI do Azure para a versão mais recente. Consulte Instalar a CLI do Azure.
Configurar o administrador do Microsoft Entra
Para criar um usuário administrador do Microsoft Entra, siga as etapas a seguir.
No portal do Azure, selecione a instância do servidor flexível do Banco de Dados do Azure para MySQL que você deseja habilitar para o Microsoft Entra ID.
No painel “Segurança”, selecione Autenticação:
Existem três tipos de autenticação disponíveis:
Somente autenticação MySQL – por padrão, o MySQL usa o plug-in de autenticação mysql_native_password interno, que executa a autenticação usando o método de hash de senha nativa
Somente autenticação do Microsoft Entra – só permite a autenticação com uma conta do Microsoft Entra. Desabilita a autenticação mysql_native_password e ATIVA o parâmetro do servidor aad_auth_only
Autenticação do MySQL e do Microsoft Entra – permite a autenticação usando uma senha nativa do MySQL ou uma conta do Microsoft Entra. DESATIVA o parâmetro do servidor aad_auth_only
Selecionar Identidade – selecione/adicione a identidade gerenciada atribuída pelo usuário. As permissões a seguir são necessárias para permitir que a UMI leia o Microsoft Graph como a identidade do servidor. Como alternativa, dê à identidade gerenciada atribuída pelo usuário a função Leitores de Diretório.
- User.Read.All: permite acesso às informações de usuário do Microsoft Entra.
- GroupMember.Read.All: permite acesso às informações de grupo do Microsoft Entra.
- Application.Read.ALL: permite o acesso às informações da entidade de serviço do Microsoft Entra (aplicativos).
Importante
Somente um usuário com pelo menos a função Administrador Privilegiado pode conceder essas permissões.
Selecione um grupo ou usuário válido do Microsoft Entra no locatário do cliente para ser administrador do Microsoft Entra. Depois que o suporte à autenticação do Microsoft Entra tiver sido habilitado, os Administradores do Microsoft Entra poderão ser adicionados como entidades de segurança com permissão para adicionar usuários do Microsoft Entra ao servidor MySQL.
Observação
Somente um administrador do Microsoft Entra pode ser criado por servidor MySQL, e a seleção de um outro substitui o administrador do Microsoft Entra existente configurado para o servidor.
Conceder permissões à identidade gerenciada atribuída pelo usuário
O script de exemplo do PowerShell a seguir concede as permissões necessárias para uma UMI. Este exemplo atribui permissões à UMI umiservertest
.
Para executar o script, você deve entrar como um usuário com uma função Administrador Global ou Administrador de Funções Com Privilégios.
O script concede as permissões User.Read.All
, GroupMember.Read.All
e Application.Read.ALL
a uma UMI ou uma SMI para acessar o 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
Nas etapas finais do script, se você tiver mais UMIs com nomes semelhantes, será necessário usar o número $MSI[ ]array
adequado. Um exemplo é $AAD_SP.ObjectId[0]
.
Verificar permissões da identidade gerenciada atribuída pelo usuário
Para verificar permissões de uma UMI, acesse o portal do Azure. No recurso Microsoft Entra ID, acesse Aplicativos empresariais. Selecione Todos os Aplicativos em Tipo de aplicativo e procure a UMI que foi criada.
Selecione a UMI e acesse as configurações de Permissões em Segurança.
Depois de conceder as permissões à UMI, elas são habilitadas para todos os servidores criados com a UMI designada como uma identidade de servidor.
Conectar-se ao servidor flexível do Banco de Dados do Azure para MySQL usando o Microsoft Entra ID
1 – Autenticar-se com o Microsoft Entra ID
Comece se autenticando com o Microsoft Entra ID usando a ferramenta de CLI do Azure.
(Esta etapa não é necessária no Azure Cloud Shell.)
Entre na conta do Azure usando o comando az login. Observe a propriedade ID, que se refere à ID da assinatura da conta do Azure:
az login
O comando inicia uma janela do navegador na página de autenticação do Microsoft Entra. Ele exige que você forneça a ID de usuário e a senha do Microsoft Entra.
Se você tiver várias assinaturas, escolha a assinatura apropriada usando o comando az account set:
az account set --subscription \<subscription id\>
2 – Recuperar o token de acesso do Microsoft Entra
Invoque a ferramenta de CLI do Azure para adquirir um token de acesso para o usuário autenticado do Microsoft Entra da etapa 1 e acessar o servidor flexível do Banco de Dados do Azure para MySQL.
Exemplo (para nuvem pública):
az account get-access-token --resource https://ossrdbms-aad.database.windows.net
O valor do recurso acima deve ser especificado exatamente como o mostrado. Para outras nuvens, o valor do recurso pode ser pesquisado usando o seguinte:
az cloud show
Para a versão 2.0.71 do CLI do Azure e posteriores, o comando pode ser especificado na seguinte versão mais conveniente para todas as nuvens:
az account get-access-token --resource-type oss-rdbms
Usando o PowerShell, você pode usar o seguinte comando para adquirir o token de acesso:
$accessToken = Get-AzAccessToken -ResourceUrl https://ossrdbms-aad.database.windows.net $accessToken.Token | out-file C:\temp\MySQLAccessToken.txt
Depois que a autenticação for bem-sucedida, o Microsoft Entra ID retornará um token de acesso:
{
"accessToken": "TOKEN",
"expiresOn": "...",
"subscription": "...",
"tenant": "...",
"tokenType": "Bearer"
}
O token é uma cadeia de caracteres Base64 que codifica todas as informações sobre o usuário autenticado e tem como destino o serviço do Banco de Dados do Azure para MySQL.
A validade do token de acesso está entre 5 e 60 minutos. É recomendável obter o token de acesso antes de entrar no servidor flexível do Banco de Dados do Azure para MySQL.
- Você pode usar o comando do PowerShell a seguir para ver a validade do token.
$accessToken.ExpiresOn.DateTime
3) Usar um token como senha para entrar no MySQL
É necessário usar o token de acesso como a senha do usuário do MySQL ao se conectar. É possível usar o método descrito acima para recuperar o token por meio de clientes da GUI, como o MySQL Workbench.
Conectar-se ao Banco de Dados do Azure para MySQL ─ Servidor Flexível usando a CLI do MySQL
Com a CLI, é possível usar este atalho para se conectar:
Exemplo (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`
Exemplo (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)
Conectar-se ao Banco de Dados do Azure para MySQL ─ Servidor Flexível usando o MySQL Workbench
- Inicie o MySQL Workbench, selecione a opção “Banco de dados” e clique em Conectar ao banco de dados.
- No campo de nome do host, insira o FQDN do MySQL, por exemplo, mysql.database.azure.com.
- No campo nome de usuário, insira o nome de administrador do Microsoft Entra do MySQL. Por exemplo, user@tenant.onmicrosoft.com.
- No campo de senha, clique em Armazenar no cofre e cole o token de acesso do arquivo, por exemplo, C:\temp\MySQLAccessToken.txt.
- Clique na guia “Avançado” e marque Habilitar plug-in de autenticação de texto não criptografado.
- Selecione OK para se conectar ao banco de dados.
Considerações importantes ao conectar-se
user@tenant.onmicrosoft.com
é o nome do usuário ou do grupo do Microsoft Entra como o qual você está tentando se conectar- Certifique-se de usar o nome do usuário ou do grupo do Microsoft Entra exatamente como está escrito
- Os nomes de usuários e grupos do Microsoft Entra diferenciam maiúsculas de minúsculas
- Ao se conectar como um grupo, use somente o nome do grupo (por exemplo,
GroupName
) - Se o nome contiver espaços, use
\
antes de cada espaço para fazer o escape dele
Observação
A configuração "enable-cleartext-plugin": é preciso usar uma configuração semelhante com outros clientes para garantir que o token seja enviado ao servidor sem que haja hash.
Agora você está autenticado no servidor flexível do MySQL usando a autenticação do Microsoft Entra.
Outros comandos de administrador do Microsoft Entra
Gerenciar administrador do Active Directory do servidor
az mysql flexible-server ad-admin
Criar um administrador do Active Directory
az mysql flexible-server ad-admin create
Exemplo: Criar administrador do Active Directory com o usuário 'john@contoso.com', ID do administrador '00000000-0000-0000-0000-000000000000' e identidade '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
Excluir um administrador do Active Directory
az mysql flexible-server ad-admin delete
Exemplo: excluir administrador do Active Directory
az mysql flexible-server ad-admin delete -g testgroup -s testsvr
Listar todos os administradores do Active Directory
az mysql flexible-server ad-admin list
Exemplo: listar administradores do Active Directory
az mysql flexible-server ad-admin list -g testgroup -s testsvr
Obter um administrador do Active Directory
az mysql flexible-server ad-admin show
Exemplo: obter administrador do Active Directory
az mysql flexible-server ad-admin show -g testgroup -s testsvr
Aguardar até que o administrador do Active Directory cumpra determinadas condições
az mysql flexible-server ad-admin wait
Exemplos:
- Aguardar até que o administrador do Active Directory exista
az mysql flexible-server ad-admin wait -g testgroup -s testsvr --exists
- Aguardar até que o administrador do Active Directory seja excluído
az mysql flexible-server ad-admin wait -g testgroup -s testsvr –deleted
Criar usuários do Microsoft Entra no Banco de Dados do Azure para MySQL
Para adicionar um usuário do Microsoft Entra ao banco de dados referente a Banco de Dados do Azure para MySQL, execute as seguintes etapas após a conexão:
- Primeiro, certifique-se de que o usuário
<user>@yourtenant.onmicrosoft.com
do Microsoft Entra é um usuário válido no locatário do Microsoft Entra. - Entre na sua instância do Banco de Dados do Azure para MySQL como o usuário Administrador do Microsoft Entra.
- Criar usuário
<user>@yourtenant.onmicrosoft.com
no Banco de Dados do Azure para MySQL.
Exemplo:
CREATE AADUSER 'user1@yourtenant.onmicrosoft.com';
No caso de nomes de usuário que excedam 32 caracteres, é recomendado o uso de um alias para a conexão:
Exemplo:
CREATE AADUSER 'userWithLongName@yourtenant.onmicrosoft.com' as 'userDefinedShortName';
Observação
- O MySQL ignora espaços à esquerda e à direita, portanto, o nome do usuário não deve ter nenhum espaço.
- A autenticação de um usuário por meio do Microsoft Entra não concede ao usuário nenhuma permissão para acessar objetos dentro do banco de dados do Banco de Dados do Azure para MySQL. Você precisa conceder ao usuário as permissões necessárias manualmente.
Criar grupos do Microsoft Entra no Banco de Dados do Azure para MySQL
Para habilitar um grupo do Microsoft Entra a acessar seu banco de dados, use exatamente o mesmo mecanismo usado para os usuários, mas especifique o nome do grupo:
Exemplo:
CREATE AADUSER 'Prod_DB_Readonly';
Ao fazer logon, os membros do grupo usam os tokens de acesso pessoal deles, mas entram com o nome do grupo especificado como o nome de usuário.
Compatibilidade com drivers de aplicativo
A maioria dos drivers é compatível. No entanto, use as configurações adequadas para enviar a senha em texto não criptografado, a fim de que o token seja enviado sem modificação.
C/C++
- libmysqlclient: Com suporte
- mysql-connector-c++: Com suporte
Java
- Connector/J (mysql-connector-java): Compatível, é preciso utilizar a configuração
useSSL
- Connector/J (mysql-connector-java): Compatível, é preciso utilizar a configuração
Python
- Conector/Python: Com suporte
Ruby
- mysql2: Com suporte
.NET
- mysql-connector-net: Compatível, é necessário adicionar o plug-in para mysql_clear_password
- mysql-net/MySqlConnector: Com suporte
Node.js
- mysqljs: não compatível (não envia o token em texto não criptografado sem patch)
- node-mysql2: Com suporte
Perl
- DBD::mysql: Com suporte
- Net::MySQL: Sem suporte
Go
- go-sql-driver: Compatível, adicione
?tls=true&allowCleartextPasswords=true
à cadeia de conexão
- go-sql-driver: Compatível, adicione
PHP
Extensão mysqli: com suporte
Driver PDO_MYSQL: com suporte
Próximas etapas
- Analise os conceitos da autenticação do Microsoft Entra com o servidor flexível do Banco de Dados do Azure para MySQL