Editado 2 meses atrás por ExtremeHow Equipe Editorial
Microsoft SQL ServerSegurançaConfiguraçãoBanco de DadosJanelasLinuxTIGerenciamento de UsuáriosAutenticaçãoServidor
Tradução atualizada 2 meses atrás
O Microsoft SQL Server é um sistema de gerenciamento de banco de dados popular que permite o armazenamento, recuperação e processamento de dados. No entanto, assim como qualquer sistema que gerencia dados sensíveis, a segurança é extremamente importante. O propósito de configurar a segurança é proteger os dados de acesso não autorizado e garantir que apenas as pessoas certas tenham autoridade para gerenciar os dados. Este artigo fornece um guia abrangente sobre como configurar a segurança no Microsoft SQL Server.
O modelo de segurança no SQL Server é baseado em uma combinação de contas de login, usuários e funções. Esses elementos trabalham juntos para garantir que apenas usuários autorizados possam acessar o banco de dados e executar certas operações. Vamos dar uma olhada mais detalhada em cada um desses elementos.
Um login é uma conta usada para conectar-se a uma instância do SQL Server. O SQL Server suporta vários tipos de logins, incluindo autenticação do SQL Server e autenticação do Windows. A autenticação do Windows é geralmente preferida porque integra-se ao modelo de segurança do Windows e é considerada mais segura.
Para criar um novo login, siga estas etapas:
use master; CREATE LOGIN [TestLogin] WITH PASSWORD='YourStrongPassword123';
Neste exemplo, é criado um novo login autenticado pelo SQL Server chamado TestLogin. Sempre use uma senha forte para seu login.
Depois que um login é criado para uma instância, você pode criar um usuário em cada banco de dados específico ao qual esse login pode acessar. Um usuário no banco de dados está associado ao login, e essa associação permite que o usuário seja autenticado ao acessar o banco de dados.
Para criar um usuário de banco de dados para o login que criamos anteriormente, use o seguinte comando:
use your database; CREATE USER [TestUser] FOR LOGIN [TestLogin];
Este comando cria um usuário associado ao login TestLogin no banco de dados especificado (YourDatabase).
Funções são uma coleção de permissões que você pode atribuir a um usuário ou a um grupo de usuários. Elas fornecem uma maneira simples de gerenciar permissões agrupando-as em uma função e, em seguida, atribuindo usuários a essa função.
O SQL Server fornece funções de servidor fixas e funções de banco de dados fixas. Funções de servidor fixas se aplicam a toda a instância do SQL Server, enquanto funções de banco de dados fixas se aplicam apenas a um banco de dados específico.
Aqui está como você pode adicionar um usuário a uma determinada função de banco de dados:
use your database; EXECUTE sp_addrolemember 'db_datareader', 'TestUser';
Este comando adiciona o TestUser à função db_datareader, concedendo ao usuário permissão para ler todos os dados dentro do banco de dados especificado.
Permissões são direitos de realizar certas ações em recursos do SQL Server, como tabelas, visualizações ou procedimentos armazenados. O SQL Server fornece um conjunto amplo de permissões, e você pode conceder ou negar permissões a logins ou usuários com base em suas necessidades de segurança.
Suponha que você queira permitir que um usuário insira dados em uma tabela específica. Você pode executar o seguinte comando:
use your database; GRANT INSERT ON [YourTable] TO TestUser;
Este comando permite que TestUser insira dados na tabela especificada (YourTable) em YourDatabase.
O SQL Server fornece recursos de criptografia para proteger dados sensíveis armazenados, transmitidos ou trocados entre instâncias do SQL Server e aplicações. Isso inclui suporte para Criptografia de Dados Transparente (TDE) e Always Encrypted.
TDE ajuda a manter os dados seguros porque criptografa os dados, o que significa que os arquivos físicos no disco também estão criptografados. No entanto, os dados ainda aparecem como texto simples para aplicações conectadas ao banco de dados.
Para implementar TDE em um banco de dados, siga estas etapas:
use master; Create master key encryption by password = 'YourStrongPassword123'; CREATE CERTIFICATE EncryptCert WITH SUBJECT = 'Database Encryption Certificate'; use your database; Create database encryption key with algorithm = AES_256 Encryption by server certificate EncryptCert; ALTER DATABASE YourDatabase SET ENCRYPTION ON;
Esta série de comandos configura a criptografia de banco de dados para YourDatabase usando um certificado.
Always Encrypted é projetado para proteger dados sensíveis dentro de um banco de dados SQL Server. Apenas aplicações clientes que possuem as chaves de criptografia podem acessar dados em texto simples. A criptografia ocorre no nível do cliente, de modo que o SQL Server nunca vê valores não criptografados.
Configurar o Always Encrypted requer o uso de uma chave mestre de coluna e uma chave de criptografia de coluna. A chave mestre de coluna é armazenada fora do SQL Server, enquanto a chave de criptografia de coluna é armazenada no SQL Server e é usada para criptografar colunas sensíveis.
Normalmente, configurar isso requer a configuração das chaves de criptografia e o uso do SQL Server Management Studio (SSMS) ou um script PowerShell para alterar as colunas da tabela para usar criptografia.
A auditoria no SQL Server é uma parte integral da segurança, pois ajuda a rastrear e registrar eventos que ocorrem no sistema. Você pode auditar eventos no nível do servidor ou no nível do banco de dados, e o SQL Server fornece objetos de auditoria integrados para facilitar essas atividades.
Aqui está um exemplo básico de criação de uma auditoria e associá-la a um objeto no nível do servidor:
Create a server audit ServerAudit in file(filepath = 'C:\AuditFiles\'); Change server audit ServerAudit with (status = on); Create a server audit specification ServerAuditSpec ServerAudit for server audits add(failed_login_group); Change server audit specification ServerAuditSpec with (status = on);
Este script cria uma auditoria que registra tentativas de login falhas e envia o log para o local de arquivo especificado.
O SQL Server suporta várias políticas de segurança que ajudam a automatizar e gerenciar práticas de segurança. Algumas políticas de segurança notáveis incluem Segurança de Nível de Linha (RLS) e Mascaramento de Dados Dinâmico (DDM).
RLS permite a implementação de controle de acesso granular sobre linhas em uma tabela. Isso garante que os usuários têm acesso apenas às linhas para as quais têm autorização.
Você pode criar RLS definindo funções de predicado e políticas de segurança. A função de predicado define a lógica usada para filtrar linhas.
CREATE FUNCTION dbo.fn_securitypredicate (@UserName AS sysname) Returns Table With SchemaBinding As select return 1 as result where @username = USER_NAME(); Create a security policy SecurityPolicy ADD FILTER PREDICATE dbo.fn_securitypredicate(username) on your table with (status = on);
Este exemplo filtra o acesso à YourTable com base no nome de usuário.
DDM é um recurso embutido no SQL Server que promove o processo de ocultar dados sensíveis ao apresentá-los a usuários não autorizados. Os dados são armazenados de forma completa, mas são ocultados ou anonimizados quando recuperados.
Aqui está um exemplo de configuração do DDM em uma tabela:
ALTER TABLE YourTable ALTER COLUMN SensitiveColumn ADD MASKED WITH (FUNCTION = 'partial(2,"*",0)');
Isso mascara a coluna SensitiveColumn usando a função de máscara parcial, deixando as duas primeiras letras visíveis e o restante das letras mascarado.
Configurar a segurança no Microsoft SQL Server envolve várias etapas, desde a configuração de logins, usuários e funções até a implementação de estratégias de criptografia, auditoria e políticas de segurança. Compreender as diversas ferramentas e estratégias à sua disposição permitirá que você crie uma forte arquitetura de segurança para sua instância do SQL Server. Revisões e atualizações regulares de sua configuração garantem que a segurança do SQL Server acompanhe as ameaças emergentes.
Se você encontrar algo errado com o conteúdo do artigo, você pode