Usar o Microsoft Entra ID para autenticação com o Banco de Dados do Azure para PostgreSQL - Servidor Flexível

APLICA-SE A: Banco de Dados do Azure para PostgreSQL – Servidor Flexível

Neste artigo, você vai configurar o acesso pelo Microsoft Entra ID para autenticação no servidor flexível do Banco de Dados do Azure para PostgreSQL. Você também aprenderá a usar um token do Microsoft Entra com o servidor flexível do Banco de Dados do Azure para PostgreSQL.

Você pode configurar a autenticação do Microsoft Entra no 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. Recomendamos não usar o administrador do Microsoft Entra em operações regulares de banco de dados, pois essa função tem permissões de usuário de privilégio elevado (por exemplo, CREATEDB).

Você pode ter vários usuários administradores do Microsoft Entra no servidor flexível do 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 necessita de conectividade de saída para executar determinadas operações, por exemplo, adicionar grupos de administradores do Microsoft Entra. Além disso, você precisa de regras de rede para que a conectividade do Microsoft Entra funcione, dependendo da topologia de rede:

  • Acesso público (endereços IP permitidos): nenhuma regra de rede extra é necessária.

  • Acesso privado (integração de rede virtual):

    • Você precisa de uma regra de NSG (grupo de segurança de rede) de saída para permitir que o tráfego de rede virtual apenas alcance a marca de serviço AzureActiveDirectory.
    • Se você estiver usando uma tabela de rotas, precisará criar uma regra com a marca de serviço de destino AzureActiveDirectory e o próximo salto Internet.
    • Opcionalmente, se estiver usando um proxy, é possível adicionar uma nova regra de firewall para permitir que o tráfego HTTP/S alcance apenas a marca de serviço AzureActiveDirectory.
  • DNS personalizado: há considerações adicionais se você estiver usando DNS personalizado em sua VNET (Rede Virtual). Nesses casos, é crucial garantir que os seguintes pontos de extremidade sejam resolvidos para seus endereços IP correspondentes: login.microsoftonline.com: esse ponto de extremidade é usado para fins de autenticação. Verifique se a configuração de DNS personalizada permite resolver login.microsoftonline.com para seus endereços IP corretos graph.microsoft.com: esse ponto de extremidade é usado para acessar a API do Microsoft Graph. Verifique se a configuração de DNS personalizada permite a resolução de graph.microsoft.com para os endereços IP corretos.

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 usuário administrador do Azure durante o provisionamento do servidor. Você pode adicionar vários usuários administradores do Microsoft Entra após a criação do Servidor.

Screenshot that shows selections for setting a Microsoft Entra admin during server provisioning.]

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. Selecione Salvar.

Screenshot that shows selections for setting a Microsoft Entra admin after server creation.

Importante

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

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

O diagrama de alto nível abaixo resume o fluxo de trabalho de usar a autenticação do Microsoft Entra com o Banco de Dados do Azure para PostgreSQL:

Diagram of authentication flow between Microsoft Entra ID, the user's computer, and the server.

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. Conforme mostrado no diagrama anterior, o token do Microsoft Entra é transmitido como a senha.

Os seguintes clientes foram testados:

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

Autenticação com o Microsoft Entra ID

Use os procedimentos a seguir para se autenticar com o Microsoft Entra ID como um usuário do servidor flexível do Banco de Dados do Azure para PostgreSQL. Você pode acompanhar as etapas no Azure Cloud Shell, em uma máquina virtual do Azure ou no computador local.

Entrar na assinatura de usuário do 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 o token de acesso do Microsoft Entra

Use a CLI do Azure a fim de adquirir um token de acesso para o usuário autenticado do Microsoft Entra e 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, é melhor usar o token de acesso como a senha de usuário do PostgreSQL.

Enquanto estiver usando o cliente da linha de comando psql, o token de acesso precisará ser passado pela variável de ambiente PGPASSWORD. O motivo é que o token de acesso excede o comprimento 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>'

Este é um exemplo do Linux/macOS:

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

Você também pode combinar a primeira e segunda etapas usando a substituição de comando. A recuperação de token pode ser encapsulada em uma variável e passada diretamente como um valor para a variável de ambiente PGPASSWORD:

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

Agora, você pode iniciar uma conexão com o Banco de Dados do Azure para PostgreSQL como faria usualmente:

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 o Pgadmin e clique em Registrar no menu esquerdo e selecione Servidor
  2. Na guia Geral, forneça um nome de conexão e desmarque a opção Conectar agora.
  3. Clique na guia Conexão e forneça os detalhes da instância do servidor flexível do Banco de Dados do Azure para PostgreSQL para Nome do host/endereço e nome de usuário e salvar. o nome de usuário é seu Microsoft Entra ID ou email
  4. No menu do navegador, selecione a conexão do servidor flexível do Banco de Dados do Azure para PostgreSQL e clique em Conectar Servidor
  5. Insira sua senha de token do Active Directory quando solicitado.

Screenshot that shows login process using PG admin.

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 PGUGSER:
    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 com o Microsoft Entra ID como membro do grupo

Criar grupos do Microsoft Entra no servidor flexível do Banco de Dados do Azure para PostgreSQL

Para habilitar um grupo do Microsoft Entra e acessar seu banco de dados, use o mesmo mecanismo adotado para usuários, mas especifique o nome do grupo. Por exemplo:

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

Quando membros do grupo entram, eles usam os respectivos tokens de acesso, mas especificam o nome do grupo como o nome de usuário.

Observação

O servidor flexível do Banco de Dados PostgreSQL do Azure dá suporte a identidades gerenciadas e entidades de serviço como membros do grupo.

Entrar na assinatura de usuário do 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 o token de acesso do Microsoft Entra

Use a CLI do Azure a fim de adquirir um token de acesso para o usuário autenticado do Microsoft Entra e 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 é o nome do grupo do Microsoft Entra que você está tentando conectar.
  • Use o nome do grupo do Microsoft Entra exatamente como está escrito. Os nomes de usuário e grupo do Microsoft Entra diferenciam maiúsculas de minúsculas.
  • Durante a conexão como um grupo, use apenas o nome do grupo, não o alias de um membro do grupo.
  • Se o nome contiver espaços, use uma \ (barra invertida) antes de cada espaço para escapar deles.
  • A validade do token de acesso é de 5 a 60 minutos. Recomendamos que você obtenha o token de acesso antes de iniciar a entrada no Banco de Dados do Azure para PostgreSQL.

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

Próximas etapas