Partilhar via


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 orientará você 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

  1. 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.
  2. Em Configurações, selecione Administrador do Ative Directory:

set Microsoft Entra administrator

  1. 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

O diagrama de alto nível a seguir resume o fluxo de trabalho do uso da autenticação do Microsoft Entra com o Banco de Dados do Azure para MySQL:

authentication flow

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. Nós passamos o token Microsoft Entra como a senha como mostrado na imagem acima.

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 o 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 se conectar 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 acrescente 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):

  1. Primeiro, verifique se o usuário do Microsoft Entra é um usuário <user>@yourtenant.onmicrosoft.com válido no locatário do Microsoft Entra.
  2. Entre em seu Banco de Dados do Azure para instância do MySQL como o usuário Microsoft Entra Admin.
  3. Crie um 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

  1. O MySQL ignora espaços à esquerda e à direita, portanto, o nome de usuário não deve ter espaços à esquerda ou à direita.
  2. A autenticação de um usuário por meio da ID do Microsoft Entra não dá ao usuário nenhuma permissão para acessar objetos dentro do Banco de Dados do Azure para o 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 Microsoft Entra ID 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
  • Píton
    • Connector/Python: Suportado
  • Rubi
    • mysql2: Suportado
  • .NET
    • mysql-connector-net: Suportado, precisa adicionar plugin para mysql_clear_password
    • mysql-net/MySqlConnector: Suportado
  • Nó.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

Próximos passos