Estamos administrando banco de dados em kubernetes para nossos clientes. Para cada novo cluster, criamos um novo usuário com CREATE ROLE
funções CREATE DB
atribuídas a eles, para que possam criar seus próprios bancos de dados e novos usuários com funções mais restritas.
O problema é que, com CREATE ROLE
permissão, o usuário pode CONCEDER a si mesmo pg_execute_server_program
o papel e, em seguida, usar o ataque reverso do shell e, em seguida, obter o shell do nosso pod e ler as variáveis de ambiente, o que não é desejado. Por exemplo, temos vários segredos em ambientes que o cliente pode aproveitar e então aumentar seu alcance de ataque e assumir mais coisas.
Resumindo, quero ter um usuário que possa criar novos usuários, mas não possa conceder a si mesmo funções predefinidas específicas.
Atualização: procurei e descobri que ADMIN_OPTION
foi adicionado no PostgreSQL 16 para resolver esse problema. Meu problema é que estamos usando o PostgreSQL versão 13,14,15 e não podemos simplesmente forçar a atualização de todos os clusters.