Eu tenho uma instância do SQL Server 2012 e um grupo do Active Directory, ao qual posso adicionar usuários do Active Directory. Eu tenho minha conta AD pessoal (MyAccount) e uma conta de serviço (ServiceAccount) nesse grupo.
Preciso conceder acesso de administrador a este grupo AD, para toda a instância. Isso significa que não precisarei executar comandos de concessão para cada nova tabela e banco de dados criados. Qualquer usuário desse grupo poderá automaticamente criar, soltar, inserir, selecionar, etc.
Ainda mais complicado. Devo ser capaz de usar a Autenticação do Windows para fazer login com MyAccount (eu faço login no Windows e depois no SQL Server sem precisar digitar nome de usuário-senha novamente) e fazer login usando ServiceAccount digitando nome de usuário e senha. Não posso ser forçado a fazer login no Windows com ServiceAccount (ou executar SSMS/SSDT/etc com essa conta) para poder fazer login no MSSQL.
Qual é a melhor prática para configurar isso?
Parte do que você está pedindo é realmente muito simples.
Permissões para seu grupo AD
Você cria um login para seu grupo AD
Em seguida, conceda o acesso que você deseja. Você diz que deseja conceder
Admin
acesso, mas, a menos que seja sua equipe de DBA, eu não adicionaria o AD Group a algo comosysadmin
. Em vez disso, conceda a eles as permissões que você realmente deseja que eles tenham. Parece que você querSELECT
em qualquer tabela/exibição dentro do banco de dadosUPDATE
ou instruções emINSERT
qualquerDELETE
tabela/exibição no banco de dados.EXECUTE
qualquer procedimento armazenado ou função dentro do banco de dados.Para adicionar isso, execute o seguinte em cada banco de dados do usuário.
Se você deseja que essas permissões sejam adicionadas aos novos bancos de dados do usuário, execute o script no
model
banco de dados também.Conectando usando sua conta de serviço
Se você tiver um aplicativo em execução em sua conta de serviço, quando esse aplicativo se conectar usando autenticação confiável, ele se conectará ao SQL usando essa conta de serviço. Se, no entanto, você quiser se conectar ao SQL usando algo como SSMS, terá duas opções. Você pode fazer login em uma máquina usando a conta de serviço ou executar o SSMS como um usuário diferente.
Para executar o SSMS sob um usuário diferente, mantenha pressionada a tecla SHIFT e clique com o botão direito do mouse no atalho para o SSMS e selecione
Run as different user
Você receberá um prompt de login/senha para um login do AD. Digite o nome e a senha da sua conta de serviço. Depois que o SSMS abrir, todas as conexões confiáveis (autenticação do Windows) serão feitas usando o login AD que você conectou (sua conta atendida neste caso).
Você pode conceder acesso de administrador usando este código:
Isso permitirá que qualquer usuário que seja membro de [DOMAIN\ADGroupName] faça login no SQL Server sem especificar um nome de usuário/senha e concederá a esses usuários acesso de administrador a toda a instância, incluindo todos os bancos de dados.
Você pode usar o miniaplicativo de linha de comando "runas" para iniciar o SQL Server Management Studio "como" a conta de serviço. A sintaxe para isso seria (a partir de uma linha de comando):
Conceder
CONTROL SERVER
direitos a um grupo ou login dessa maneira permite que você tambémDENY
acesse determinados objetos ou bancos de dados. Por exemplo, você podeDENY ALTER ON DATABASE::master TO [DOMAIN\ADGroupName];
impedir que esses usuários façam alterações emmaster
, enquanto ainda permite que eles criem e excluam outros bancos de dados, tabelas, etc. Esteja ciente de que um usuário comCONTROL SERVER
direitos pode facilmente criar um login SQL, conceder acesso a esse loginsysadmin
e ter acesso completo a tudo no SQL Server, incluindo acesso não controlado a arquivosmaster
. Isso geralmente é considerado um risco de segurança bastante considerável e provavelmente só deve ser usado em caixas que não sejam de produção.Eu uso o mais excelente pôster de hierarquia de permissões do SQL Server para ter uma visão de alto nível das implicações de permissões específicas.