Partilhar via


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

Neste artigo, configura-se o acesso ao Microsoft Entra ID para autenticação com o Azure Database for PostgreSQL. Você também aprende a usar um token do Microsoft Entra com uma instância de 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 em ID do Microsoft Entra. 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. Os 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 administração do Microsoft Entra.

Os requisitos de rede variam de acordo com a topologia:

  • Acesso público (endereços IP permitidos): Não são necessárias regras de saída adicionais.
  • Acesso privado (integração de rede virtual):
    • Adicione uma regra NSG de saída que permita o tráfego apenas para o tag 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 AzureActiveDirectory tag de serviço.
  • DNS personalizado:
    • Certifique-se de que estes hostnames 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 estas etapas:

  1. No portal do Azure, durante o provisionamento do servidor, selecione a autenticação do PostgreSQL e do Microsoft Entra ou a autenticação do Microsoft Entra somente 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álida do Microsoft Entra no locatário do cliente para ser o administrador do Microsoft Entra.

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

Observação

Você pode adicionar apenas um administrador do Microsoft Entra durante o provisionamento do servidor. Você pode adicionar vários usuários administradores do Microsoft Entra depois que o servidor for criado.

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

  1. No portal do Azure, selecione a instância do Banco de Dados do Azure para servidor flexível PostgreSQL que você deseja habilitar para o Microsoft Entra ID.
  2. Em Segurança, selecione Autenticação. Em seguida, escolha a autenticação PostgreSQL e Microsoft Entra ou a autenticação Microsoft Entra apenas como método de autenticação, com base nos seus requisitos.
  3. Selecione Adicionar administradores do Microsoft Entra. Em seguida, selecione um usuário, grupo, entidade de serviço ou identidade gerenciada válida do Microsoft Entra no locatário do cliente para ser um administrador do Microsoft Entra.
  4. Selecione Guardar.

Importante

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

Conectar-se ao Banco de Dados do Azure para PostgreSQL usando a ID do Microsoft Entra

A integração do Microsoft Entra funciona com ferramentas padrão do PostgreSQL, como o psql, que não são compatíveis com o Microsoft Entra e suportam apenas a especificação do nome de usuário e da senha quando você está se conectando ao PostgreSQL.

Testamos os seguintes clientes:

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

Autenticar com o Microsoft Entra ID

Utilize os seguintes procedimentos para autenticar no Microsoft Entra ID como utilizador de uma instância de servidor flexível do Azure Database para PostgreSQL.

Você pode acompanhar usando:

  • Azure Cloud Shell
  • Máquina virtual do Azure
  • A sua máquina local

Iniciar sessão no Azure

Comece autenticando com a ID do Microsoft Entra usando a CLI do Azure. Esta etapa não é necessária no Azure Cloud Shell.

az login

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

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. Aqui está 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 conforme mostrado. Para outras nuvens, você pode procurar o valor do recurso usando o seguinte comando:

az cloud show

Para a CLI do Azure versão 2.0.71 e posterior, você pode especificar o comando na seguinte versão conveniente para todas as nuvens:

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

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

Use um token como senha para entrar com o cliente psql

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

Quando você usa o cliente de linha de comando psql, você precisa passar o token de acesso através da PGPASSWORD variável de ambiente. O token de acesso é maior do que o comprimento da senha que o psql pode aceitar diretamente.

Aqui está 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 de Linux ou macOS:

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

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

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 senha para entrar com o PgAdmin

Para se conectar usando um token do Microsoft Entra com PgAdmin, execute estas etapas:

  1. Abra o PgAdmin e selecione Registrar>servidor.
  2. No separador Geral , introduza um nome de ligação e desmarque Ligar agora.
  3. Na guia Conexão , insira os detalhes do host. Defina Username como seu UPN Microsoft Entra (por exemplo, user@tenant.onmicrosoft.com). Guardar.
  4. Na árvore, selecione o servidor e escolha Connect Server.
  5. Quando solicitado, cole o token de acesso como a senha.

Aqui estão algumas considerações essenciais quando você está se conectando:

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

  • Certifique-se de usar a maneira exata como o usuário do Azure 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 dele. Você pode usar a CLI do Azure para obter o usuário conectado e definir o valor para PGUSER a variável de ambiente:

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

Agora você está autenticado em seu banco de dados do Azure para servidor PostgreSQL por meio da autenticação do Microsoft Entra.

Autenticar com o Microsoft Entra ID como membro do 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 a entidade de grupo (função) na base de dados (substitua o nome de exibição conforme necessário):

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

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

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

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

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

  • Sincronização automática de grupos a cada 30 minutos.

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

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

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

    Observação

    Identidades gerenciadas e entidades de serviço são suportadas como membros do grupo.

Iniciar sessão no Azure

Autentique-se com a ID do Microsoft Entra usando a CLI do Azure. Esta etapa não é necessária no Azure Cloud Shell. O usuário precisa ser membro do grupo 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. Aqui está um exemplo da nuvem pública:

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

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

az cloud show

Para a CLI do Azure versão 2.0.71 e posterior, você pode especificar o comando na seguinte versão conveniente para todas as nuvens:

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

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"
}

Use um token como senha para entrar com psql ou PgAdmin

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

  • O nome do grupo deve corresponder exatamente ao nome de exibição do grupo Microsoft Entra (sensível a maiúsculas e minúsculas).
  • Use apenas o nome do grupo, não um alias de membro.
  • Espaços de fuga 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.

Sugestão

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.

Agora você está autenticado em seu servidor PostgreSQL por meio da autenticação Microsoft Entra.