Conta de serviço do SQL Server privilégios e direitos do Windows

12

Minha pergunta é: se você criar uma nova conta de usuário de domínio para cada um dos processos do SQL Server, que permissões devem ser definidas para cada conta? Ou o gerenciador de configuração SQL realmente cuida disso e eu tive um problema imprevisto?

Frequentemente, tenho que configurar o Microsoft SQL Server e me pergunto se alguém pode fornecer conselhos sobre como configurar as contas em que os serviços devem ser executados. Na IMO, isso foi vagamente documentado pela Microsoft, enquanto eles apontam na direção certa, nunca consegui encontrar exemplos concretos.

Para resumir o que vi até agora:

Para implantações simples \ ambientes de desenvolvimento, não há problema em usar os padrões da conta virtual que o instalador usa: por exemplo NT SERVICE\MSSQLSERVER

Evite usar a SYSTEMconta, isso não é seguro.

Para ambientes de produção e de domínio, é recomendável usar uma conta de serviço gerenciado ou criar uma conta de usuário de domínio (não um administrador) para cada serviço. Alegadamente, se você usar uma conta de domínio no momento da instalação, o instalador definirá as permissões necessárias para você.

Se alterar a conta de serviço em uma instalação existente de uma conta virtual para uma conta de domínio, a recomendação é usar o gerenciador de configuração do SQL Server para definir as novas contas de serviço. Alegadamente, isso definirá as permissões necessárias para você.

Eu apenas tentei alterar a conta de serviço em uma instalação existente para uma conta de domínio e isso causaria uma falha de logon até eu conceder a log on as servicepermissão da conta , o que contradiz a parte em que o gerenciador de configuração do SQL Server definirá as permissões necessárias. (Embora não tenha certeza se um GPO pode ter interferido na definição desta política de segurança local)

A Microsoft fornece uma lista das permissões que a Instalação do SQL Server concede nesta página .

Mas não está claro para mim se é algo que devo fazer manualmente para o usuário que eu criei para executar o serviço, ou se o uso do gerenciador de configuração SQL deve definir automaticamente essas permissões.

O SQL Server 2014, controlador de domínio está no Windows Server 2008 R2.

plumdog
fonte
Qual versão do SQL? Este é um ambiente do AD? Em caso afirmativo, qual é o nível do domínio?
Katherine Villyard
Obrigado, eu adicionei as versões à pergunta. SQL Server 2014, controlador de domínio está no nível funcional do Windows Server 2008 R2
1
Isso não parece documentação vaga para mim. Isso parece bastante abrangente. - msdn.microsoft.com/en-us/library/ms143504.aspx
Sim, eu concordo, no geral, a documentação é boa, mas a parte sobre a qual não tenho certeza era vaga era o que eu queria dizer. Você está certo, em geral a documentação é muito detalhada.
Plumdog

Respostas:

10

Frequentemente, tenho que configurar o MS SQL Server e me pergunto se alguém pode fornecer conselhos sobre como configurar as contas em que os serviços devem ser executados. Na IMO, isso foi vagamente documentado pela Microsoft, enquanto eles apontam na direção certa, nunca consegui encontrar exemplos concretos.

Na verdade, é documentado completamente: http://msdn.microsoft.com/en-us/library/ms143504.aspx

Existe uma parte da qual você não tem certeza?

Para implantações simples \ ambientes de desenvolvimento, não há problema em usar os padrões da conta virtual que o instalador usa: por exemplo, NT SERVICE \ MSSQLSERVER

Isso vai depender do meio ambiente. Pessoalmente, odeio encontrar um servidor que alguém configure usando uma conta local e pedir acesso a recursos de rede em algum momento no futuro, entre outros problemas.

Para ambientes de produção e de domínio, é recomendável usar uma conta de serviço gerenciado ou criar uma conta de usuário de domínio (não um administrador) para cada serviço.

