Share via


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 Banco de Dados do Azure para o servidor flexível MySQL.

Neste tutorial, você aprenderá a:

  • Configure o Microsoft Entra Admin.
  • Conecte-se ao Banco de Dados do Azure para servidor flexível MySQL usando o Microsoft Entra ID.

Pré-requisitos

Configurar o Microsoft Entra Admin

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 servidor flexível MySQL que você deseja habilitar para a ID do Microsoft Entra.

  • No painel “Segurança”, selecione Autenticação: Diagram of how to configure Microsoft Entra authentication.

  • 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 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 MySQL e Microsoft Entra – Permite autenticação usando uma senha nativa do MySQL ou uma conta 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ê à UMI a função de 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 Administrador global ou Administrador com função com privilégios pode conceder essas permissões.

  • Selecione um usuário válido do Microsoft Entra ou um grupo 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

    Apenas um administrador do Microsoft Entra pode ser criado por servidor MySQL e a seleção de outro substitui o administrador existente do Microsoft Entra 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 Banco de Dados do Azure para servidor flexível MySQL usando a ID do Microsoft Entra

1 - Autenticar 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 para a 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 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 o servidor flexível MySQL.

  • Exemplo (para nuvem pública):

    az account get-access-token --resource https://server-name.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://server-name.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. Recomendamos que você obtenha o token de acesso antes de iniciar a entrada no Banco de Dados do Azure para o servidor flexível 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://server-name.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, digite o nome do administrador do MySQL Microsoft Entra. 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 grupo do Microsoft Entra que você está tentando se conectar como
  • 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 em seu servidor flexível MySQL usando a autenticação Microsoft Entra.

Outros comandos de administração 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 seu banco de dados do Banco de Dados do Azure para MySQL, execute as seguintes etapas após a conexão:

  1. 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.
  2. Entre na sua instância do Banco de Dados do Azure para MySQL como o usuário Administrador do Microsoft Entra.
  3. 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

  1. O MySQL ignora espaços à esquerda e à direita, portanto, o nome do usuário não deve ter nenhum espaço.
  2. 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 para acesso ao seu banco de dados, use o mecanismo exato como para 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
  • 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

Próximas etapas

  • Analise os conceitos para autenticação do Microsoft Entra com o Banco de Dados do Azure para servidor flexível MySQL