Partilhar via


Utilizar o Microsoft Entra ID para autenticação com a Base 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ê configura o acesso à ID do Microsoft Entra para autenticação com o Banco de Dados do Azure para servidor flexível PostgreSQL. Você também aprenderá a usar um token Microsoft Entra com o Banco de Dados do Azure para servidor flexível PostgreSQL.

Você pode configurar a autenticação do Microsoft Entra para o Banco de Dados do Azure para servidor flexível PostgreSQL durante o provisionamento do servidor ou posteriormente. Apenas os utilizadores administradores do Microsoft Entra podem criar ou ativar utilizadores para uma autenticação baseada no Microsoft Entra ID. Recomendamos não usar 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 servidor flexível do 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 requer conectividade de saída para executar determinadas operações, como adicionar grupos de administração 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): Não são necessárias regras de rede adicionais.

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

    • Você precisa de uma regra NSG (grupo de segurança de rede) de saída para permitir que o tráfego de rede virtual alcance apenas a AzureActiveDirectory etiqueta de serviço.
    • Se você estiver usando uma tabela de rotas, precisará criar uma regra com a tag AzureActiveDirectory de serviço de destino e o próximo salto Internet.
    • Opcionalmente, se você estiver usando um proxy, poderá adicionar uma nova regra de firewall para permitir que o tráfego HTTP/S alcance apenas a AzureActiveDirectory tag de serviço.
  • DNS personalizado: Há considerações adicionais se você estiver usando DNS personalizado em sua rede virtual (VNET). Nesses casos, é crucial garantir que os seguintes pontos de extremidade resolvam para seus endereços IP correspondentes: login.microsoftonline.com: Este 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: Este ponto de extremidade é usado para acessar a API do Microsoft Graph. Certifique-se de que 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 aprovisionamento do servidor, siga estes passos:

  1. No portal do Azure, durante o aprovisionamento do servidor, selecione Autenticação do PostgreSQL e do Microsoft Entra ou Apenas autenticação do Microsoft Entra como 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.

Nota

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 depois que o servidor é criado.

Captura de tela que mostra seleções para definir um administrador do Microsoft Entra durante o provisionamento do servidor.]

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.

Captura de tela que mostra seleções para definir um administrador do Microsoft Entra após a criação do servidor.

Importante

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

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

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

Diagrama do fluxo de autenticação entre o Microsoft Entra ID, o computador do usuário e o servidor.

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

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

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

Iniciar sessão na subscrição do Azure do utilizador

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 o token de acesso do Microsoft Entra

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

Ao usar o cliente de linha de comando psql, o token de acesso precisa ser passado pela variável de PGPASSWORD ambiente. O motivo é que o token de acesso excede 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/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. A recuperação de token pode ser encapsulada em uma variável e passada diretamente como um valor para PGPASSWORD a variável de ambiente:

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 normalmente:

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 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 seus detalhes flexíveis da instância de servidor do Banco de Dados do Azure para PostgreSQL para Nome do host/endereço e nome de usuário e salve. username é o seu ID do Microsoft Entra ou e-mail
  4. No menu do navegador, selecione seu Banco de Dados do Azure para conexão de servidor flexível PostgreSQL e clique em Conectar Servidor
  5. Digite sua senha de token do Ative Directory quando solicitado.

Captura de tela que mostra o processo de login usando PG admin.

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 PGUGSER 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

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

Para permitir que um grupo do Microsoft Entra acesse seu banco de dados, use o mesmo mecanismo usado para os usuários, mas especifique o nome do grupo. Por exemplo:

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

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

Nota

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

Iniciar sessão na subscrição do Azure do utilizador

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 o token de acesso do Microsoft Entra

Use a CLI do Azure para adquirir 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 é o nome do grupo do Microsoft Entra que você está tentando conectar.
  • Certifique-se de usar a maneira exata como o nome do grupo Microsoft Entra está escrito. Os nomes de usuário e grupo do Microsoft Entra diferenciam maiúsculas de minúsculas.
  • Quando você estiver se conectando como um grupo, use apenas o nome do grupo e 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 dele.
  • A validade do token de acesso é de 5 minutos a 60 minutos. Recomendamos que você obtenha o token de acesso antes de iniciar a entrada no Banco de Dados do Azure para PostgreSQL.

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

Próximos passos