Compartilhar via


Usar Microsoft Entra ID para autenticação com Banco de Dados do Azure para PostgreSQL

Neste artigo, você configura o acesso ao Microsoft Entra ID para autenticação com o Azure Database for PostgreSQL. Você também aprenderá a usar um token do Microsoft Entra com uma instância do servidor flexível do Banco de Dados do Azure para PostgreSQL.

Você pode configurar a autenticação do Microsoft Entra para uma instância de servidor flexível do Banco de Dados do Azure para PostgreSQL durante o provisionamento do servidor ou posteriormente. Somente usuários administradores do Microsoft Entra podem criar ou habilitar usuários para autenticação baseada no Microsoft Entra ID. Não use o administrador do Microsoft Entra para operações regulares de banco de dados porque essa função tem permissões de usuário elevadas (por exemplo, CREATEDB).

Você pode ter vários usuários administradores do Microsoft Entra com o Banco de Dados do Azure para PostgreSQL. Usuários administradores do Microsoft Entra podem ser um usuário, um grupo ou uma entidade de serviço.

Pré-requisitos

Configurar requisitos de rede

O Microsoft Entra ID é um aplicativo multilocatário. Ele precisa de conectividade de saída para operações como adicionar grupos de administradores do Microsoft Entra.

Os requisitos de rede variam de acordo com a topologia:

  • Acesso público (endereços IP permitidos): nenhuma regra de saída adicional é necessária.
  • Acesso privado (integração de rede virtual):
    • Adicione uma regra NSG de saída permitindo o tráfego apenas para a marca de serviço AzureActiveDirectory.
    • Se você usar uma tabela de rotas, adicione uma rota com destino AzureActiveDirectory e próximo salto Internet.
    • Se você usar um proxy, permita apenas o tráfego HTTPS para a tag de serviço AzureActiveDirectory.
  • DNS personalizado:
    • Certifique-se de que esses nomes de host sejam resolvidos publicamente: login.microsoftonline.com (autenticação) e graph.microsoft.com (API do Microsoft Graph).
    • Se a resolução falhar, as operações de atribuição de administrador e aquisição de token falharão.

Para definir o administrador do Microsoft Entra durante o provisionamento do servidor, siga as etapas abaixo:

  1. No portal do Azure, durante o provisionamento de servidor, selecione Autenticação do PostgreSQL e do Microsoft Entra ou Somente autenticação do Microsoft Entra como o método de autenticação.
  2. Na guia Definir administrador, selecione um usuário, grupo, entidade de serviço ou identidade gerenciada válido no locatário do cliente do Microsoft Entra para ser um administrador do Microsoft Entra.

Opcionalmente, você pode adicionar uma conta de administrador local do PostgreSQL se preferir usar o método Autenticação do PostgreSQL e do Microsoft Entra.

Observação

Você pode adicionar apenas um administrador do Microsoft Entra durante o provisionamento de servidor. Você pode adicionar vários usuários administradores do Microsoft Entra após a criação do servidor.

Para definir o administrador do Microsoft Entra após a criação do servidor, siga estas etapas:

  1. No portal do Azure, selecione a instância do servidor flexível do Banco de Dados do Azure para PostgreSQL que será habilitada para o Microsoft Entra ID.
  2. Em Segurança, selecione Autenticação. Em seguida, escolha Autenticação do PostgreSQL e do Microsoft Entra ou Somente autenticação do Microsoft Entra como o método de autenticação, de acordo com suas necessidades.
  3. Selecione Adicionar Administradores do Microsoft Entra. Em seguida, selecione um usuário, grupo, entidade de serviço ou identidade gerenciada válido no locatário do cliente do Microsoft Entra para ser um administrador do Microsoft Entra.
  4. Clique em Salvar.

Importante

Ao definir o administrador, um novo usuário é adicionado à instância de servidor flexível do Banco de Dados do Azure para PostgreSQL com permissões de administrador completas.

Conectar ao Banco de Dados do Azure para PostgreSQL usando o Microsoft Entra ID

