Eu tenho uma situação única (bem, acho que é única) em que bancos de dados (sim, bancos de dados inteiros) podem ser criados de forma mais ou menos dinâmica.
Ignorando o problema óbvio com isso, preciso permitir que uma conta do AD leia qualquer um dos dados em qualquer um dos bancos de dados.
Reconhecendo o problema de segurança em torno de tudo isso, existe uma maneira de conceder isso apenas uma vez no nível do servidor, em vez de ter que conceder constantemente quando um novo banco de dados aparece? Eu preferiria apenas mantê-lo em um nível de leitor de dados.
Especificamente: 1. os bancos de dados são criados dinamicamente sem conhecimento prévio do DBA 2. Os trabalhos de relatório iteram por meio desses bancos de dados e falham se encontrarem um novo.
Estou usando SQL Server 2008R2 e SQL Server 2014.
Como você não conhece o esquema ou os nomes das tabelas para concedê-los, não faça isso especificamente. Você pode adicionar sua conta do AD à
db_datareader
função nomodel
banco de dados e isso deve ser copiado para cada banco de dados criado nessa instância.Além disso, se os bancos de dados forem criados por meio de restauração ou qualquer outra coisa que não seja criar instrução de banco de dados, você poderá usar as regras de gerenciamento baseado em políticas para verificar facilmente se sua conta do AD é membro dessa função de banco de dados e, se não, tomar uma ação apropriada.
No SQL Server 2014, você pode usar essas duas novas permissões:
Fonte
Para o SQL Server 2008R2, você pode adicionar seu usuário ao banco de dados de modelo ou gravar um gatilho DDL para ação de criação de banco de dados para adicionar seu usuário a novos bancos de dados, quando eles forem criados.