Qual é a melhor prática para a segurança do SQL Server? Usando grupos AD que recebem direitos em objetos de esquema ou devo adicionar os grupos AD a uma função de banco de dados que recebe direitos em objetos de esquema? Se a última for a melhor prática, qual é realmente o benefício de usar funções de banco de dados?
De um modo geral, adicionar grupos do AD a funções de banco de dados e conceder as permissões às funções dá a você alguma separação de propósito. Nesse caso, você os usaria como:
A vantagem é que a função pode ter mais de um grupo AD adicionado a ela. Da mesma forma, se o AD Group for removido, os conjuntos de permissões permanecerão em vigor. Dessa forma, o AD Group original, um novo AD Group ou grupos, podem ser adicionados sem a necessidade de redefinir os direitos.
E, é claro, mais de um AD Group pode usar uma função e um AD Group pode usar várias funções. Tudo depende de como você deseja usar e reutilizar as permissões.
Se os direitos forem concedidos diretamente a um Grupo do AD, descartar o grupo também descartará os direitos que o grupo tinha. O que significaria recriar esses direitos se você precisar deles em outro lugar.