Estou estabelecendo uma instância de desenvolvimento compartilhada para vários aplicativos de banco de dados único.
Pretendo conceder permissões aos usuários autorizados para permitir qualquer modificação de esquema e dados que eles precisem executar, mas deseja impedir que os mesmos usuários emitam ALTER DATABASE
comandos para ADD
ou MODIFY
FILEs
. Isso evita que qualquer desenvolvedor consuma recursos adicionais de espaço em disco sem o consentimento do DBA.
Olhando para uma abordagem que usa o mínimo de esforço administrativo, acho que devo grant db_owner
aos usuários autorizados e adicionar um gatilho de banco de dados ou servidor para bloquear ALTER DATABASE
comandos, a menos que venham de sessões de DBA.
Isso funcionaria ou existe uma abordagem melhor/mais segura?
Você pode colocar os usuários nas funções db_ddladmin, db_datawriter e db_datareader. Isso os impediria de modificar as permissões no banco de dados, mas as funções db_securityadmin ou db_accessadmin podem ser concedidas conforme apropriado, tendo em mente que é possível que db_securityadmin seja usado para escalonamento de privilégios, mas db_accessadmin pode não atender às suas necessidades. Como sempre, teste a configuração antes de implantá-la na produção para garantir que ela restrinja o que você deseja e permita o que deseja.
Se o objetivo for impedir o crescimento do banco de dados, certifique-se de que o crescimento automático esteja desabilitado nesses bancos de dados.