Novamente, depende, mas geralmente eu concordo (um exemplo contrário seria grupos de disponibilidade nos quais faz sentido usar uma única conta de domínio em todas as instâncias).

Alegadamente, se você usar uma conta de domínio no momento da instalação, o instalador definirá as permissões necessárias para você.

A menos que haja uma falha, etc., isso ocorrerá. Não sei por que a parte "supostamente".

Se alterar a conta de serviço em uma instalação existente de uma conta virtual para uma conta de domínio, a recomendação é usar o gerenciador de configuração do SQL Server para definir as novas contas de serviço. Alegadamente, isso definirá as permissões necessárias para você.

Ao alterar qualquer um dos serviços do SQL Server, sempre use o SSCM. Sempre. Período. Ele definirá as permissões da nova conta para o básico. Se antes que a conta do sistema local fosse usada e se tivesse permissão irrestrita para tudo no sistema, eu esperaria que algo falhasse nas permissões após a alteração devido a uma segurança controlada mais rigorosa. Isso não é uma falha do SQL Server SSCM, é uma falha de administrador por não conceder permissões EXTRA apropriadas (como acessar um compartilhamento de rede, pastas restritas, itens fora da área de instalação do SQL Server etc.)

Eu apenas tentei alterar a conta de serviço em uma instalação existente para uma conta de domínio e isso causaria uma falha de logon até que eu concedesse a permissão de 'logon como serviço', o que contradiz a parte em que o gerenciador de configuração do SQL Server definirá qualquer requisito necessário. permissões. (Embora eu não tenha certeza se um GPO pode ter interferido na definição desta política de segurança local)

Parece que um GPO está causando um problema (IMHO). Não seria a primeira vez :)

Portanto, minha pergunta é: se você criar uma nova conta de usuário de domínio para cada um dos processos do SQL Server, que permissões devem ser definidas para cada conta?

Eu definiria explicitamente quaisquer permissões fora das indicadas no link msdn que tenho acima (também fornecido por @joeqwerty e no seu OP). Por exemplo, em uma pasta "backup" em um compartilhamento de rede, em uma nova unidade adicionada para armazenar novos bancos de dados (onde a instalação já foi executada, mas a unidade não existia) etc.

Mas não está claro para mim se é algo que devo fazer manualmente para o usuário que eu criei para executar o serviço, ou se o uso do gerenciador de configuração SQL deve definir automaticamente essas permissões.

A menos que algo esteja extremamente quebrado com o servidor, eles não precisam ser fornecidos manualmente.

Sean Gallardy
fonte
Obrigado pela sua resposta, concordo com os seus comentários. Eu configurei o servidor SQL em uma VM limpa diferente para verificar isso e consegui trocar da conta virtual NT SERVICE / MSSQLSERVER para uma conta de usuário de domínio e ela funcionou sem problemas. Portanto, acho que a resposta é como você disse, use o SQL Server Configuration Manager para alterar os logons da conta de usuário do serviço e nenhuma permissão adicional deve ser necessária.
Plumdog
Um comentário adicional, desculpe por ter tornado minha pergunta mais clara, colocando meu ponto principal no topo do post, que farei no futuro. A principal questão que eu não tinha certeza era; [se você criar uma nova conta de usuário de domínio para cada um dos processos do SQL Server, que permissões devem ser definidas para cada conta? ...]. A razão pela qual achei a documentação vaga nesta parte é porque há uma lista de permissões definidas, mas não está explícito se o SSCM as definirá para você.
Plumdog
@plumdog Pelo seu segundo comentário, a maioria das permissões são dadas pelo instalador. Uma conta de serviço virtual e sid estão vinculados a isso, e é por isso que o SSCM sempre deve ser usado para que a transferência e a saída de permissões vinculadas sejam feitas corretamente, entre outras coisas, como a segurança vinculada à criptografia de chave mestra de serviço, etc. .
Sean Gallardy