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, irá aprender a:

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

Pré-requisitos

  • Uma conta do Azure com uma subscrição ativa.

  • Se você não tiver uma assinatura do Azure, crie uma conta gratuita do Azure antes de começar.

    Nota

    Com uma conta gratuita do Azure, agora você 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 Banco de Dados do Azure para o servidor flexível MySQL gratuitamente.

  • Instale ou atualize a CLI do Azure para a versão mais recente. Consulte Instalar a CLI do Azure.

Configurar o Microsoft Entra Admin

Para criar um usuário Microsoft Entra Admin, siga as etapas a seguir.

  • No portal do Azure, selecione a instância do Banco de Dados do Azure para servidor flexível MySQL que você deseja habilitar para o Microsoft Entra ID.

  • No painel Segurança, selecione Autenticação: Diagrama de como configurar a autenticação do Microsoft Entra.

  • Existem três tipos de autenticação disponíveis:

    • Somente autenticação do MySQL – Por padrão, o MySQL usa o plug-in de autenticação mysql_native_password integrado, que executa a autenticação usando o método de hash de senha nativo

    • 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

  • Selecione Identidade – Selecionar/Adicionar identidade gerenciada atribuída ao usuário. As permissões a seguir são necessárias para permitir que o UMI leia do 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 o acesso às informações do usuário do Microsoft Entra.
    • GroupMember.Read.All: Permite o acesso às informações do grupo Microsoft Entra.
    • Application.Read.ALL: Permite o acesso às informações da entidade de serviço (aplicativo) do Microsoft Entra.

Importante

Somente um usuário com pelo menos a função de Administrador de Função Privilegiada 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. Uma vez que o suporte à autenticação do Microsoft Entra tenha sido habilitado, os administradores do Microsoft Entra podem ser adicionados como entidades de segurança com permissão para adicionar usuários do Microsoft Entra ao servidor MySQL.

    Nota

    Apenas um administrador do Microsoft Entra pode ser criado por servidor MySQL, e selecionar outro substitui o administrador existente do Microsoft Entra configurado para o servidor.

Conceder permissões à identidade gerenciada atribuída ao usuário

O script PowerShell de exemplo a seguir concede as permissões necessárias para um UMI. Este exemplo atribui permissões ao UMI umiservertest.

Para executar o script, você deve entrar como um usuário com uma função de Administrador Global ou Administrador de Função Privilegiada.

O script concede o , e permissões a um UMI para acessar o User.Read.AllMicrosoft Graph.Application.Read.ALL GroupMember.Read.All

# 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, você tem que usar o número adequado $MSI[ ]array . Um exemplo é $AAD_SP.ObjectId[0].

Verificar permissões para identidade gerenciada atribuída pelo usuário

Para verificar as permissões de um UMI, vá para o portal do Azure. No recurso Microsoft Entra ID, vá para Aplicativos corporativos. Selecione Todos os aplicativos para o tipo de aplicativo e procure o UMI que foi criado.

Selecione o UMI e vá para 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 atribuída 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 autenticando com a ID do Microsoft Entra usando a ferramenta 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 de Assinatura da sua conta do Azure:

    az login
    

O comando inicia 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 e 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://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 o seguinte:

    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 ID do Microsoft Entra retorna 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 é direcionado para o serviço Banco de Dados do Azure para 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 a entrada no Banco de Dados do Azure para o servidor flexível MySQL.

  • Você pode usar o seguinte comando do PowerShell para ver a validade do token.
   $accessToken.ExpiresOn.DateTime

3 - Use um token como senha para fazer login com o MySQL

Você precisa usar o token de acesso como a senha de usuário do MySQL ao se conectar. Você pode usar o método descrito acima para recuperar o token usando clientes GUI, como o MySQL workbench.

Conectar-se ao Banco de Dados do Azure para servidor flexível MySQL usando a CLI do MySQL

Ao usar a CLI, você pode usar esta abreviação para 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 servidor flexível MySQL usando o MySQL Workbench

  • Inicie o MySQL Workbench e selecione a opção Banco de dados e, em seguida, selecione Conectar ao banco de dados.
  • No campo hostname, digite o FQDN do MySQL, por exemplo, mysql.database.azure.com.
  • No campo username, digite o nome do administrador do MySQL Microsoft Entra. Por exemplo, user@tenant.onmicrosoft.com.
  • No campo de senha, selecione Armazenar no Cofre e cole o token de acesso do arquivo, por exemplo, C:\temp\MySQLAccessToken.txt.
  • Selecione a guia avançada e certifique-se de marcar Ativar plug-in de autenticação de texto não criptografado.
  • Selecione 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 conectar como
  • 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)
  • Se o nome contiver espaços, use \ antes de cada espaço para escapar dele

Nota

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 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 Ative Directory do servidor

    az mysql flexible-server ad-admin
    
  • Criar um administrador do Ative Directory

    az mysql flexible-server ad-admin create
    

    Exemplo: Criar administrador do Ative Directory com o usuário '', ID dojohn@contoso.com 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 Ative Directory

    az mysql flexible-server ad-admin delete
    

    Exemplo: Excluir administrador do Ative Directory

    az mysql flexible-server ad-admin delete -g testgroup -s testsvr
    
  • Listar todos os administradores do Ative Directory

    az mysql flexible-server ad-admin list
    

    Exemplo: Listar administradores do Ative Directory

    az mysql flexible-server ad-admin list -g testgroup -s testsvr
    
  • Obter um administrador do Ative Directory

    az mysql flexible-server ad-admin show
    

    Exemplo: Obter administrador do Ative Directory

    az mysql flexible-server ad-admin show -g testgroup -s testsvr
    
  • Aguarde até que o administrador do Ative Directory satisfaça determinadas condições

    az mysql flexible-server ad-admin wait
    

    Exemplos:

    • Aguarde até que o administrador do Ative Directory exista
    az mysql flexible-server ad-admin wait -g testgroup -s testsvr --exists
    
    • Aguarde até que o administrador do Ative 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 Azure para banco de dados MySQL, execute as seguintes etapas após a conexão:

  1. Primeiro, verifique se o usuário <user>@yourtenant.onmicrosoft.com do Microsoft Entra é um usuário 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 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. 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.

Criar 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 mecanismo exato como para usuários, mas especifique o nome do grupo:

Exemplo:

CREATE AADUSER 'Prod_DB_Readonly';

Ao iniciar sessão, os membros do grupo utilizam os seus tokens de acesso pessoais, mas iniciam sessão com o nome do grupo especificado como nome de utilizador.

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
  • Python

    • Connector/Python: Suportado
  • Ruby

    • 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 o token em texto não criptografado sem patch)
    • node-mysql2: Suportado
  • Perl

    • DBD::mysql: Suportado
    • Net::MySQL: Não suportado
  • Go

    • go-sql-driver: suportado, adicionar ?tls=true&allowCleartextPasswords=true à cadeia de conexão
  • PHP

    • Extensão mysqli: Suportado

    • PDO_MYSQL driver: Suportado

Próximos passos