Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Neste artigo, configura-se o acesso ao Microsoft Entra ID para autenticação com o Base de Dados do Azure para PostgreSQL. Também aprenderá a utilizar um token do Microsoft Entra com um servidor flexível do Base de Dados do Azure para PostgreSQL.
Pode configurar a autenticação Microsoft Entra para um servidor flexível do Base de Dados do Azure para 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. Não use o administrador do Microsoft Entra para operações normais de base de dados porque esse papel tem permissões de utilizador elevadas, como 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
- Você precisa de uma conta do Azure com uma assinatura ativa. Crie uma conta gratuitamente.
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 tráfego apenas para a tag de serviço
AzureActiveDirectory. - Se você usar uma tabela de rotas, adicione uma rota com destino
AzureActiveDirectorye próximo saltoInternet. - Se você usar um proxy, permita apenas o tráfego HTTPS para a
AzureActiveDirectorytag de serviço.
- Adicione uma regra NSG de saída que permita tráfego apenas para a tag de serviço
-
DNS personalizado:
- Certifique-se de que estes hostnames sejam resolvidos publicamente:
login.microsoftonline.com(autenticação) egraph.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.
- Certifique-se de que estes hostnames sejam resolvidos publicamente:
Para definir o administrador do Microsoft Entra durante o aprovisionamento do servidor, siga estes passos:
- 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.
- 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:
- No portal Azure, selecione o servidor flexível Base de Dados do Azure para PostgreSQL que pretende ativar para o Microsoft Entra ID.
- 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.
- 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.
- Selecione Guardar.
Importante
Quando defines o administrador, adicionas um novo utilizador ao teu servidor flexível Base de Dados do Azure para PostgreSQL com permissões completas de administrador.
Conectar-se ao Banco de Dados do Azure para PostgreSQL usando a ID do Microsoft Entra
A integração com o Microsoft Entra funciona com ferramentas padrão do PostgreSQL como o psql, que não conhecem o Microsoft Entra e suportam apenas especificar o nome de utilizador e a palavra-passe quando se liga ao PostgreSQL.
Os clientes testados incluem:
- Extensão do PostgreSQL para o Visual Studio Code: Use o AUTHENTICATION TYPE para definir o método de autenticação como Entra Auth.
-
Linha de comando psql: Use a
PGPASSWORDvariável para passar o token. - 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 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. Exige que forneça o seu ID de utilizador e palavra-passe 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
Especifique o valor do recurso conforme mostrado no exemplo anterior. 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>
Também podes combinar os passos 2 e 3 usando substituição de comandos. 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"
Use um token como palavra-passe para iniciar sessão usando o PgAdmin
Para se conectar usando um token do Microsoft Entra com PgAdmin, execute estas etapas:
- Abra o PgAdmin e selecione Registrar>servidor.
- No separador Geral , introduza um nome de ligação e desmarque Ligar agora.
- Na guia Conexão , insira os detalhes do host. Defina Username como seu UPN Microsoft Entra (por exemplo,
user@tenant.onmicrosoft.com). Guardar. - Na árvore, selecione o servidor e escolha Connect Server.
- 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 utilizador do Microsoft Entra.Use a grafia exata para o utilizador do Azure. Os nomes de utilizador e de grupo do Microsoft Entra são sensíveis a maiúsculas e minúsculas.
Se o nome contiver espaços, use uma barra invertida (
\) antes de cada espaço para escapar dele.- Pode usar a CLI do Azure para obter o utilizador com sessão iniciada 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')- Pode usar a CLI do Azure para obter o utilizador com sessão iniciada e definir o valor da variável de ambiente
O token de acesso é válido por 5 a 60 minutos. Obtenha o token de acesso antes de iniciar o início de sessão na Azure Database 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 o principal de grupo (papel) na base de dados. Substitua o nome de exibição conforme necessário:
select * from pgaadauth_create_principal('Prod DB Readonly', false, false).
Se desativar a sincronização de grupo, os membros podem iniciar sessão usando os seus tokens de acesso e especificar o nome do grupo como nome de utilizador.
Se ativar a sincronização de grupo (através do
pgaadauth.enable_group_syncparâmetro definido paraON), os membros devem iniciar sessão usando as suas credenciais individuais do Microsoft Entra ID, mas ainda podem iniciar sessão usando o nome do grupo como nome de utilizador.Os logins de grupo continuam disponíveis por razões de compatibilidade, mas pode desativá-los utilizando:
ALTER ROLE "ROLE_NAME" NOLOGIN;Não apagues o papel de grupo para manter a sincronização.
Sincronização automática de grupos a cada 30 minutos.
Podes ativar a sincronização manual usando:
SELECT * FROM pgaadauth_sync_roles_for_group_members();(pgaadauth.enable_group_syncparam deve serON).Alterações aos metadados do grupo, como o nome do grupo, não são sincronizadas.
As alterações na pertença 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.