Compartilhar via

Azure Database for PostgreSQL Flexible Server: How to restrict external users to access only one specific database?

FWERNER 0 Pontos de reputação
2026-06-15T18:16:32.2833333+00:00

We are using Azure Database for PostgreSQL Flexible Server (PostgreSQL 15.x).

We created dedicated readonly PostgreSQL users for an external BI integration, and their access scope should be restricted to a single application database.

However, these users can also view and connect to internal databases such as "postgres", "azure_sys" and "azure_maintenance". They are also able to browse some internal schemas and query monitoring objects like query_store.runtime_stats.

We already validated that:

  • Users are not SUPERUSER.
  • Users do not have CREATEDB, CREATEROLE or REPLICATION privileges.
  • Users inherit only a custom readonly role.
  • There are no explicit GRANT permissions assigned to those internal databases.
  • Attempts to execute REVOKE CONNECT ON DATABASE ... FROM PUBLIC return "no privileges could be revoked".

Is this expected behavior in Azure Database for PostgreSQL Flexible Server?

Is there any supported way to restrict these users so they can access only one specific database and completely prevent access, connection and navigation to Azure internal databases?

This requirement is driven by security and governance policies, since these accounts will be provided to external third parties and must follow the principle of least privilege.

Banco de Dados do Azure para PostgreSQL
0 comentários Sem comentários

2 respostas

Classificar por: Mais útil
  1. Manoj Kumar Boyini 16,815 Pontos de reputação Equipe Externa da Microsoft Moderador
    2026-06-17T19:29:51.1933333+00:00

    Olá @FWERNER

    Obrigado por partilhar os detalhes do cenário.

    O comportamento que está a observar é, de um modo geral, esperado no Azure Database for PostgreSQL Flexible Server.

    O Azure Database for PostgreSQL Flexible Server é um serviço gerido, e a Microsoft mantém bases de dados internas e componentes geridos pela plataforma, incluindo bases de dados como azure_sys e azure_maintenance. A base de dados azure_sys é utilizada por funcionalidades como o Query Store e contém metadados necessários para operações internas do serviço.

    É importante distinguir entre visibilidade e acesso. Um utilizador pode conseguir visualizar a existência de determinadas bases de dados, esquemas ou objetos de metadados através dos catálogos do PostgreSQL, mas isso não significa necessariamente que tenha permissões para aceder ou modificar os dados subjacentes. O acesso aos dados da aplicação é controlado separadamente através de privilégios ao nível da base de dados, esquema e objeto, tais como CONNECT, USAGE e SELECT.

    A abordagem que descreveu, utilizando utilizadores dedicados apenas de leitura sem privilégios SUPERUSER, CREATEDB, CREATEROLE ou REPLICATION, está alinhada com as boas práticas de segurança e com o princípio do menor privilégio.

    Para restringir utilizadores externos a uma única base de dados de aplicação, a recomendação é garantir que lhes são atribuídas apenas as permissões necessárias nessa base de dados específica, bem como rever heranças de funções (roles), permissões predefinidas e quaisquer grupos aos quais esses utilizadores pertençam.

    Com base na documentação atual do Azure Database for PostgreSQL Flexible Server, o controlo de acesso é implementado através de funções e privilégios do PostgreSQL ao nível da base de dados, esquema e objeto. A documentação não descreve um mecanismo que permita ocultar completamente bases de dados geridas pelo Azure, catálogos de sistema ou metadados de monitorização a utilizadores não administrativos. Assim, alguma visibilidade destes objetos pode ser considerada comportamento esperado no contexto do PostgreSQL e da arquitetura do serviço gerido.

    Para compreendermos melhor o cenário, poderia confirmar os seguintes pontos?

    1. Estes utilizadores conseguem efetivamente estabelecer ligação às bases de dados postgres, azure_sys ou azure_maintenance, ou apenas conseguem visualizá-las através de ferramentas cliente e listagens de metadados?
    2. Conseguem executar consultas em objetos como query_store.runtime_stats e obter resultados, ou os objetos apenas aparecem visíveis no explorador de objetos?
    3. Conseguem aceder a quaisquer dados da aplicação fora da base de dados que deveria estar limitada ao acesso deles?

    Estas informações ajudarão a determinar se estamos perante um caso de simples visibilidade de metadados ou de permissões adicionais atribuídas inadvertidamente.

    **Referências:
    **https://learn.microsoft.com/en-us/azure/postgresql/security/security-overview
    https://learn.microsoft.com/en-us/azure/postgresql/security/security-access-control

    Fala aí, nos avise se tiver alguma dúvida ou preocupação

    Esta resposta foi útil?

    0 comentários Sem comentários

  2. Dio Xavier 286.9K Pontos de reputação Moderador Voluntário
    2026-06-15T19:46:39.5+00:00

    Olá

    Bem vindo á Comunidade Microsoft Azure.

    Boa tarde, FWERNER. Obrigado por entrar em contato conosco e detalhar seu cenário. Este comportamenmto é esperado. Usuários não administrativos podem visualizar bancos internos como "postgres", "azure_sys" and "azure_maintenance" além de metadados e objetos de monitoramento do Azure. Como estes componentes são gerenciados pela plataforma e não podem ser totalmente ocultadas ou bloqueados por configurações do cliente.

    Atualmente não há uma forma nativa de bloquear e restringir a visualização ou conexão a estes bancos internos. A boa prática recomendada neste caso é o "Princípio do menor Privilégio" concedendo a estes usuários o acesso apenas a este banco, esquemas e objetos necessários a integração ou aplicação do BI.

    Documentação de referência técnica:

    https://learn.microsoft.com/pt-br/azure/postgresql/security/security-overview

    https://learn.microsoft.com/pt-br/azure/postgresql/security/security-access-control

    Mais dúvidas ou perguntas?

    Se a resposta tiver ajudado a resolver o problema, por gentileza marque-a como Resposta Útil. Essa ação encerra a thread, sinaliza a solução correta e ajuda outras pessoas com a mesma dúvida a encontrarem a resposta com mais facilidade. Caso ainda precise de suporte ou tenha novas perguntas, fique à vontade para utilizar este mesmo post.

    Esta resposta foi útil?

    0 comentários Sem comentários

Sua resposta

As respostas podem ser marcadas como ‘Aceitas’ pelo autor da pergunta e ‘Recomendadas’ pelos moderadores, o que ajuda os usuários a saber a resposta que resolveu o problema do autor.