A integração do Microsoft Entra funciona com ferramentas padrão do PostgreSQL, por exemplo, psql, que não reconhecem o Microsoft Entra e dão suporte somente à especificação de nome de usuário e senha quando você se conecta ao PostgreSQL.

Testamos os seguintes clientes:

  • Linha de comando psql: use a variável PGPASSWORD para passar o token.
  • Azure Data Studio: use a extensão do PostgreSQL.
  • Outros clientes baseados em libpq: exemplos incluem estruturas de aplicativo comuns e ORMs (mapeadores relacionais de objetos).
  • PgAdmin: limpe a opção Conectar agora durante a criação do servidor.

Autenticar-se com o Microsoft Entra ID

Use os procedimentos a seguir para autenticar com o Microsoft Entra ID como usuário de instância de servidor flexível do Azure Database for PostgreSQL.

Você pode acompanhar usando:

  • Azure Cloud Shell
  • Máquina virtual do Azure
  • Seu computador local

Entrar no Azure

Comece se autenticando no Microsoft Entra ID usando a da CLI do Azure. Essa etapa não é necessária para o Azure Cloud Shell.

az login

O comando abre 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.

Recuperar um token de acesso do Microsoft Entra

Use a CLI do Azure para obter um token de acesso para o usuário autenticado do Microsoft Entra acessar o Banco de Dados do Azure para PostgreSQL. Confira um exemplo da nuvem pública:

az account get-access-token --resource https://ossrdbms-aad.database.windows.net

O valor do recurso anterior deve ser especificado como mostrado. Em outras nuvens, você pode pesquisar o valor do recurso usando o seguinte comando:

az cloud show

Na versão 2.0.71 da CLI do Azure e posteriores, você pode especificar o comando na versão conveniente para todas as nuvens a seguir:

az account get-access-token --resource-type oss-rdbms

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. Ele codifica todas as informações sobre o usuário autenticado e é direcionado para o serviço do Banco de Dados do Azure para PostgreSQL.

Usar um token como uma senha para entrar no cliente psql

Ao se conectar, use o token de acesso como a senha de usuário do PostgreSQL.

Ao usar o cliente de linha de comando psql, você precisa passar o token de acesso pela variável de PGPASSWORD ambiente. O token de acesso é maior do que o tamanho da senha que o psql pode aceitar diretamente.

Este é um exemplo do Windows:

set PGPASSWORD=<copy/pasted TOKEN value from step 2>
$env:PGPASSWORD='<copy/pasted TOKEN value from step 2>'

Aqui está um exemplo do Linux ou macOS:

export PGPASSWORD=<copy/pasted TOKEN value from step 2>

Você também pode combinar as etapas 2 e 3 usando a substituição de comando. Você pode colocar a recuperação de token em uma variável e transmiti-la diretamente como o valor para a variável de ambiente PGPASSWORD:

export PGPASSWORD=$(az account get-access-token --resource-type oss-rdbms --query "[accessToken]" -o tsv)

Agora conecte-se ao Banco de Dados do Azure para PostgreSQL:

psql "host=mydb.postgres... user=user@tenant.onmicrosoft.com dbname=postgres sslmode=require"

Usar um token como uma senha para entrar no PgAdmin

Para se conectar usando um token do Microsoft Entra ao PgAdmin, siga estas etapas:

  1. Abra PgAdmin e selecione Registrar>Servidor.
  2. Na guia Geral , insira um nome de conexão e desmarque Conectar agora.
  3. Na guia Conexão , insira os detalhes do host. Defina o nome de usuário para seu Microsoft Entra UPN (por exemplo, user@tenant.onmicrosoft.com). Salvar.
  4. Na árvore, selecione o servidor e escolha Conectar Servidor.
  5. Quando solicitado, cole o token de acesso como a senha.

Confira algumas considerações essenciais durante a conexão:

  • user@tenant.onmicrosoft.com é o userPrincipalName do usuário do Microsoft Entra.

  • Use o nome do usuário do Azure exatamente como está escrito. Os nomes de usuário e grupo do Microsoft Entra diferenciam maiúsculas de minúsculas.

  • Se o nome contiver espaços, use uma \ (barra invertida) antes de cada espaço para escapar deles. Você pode usar a CLI do Azure para obter o usuário conectado e definir o valor da variável de ambiente PGUSER:

    export PGUSER=$(az ad signed-in-user show --query "[userPrincipalName]" -o tsv | sed 's/ /\\ /g')
    
  • A validade do token de acesso é de 5 a 60 minutos. Você deve obter o token de acesso antes de iniciar a entrada no Banco de Dados do Azure para PostgreSQL.

