Protegendo dados e arquivos de log

O SQL Server define permissões de acesso de arquivo nos dados físicos e arquivos de log de cada banco de dados para contas específicas. As permissões evitam que os arquivos sejam violados caso estejam localizados em um diretório com permissões abertas. Por exemplo, se as permissões não estiverem definidas e as permissões do sistema operacional no diretório de banco de dados forem definidas como Controle Total para todos os usuários, as contas com acesso a esse diretório poderão excluir ou modificar os arquivos de banco de dados, mesmo que eles não tenham permissões do SQL Server para modificar o próprio banco de dados.

As permissões de acesso de arquivo são definidas durante qualquer uma das seguintes operações de banco de dados: criação, anexo, desanexo, modificação para adicionar um novo arquivo, backup ou restauração.

Considerações administrativas

  • As permissões só são definidas quando o sistema de arquivos oferece suporte ao controle de acesso do Win32, por exemplo, o sistema de arquivos NTFS. O Mecanismo de Banco de Dados não pode definir permissões em arquivos armazenados de partições brutas ou sistemas de arquivos FAT e FAT32.

  • Se o administrador do sistema operacional modificar manualmente as permissões do arquivo, o Mecanismo de Banco de Dados não tentará impor as permissões originais.

  • Se a conta de serviço (MSSQLSERVER) do SQL Server for alterada usando o SQL Server Management Studio, o Management Studio tentará adicionar a conta e as permissões corretas em todos os arquivos de banco de dados existentes. Isso pode falhar em bancos de dados que não são usados no momento da alteração da conta de serviço.

  • Se a conta de serviço MSSQLSERVER for alterada usando os Serviços do Microsoft Windows, o administrador do sistema operacional deverá conceder as permissões Controle Total da nova conta de serviço para todos os arquivos de log e banco de dados.

Criando um banco de dados ou adicionando um novo arquivo

Quando um banco de dados é criado ou modificado para incluir um novo arquivo, a conta de serviço MSSQLSERVER e os membros do grupo de administradores locais recebem acesso de Controle Total nos arquivos de log e dados. O acesso de arquivo é removido de todas as outras contas.

Fazendo backup e restaurando um banco de dados

As permissões Controle Total no arquivo criado para restauração ou backup são concedidas à conta de serviço MSSQLSERVER e aos membros do grupo de administradores locais.

Se o arquivo já existir e a conta de serviço MSSQLSERVER já tiver permissões no arquivo, a operação de backup ou restauração continuará. Caso contrário, o Mecanismo de Banco de Dados representará a conta do Windows da conexão que está executando a operação e tentará abrir o arquivo. Depois que o arquivo for aberto, as permissões serão concedidas à conta de serviço MSSQLSERVER e aos membros do grupo de administradores locais.

Os arquivos em espera (arquivos de desfazer) são tratados da mesma maneira.

Desanexando e anexando um banco de dados

Quando você desanexa ou anexa um banco de dados, o Mecanismo de Banco de Dados tenta representar a conta do Windows da conexão que está executando a operação para garantir que a conta tenha permissão para acessar os arquivos de log e banco de dados. Para contas de segurança mistas que usam logons do SQL Server, a representação pode falhar.

Observação sobre segurançaObservação sobre segurança

É recomendável não anexar bancos de dados de origens desconhecidas ou não confiáveis. Esses bancos de dados podem conter um código mal-intencionado que pode executar um código Transact-SQL inesperado ou provocar erros modificando o esquema ou a estrutura física do banco de dados. Antes de usar um banco de dados de uma origem desconhecida ou não-confiável, execute DBCC CHECKDB no banco de dados, em um servidor que não seja de produção. Além disso, examine o código, como procedimentos armazenados ou outro código definido pelo usuário, no banco de dados.

A tabela a seguir mostra as permissões definidas no banco de dados e nos arquivos de log depois que uma operação para anexar e desanexar é concluída e se a conta de conexão pode ser representada pelo Mecanismo de Banco de Dados.

Operação

A conta de conexão pode ser representada

As permissões de arquivos são concedidas para

Desanexar

Sim

Conta que executa a operação, apenas. Contas adicionais poderão ser adicionadas por um administrador de sistema operacional se forem necessárias depois que o banco de dados for desanexado.

Desanexar

Não

Conta de serviço (MSSQLSERVER) do SQL Server e membros do grupo de administradores locais do Windows.

Anexar

Sim

Conta de serviço (MSSQLSERVER) do SQL Server e membros do grupo de administradores locais do Windows.

Anexar

Não

Conta de serviço (MSSQLSERVER) do SQL Server.

Cenário

O cenário a seguir demonstra as permissões definidas quando um banco de dados é criado e modificadas quando o banco de dados é desanexado e anexado.

User1, um membro da função de servidor fixa dbcreator, cria o banco de dados Vendas que tem arquivos e:\Data\Sales.mdf e f:\Log\Sales.ldf. No momento que o banco de dados é criado, a conta de serviço MSSQLSERVER é SQLServiceAccount2, uma conta local. As permissões Controle Total no banco de dados e arquivos de log são concedidas a SQLServiceAccount2 e aos membros do grupo de administradores do Windows.

Decide-se mover o banco de dados Vendas para outra instância do SQL Server no mesmo servidor. Admin3, um membro da função de servidor fixa sysadmin, desanexa o banco de dados. O Mecanismo de Banco de Dados define as permissões nos arquivos Sales.mdf e Sales.ldf para que apenas a conta Admin3 tenha permissões para acessar os arquivos.

Admin3 se conecta à outra instância de SQL Server, SalesServer. A conta de serviço MSSQLSERVER da instância SalesServer é SQLSalesServiceAccount. Admin3, um administrador do SQL Server nesta instância, anexa o banco de dados Vendas. As permissões Controle Total são concedidas a SQLSalesServiceAccount e aos membros do grupo de administradores do Windows.