Um serviço de banco de dados PostgreSQL gerenciado pelo Azure para desenvolvimento e implantação de aplicativos.
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?
- Estes utilizadores conseguem efetivamente estabelecer ligação às bases de dados
postgres,azure_sysouazure_maintenance, ou apenas conseguem visualizá-las através de ferramentas cliente e listagens de metadados? - Conseguem executar consultas em objetos como
query_store.runtime_statse obter resultados, ou os objetos apenas aparecem visíveis no explorador de objetos? - 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