Você já está autenticado no servidor do Banco de dados do Azure para PostgreSQL por meio da autenticação do Microsoft Entra.

Autenticar-se com o Microsoft Entra ID como um membro de grupo

Esta seção mostra como se conectar usando um grupo do Microsoft Entra. Você deve ser um membro do grupo e o grupo deve ser criado (mapeado) no banco de dados.

Criar um principal de grupo

Crie o grupo principal (função) no banco de dados (substitua o nome de exibição, se necessário):

select * from  pgaadauth_create_principal('Prod DB Readonly', false, false).

Se a sincronização de grupo estiver desabilitada, os membros poderão entrar usando seus tokens de acesso e especificar o nome de grupo como nome de usuário.

Se a sincronização de grupo estiver habilitada (via pgaadauth.enable_group_sync parâmetro de servidor definido como "ON"), os membros deverão entrar com suas credenciais individuais da ID do Entra, mas ainda poderão entrar com o nome de grupo como o nome de usuário.

  • Os logons de grupo permanecem disponíveis por motivos de compatibilidade, mas podem ser desabilitados com: ALTER ROLE "ROLE_NAME" NOLOGIN;

  • A função de grupo não deve ser excluída para manter a sincronização.

  • A sincronização automática dos grupos ocorre a cada 30 minutos.

  • A sincronização manual pode ser disparada com: SELECT * FROM pgaadauth_sync_roles_for_group_members(); (pgaadauth.enable_group_sync o parâmetro deve ser "ON").

  • Alterações nos metadados do grupo, como o nome do grupo, não são sincronizadas

  • As alterações de associação de grupo são sincronizadas

    Observação

    Há suporte para identidades gerenciadas e entidades de serviço como membros do grupo.

Entrar no Azure

Autentique-se com o Microsoft Entra ID usando a da CLI do Azure. Essa etapa não é necessária para o Azure Cloud Shell. O usuário precisa ser membro do grupo do Microsoft Entra.

az login

Recuperar um token de acesso do Microsoft Entra

Use a CLI do Azure para obter um token de acesso para o usuário autenticado do Microsoft Entra acessar o Banco de Dados do Azure para PostgreSQL. Confira um exemplo da nuvem pública:

az account get-access-token --resource https://ossrdbms-aad.database.windows.net

Você deve especificar o valor do recurso inicial exatamente como mostrado. Em outras nuvens, você pode pesquisar o valor do recurso usando o seguinte comando:

az cloud show

Na versão 2.0.71 da CLI do Azure e posteriores, você pode especificar o comando na versão conveniente para todas as nuvens a seguir:

az account get-access-token --resource-type oss-rdbms

Depois que a autenticação for bem-sucedida, o Microsoft Entra ID retornará um token de acesso:

{
  "accessToken": "TOKEN",
  "expiresOn": "...",
  "subscription": "...",
  "tenant": "...",
  "tokenType": "Bearer"
}

Usar um token como uma senha para entrar no psql ou PgAdmin

Essas considerações são essenciais quando você está se conectando como um membro do grupo:

  • O nome do grupo precisa corresponder exatamente ao nome de exibição do grupo Microsoft Entra (diferencia maiúsculas de minúsculas).
  • Use apenas o nome do grupo, não um alias de membro.
  • Espaços de escape onde necessário (por exemplo, Prod\ DB\ Readonly).
  • A validade do token é de 5 a 60 minutos. Adquira-o pouco antes de se conectar; não armazene tokens em scripts.

Dica

Se a autenticação falhar, verifique se a função de banco de dados existe (por exemplo, com \du) e confirme a pgaadauth.enable_group_sync configuração.

Você já está autenticado no servidor do PostgreSQL por meio da autenticação do Microsoft Entra.