Use o Microsoft Entra ID para autenticação com o MySQL
APLICA-SE A: Banco de Dados do Azure para MySQL - Servidor Único
Importante
O servidor único do Banco de Dados do Azure para MySQL está no caminho de desativação. É altamente recomendável que você atualize para o Banco de Dados do Azure para o servidor flexível MySQL. Para obter mais informações sobre como migrar para o Banco de Dados do Azure para servidor flexível MySQL, consulte O que está acontecendo com o Banco de Dados do Azure para Servidor Único MySQL?
Este artigo irá guiá-lo pelas etapas de como configurar o acesso ao Microsoft Entra ID com o Banco de Dados do Azure para MySQL e como se conectar usando um token do Microsoft Entra.
Importante
A autenticação Microsoft Entra só está disponível para o MySQL 5.7 e versões mais recentes.
Definindo o usuário administrador do Microsoft Entra
Somente um usuário administrador do Microsoft Entra pode criar/habilitar usuários para autenticação baseada em ID do Microsoft Entra. Para criar um usuário Microsoft Entra Admin, siga as seguintes etapas
- No portal do Azure, selecione a instância do Banco de Dados do Azure para MySQL que você deseja habilitar para o Microsoft Entra ID.
- Em Configurações, selecione Administrador do Ative Directory.
- Selecione um usuário válido do Microsoft Entra no locatário do cliente para ser administrador do Microsoft Entra.
Importante
Ao definir o administrador, um novo usuário é adicionado ao Banco de Dados do Azure para servidor MySQL com permissões de administrador completas.
Apenas um administrador do Microsoft Entra pode ser criado por servidor MySQL e a seleção de outro substituirá o administrador existente do Microsoft Entra configurado para o servidor.
Depois de configurar o administrador, agora você pode entrar:
Conectando-se ao Banco de Dados do Azure para MySQL usando a ID do Microsoft Entra
Nós projetamos a integração do Microsoft Entra para trabalhar com ferramentas comuns do MySQL, como a CLI do mysql, que não são compatíveis com o Microsoft Entra e suportam apenas a especificação de nome de usuário e senha ao se conectar ao MySQL. Passamos o token Microsoft Entra como senha.
Atualmente, testamos os seguintes clientes:
- MySQLWorkbench
- CLI do MySQL
Nós também testamos os drivers de aplicativos mais comuns, você pode ver detalhes no final desta página.
Estas são as etapas que um usuário/aplicativo precisará fazer para autenticar com o Microsoft Entra ID descritas abaixo:
Pré-requisitos
Você pode acompanhar no Azure Cloud Shell, em uma VM do Azure ou em sua máquina local. Verifique se você tem a CLI do Azure instalada.
Etapa 1: Autenticar com o ID do Microsoft Entra
Comece autenticando com a ID do Microsoft Entra usando a ferramenta CLI do Azure. Esta etapa não é necessária no Azure Cloud Shell.
az login
O comando iniciará uma janela do navegador para a página de autenticação do Microsoft Entra. Ele requer que você forneça seu ID de usuário do Microsoft Entra e a senha.
Etapa 2: Recuperar o token de acesso do Microsoft Entra
Invoque a ferramenta CLI do Azure para adquirir um token de acesso para o usuário autenticado do Microsoft Entra da etapa 1 para acessar o 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 mostrado. Para outras nuvens, o valor do recurso pode ser pesquisado usando:
az cloud show
Para a CLI do Azure versão 2.0.71 e posterior, 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 Base 64 que codifica todas as informações sobre o usuário autenticado e que é direcionada para o Banco de Dados do Azure para o serviço MySQL.
A validade do token de acesso varia entre 5 minutos e 60 minutos. Recomendamos que você obtenha o token de acesso antes de iniciar o logon no Banco de Dados do Azure para MySQL. Você pode usar o seguinte comando do PowerShell para ver a validade do token.
$accessToken.ExpiresOn.DateTime
Passo 3: Use o token como senha para fazer login com o MySQL
Ao se conectar, você precisa usar o token de acesso como a senha de usuário do MySQL. Ao usar clientes GUI como MySQLWorkbench, você pode usar o método descrito acima para recuperar o token.
Usando a CLI do MySQL
Ao usar a CLI, você pode usar esta abreviatura para conectar:
Exemplo (Linux/macOS):
mysql -h mydb.mysql.database.azure.com \
--user user@tenant.onmicrosoft.com@mydb \
--enable-cleartext-plugin \
--password=`az account get-access-token --resource-type oss-rdbms --output tsv --query accessToken`
Usando o MySQL Workbench
- Inicie o MySQL Workbench e clique na opção Banco de dados e, em seguida, clique em "Conectar ao banco de dados"
- No campo hostname, digite o MySQL FQDN, por exemplo. mydb.mysql.database.azure.com
- No campo username, digite o nome do administrador do MySQL Microsoft Entra e anexe-o com o nome do servidor MySQL, não o FQDN, por exemplo user@tenant.onmicrosoft.com, @mydb
- No campo de senha, clique em "Armazenar no cofre" e cole no token de acesso do arquivo, por exemplo, C:\temp\MySQLAccessToken.txt
- Clique na guia avançada e verifique "Ativar plug-in de autenticação de texto não criptografado"
- Clique em OK para conectar-se ao banco de dados
Considerações importantes ao conectar:
user@tenant.onmicrosoft.com
é o nome do usuário ou grupo do Microsoft Entra que você está tentando se conectar como- Sempre anexe o nome do servidor após o nome de usuário/grupo do Microsoft Entra (por exemplo)
@mydb
- Certifique-se de usar a maneira exata como o nome de usuário ou grupo do Microsoft Entra está escrito
- Os nomes de usuário e grupo do Microsoft Entra diferenciam maiúsculas de minúsculas
- Ao conectar-se como um grupo, use apenas o nome do grupo (por exemplo,
GroupName@mydb
) - Se o nome contiver espaços, use
\
antes de cada espaço para escapar dele
Observe a configuração "enable-cleartext-plugin" – você precisa usar uma configuração semelhante com outros clientes para garantir que o token seja enviado para o servidor sem ser colocado em hash.
Agora você está autenticado no seu servidor MySQL usando a autenticação Microsoft Entra.
Criando usuários do Microsoft Entra no Banco de Dados do Azure para MySQL
Para adicionar um usuário do Microsoft Entra ao seu banco de dados do Azure para MySQL, execute as seguintes etapas após a conexão (consulte a seção posterior sobre como se conectar):
- Primeiro, verifique se o usuário
<user>@yourtenant.onmicrosoft.com
do Microsoft Entra é um usuário válido no locatário do Microsoft Entra. - Entre em seu Banco de Dados do Azure para instância do MySQL como o usuário Microsoft Entra Admin.
- Crie usuário
<user>@yourtenant.onmicrosoft.com
no Banco de Dados do Azure para MySQL.
Exemplo:
CREATE AADUSER 'user1@yourtenant.onmicrosoft.com';
Para nomes de usuário que excedam 32 caracteres, é recomendável usar um alias para ser usado ao conectar:
Exemplo:
CREATE AADUSER 'userWithLongName@yourtenant.onmicrosoft.com' as 'userDefinedShortName';
Nota
- O MySQL ignora espaços à esquerda e à direita, portanto, o nome de usuário não deve ter espaços à esquerda ou à direita.
- Autenticar um usuário por meio do Microsoft Entra ID não dá ao usuário nenhuma permissão para acessar objetos dentro do Banco de Dados do Azure para banco de dados MySQL. Você deve conceder ao usuário as permissões necessárias manualmente.
Criando grupos do Microsoft Entra no Banco de Dados do Azure para MySQL
Para habilitar um grupo do Microsoft Entra para acessar seu banco de dados, use o mesmo mecanismo que para usuários, mas especifique o nome do grupo:
Exemplo:
CREATE AADUSER 'Prod_DB_Readonly';
Ao fazer login, os membros do grupo usarão seus tokens de acesso pessoais, mas assinarão com o nome do grupo especificado como nome de usuário.
Validação de Token
A autenticação do Microsoft Entra no Banco de Dados do Azure para MySQL garante que o usuário exista no servidor MySQL e verifica a validade do token validando o conteúdo do token. As seguintes etapas de validação de token são executadas:
- O token é assinado pelo ID do Microsoft Entra e não foi adulterado
- O token foi emitido pelo ID do Microsoft Entra para o locatário associado ao servidor
- O token não expirou
- O token é para o recurso Banco de Dados do Azure para MySQL (e não para outro recurso do Azure)
Compatibilidade com drivers de aplicativos
A maioria dos drivers são suportados, no entanto, certifique-se de usar as configurações para enviar a senha em texto não criptografado, para que o token seja enviado sem modificação.
- C/C++
- libmysqlclient: Suportado
- mysql-connector-c++: Suportado
- Java
- Connector/J (mysql-connector-java): Suportado, deve utilizar
useSSL
a configuração
- Connector/J (mysql-connector-java): Suportado, deve utilizar
- Píton
- Connector/Python: Suportado
- Rubi
- mysql2: Suportado
- .NET
- mysql-connector-net: Suportado, precisa adicionar plugin para mysql_clear_password
- mysql-net/MySqlConnector: Suportado
- Node.js
- mysqljs: Não suportado (não envia token em texto não criptografado sem patch)
- node-mysql2: Suportado
- Perl
- DBD::mysql: Suportado
- Net::MySQL: Não suportado
- Ir
- go-sql-driver: suportado, adicionar
?tls=true&allowCleartextPasswords=true
à cadeia de conexão
- go-sql-driver: suportado, adicionar
Próximos passos
- Analise os conceitos gerais da autenticação do Microsoft Entra com o Banco de Dados do Azure para MySQL