Eu gostaria de usar a segurança integrada com meu aplicativo interno que está todo em um domínio. Infelizmente, nunca consegui fazer isso funcionar bem. Gostaria de atribuir a um grupo inteiro do Exchange (Active Directory) uma função no SQL Server para acesso de leitura/gravação a determinadas tabelas. Dessa forma eu não precisaria criar um operador sempre que alguém fosse contratado ou deletar um operador sempre que alguém fosse demitido. Isso é possível? Que passos eu tomaria para fazer isso?
relate perguntas
-
Quais são as principais causas de deadlocks e podem ser evitadas?
-
Quanto "Padding" coloco em meus índices?
-
Existe um processo do tipo "práticas recomendadas" para os desenvolvedores seguirem para alterações no banco de dados?
-
Como determinar se um Índice é necessário ou necessário
-
Downgrade do SQL Server 2008 para 2005
Script de amostra
sp_addrolemember
é preterido a partir do SQL Server 2012, ondeALTER ROLE
deve ser usado.De marc_s respondendo "Como adicionar grupo de usuários do Active Directory como login no SQL Server" :
No SQL Server Management Studio, vá para
Object Explorer > (your server) > Security > Logins
e clique com o botão direito do mouseNew Login
:Em seguida, na caixa de diálogo que aparece, escolha os tipos de objetos que deseja ver (
Groups
desativado por padrão - verifique!) e escolha o local onde deseja procurar seus objetos (por exemplo, useEntire Directory
) e encontre seu grupo AD .Agora você tem um login regular do SQL Server - assim como quando você cria um para um único usuário do AD. Dê a esse novo login as permissões nos bancos de dados de que ele precisa e pronto!
Qualquer membro desse grupo do AD agora pode fazer login no SQL Server e usar seu banco de dados.
Conceder as permissões no SQL Server para um grupo do AD é relativamente simples. Isso pode ser feito por meio do T-SQL ou do Management Studio.
Por exemplo, se você tiver um grupo AD chamado
MYDOMAIN\APPLICATION SUPPORT
, você criaria o logon no nível do servidor e usaria mapeamentos para bancos de dados individuais para fornecer permissões um pouco mais granulares, como leitor de dados.Idealmente, todo o acesso ao aplicativo deve ser por meio de procedimentos armazenados*, portanto, apenas as permissões de execução nesses procedimentos armazenados nesse banco de dados são necessárias.
* Do ponto de vista da segurança, para permitir que um determinado usuário veja alguns dados específicos, você pode criar um procedimento e conceder ao usuário permissão de execução nesse procedimento, e nada mais. Permitir que o usuário consulte diretamente significaria dar permissão de seleção em todas as tabelas envolvidas. Também é mais fácil trabalhar com procedimentos e mais fácil de depurar.
Os procedimentos armazenados abstraem o acesso à tabela e limitam o acesso. Para os tipos de DBA, é como "deixe-me ver todas as suas variáveis de instância: não quero usar métodos, getters ou setters".
Se o usuário for membro de um DOMAIN\SecurityGroup que tenha autoridade Sysadmin no SQL, isso será usado ao acessar bancos de dados. Caso contrário, você precisa verificar quais DOMAIN\SecurityGroup(s) receberam autoridade em cada banco de dados. Se o usuário for membro de 2 SecurityGroups, com SecGroupA tendo autoridade de seleção e SecGroupB tendo autoridade de inserção, o usuário poderá selecionar e inserir.