Playbook para abordar requisitos de segurança comuns com o Banco de Dados SQL do Azure e a Instância Gerenciada SQL do Azure
Aplica-se a:Banco de Dados SQL do Azure Instância Gerenciada SQLdo Azure
Este artigo fornece práticas recomendadas sobre como resolver requisitos comuns de segurança. Nem todos os requisitos são aplicáveis a todos os ambientes, e você deve consultar seu banco de dados e equipe de segurança sobre quais recursos implementar.
Nota
Microsoft Entra ID é o novo nome para o Azure Ative Directory (Azure AD). Estamos atualizando a documentação neste momento.
Resolver requisitos comuns de segurança
Este documento fornece orientação sobre como resolver requisitos de segurança comuns para aplicativos novos ou existentes usando o Banco de Dados SQL do Azure e a Instância Gerenciada SQL do Azure. É organizado por áreas de segurança de alto nível. Para lidar com ameaças específicas, consulte a seção Ameaças comuns à segurança e possíveis atenuações . Embora algumas das recomendações apresentadas sejam aplicáveis ao migrar aplicativos do local para o Azure, os cenários de migração não são o foco deste documento.
Ofertas de implantação do Banco de Dados SQL do Azure abordadas neste guia
- Banco de Dados SQL do Azure: bancos de dados únicos e pools elásticos em servidores
- Instância Gerida do SQL no Azure
Ofertas de implantação não abordadas neste guia
- Azure Synapse Analytics
- Azure SQL VMs (IaaS)
- SQL Server
Audiência
Os públicos-alvo deste guia são clientes que enfrentam dúvidas sobre como proteger o Banco de Dados SQL do Azure. As funções interessadas neste artigo de práticas recomendadas incluem, mas não estão limitadas a:
- Arquitetos de Segurança
- Gestores de Segurança
- Responsáveis pela conformidade
- Responsáveis pela privacidade
- Engenheiros de Segurança
Como utilizar este guia
Este documento destina-se a complementar a nossa documentação de segurança existente da Base de Dados SQL do Azure.
Salvo indicação em contrário, recomendamos que siga todas as práticas recomendadas listadas em cada secção para atingir o respetivo objetivo ou requisito. Para atender a padrões específicos de conformidade de segurança ou práticas recomendadas, importantes controles de conformidade regulatória são listados na seção Requisitos ou metas, sempre que aplicável. Estas são as normas e regulamentos de segurança que são referenciados neste artigo:
- FedRAMP: AC-04, AC-06
- SOC: CM-3, SDL-3
- ISO/IEC 27001: Controle de acesso, criptografia
- Práticas do Microsoft Operational Security Assurance (OSA): Prática #1-6 e #9
- Publicação Especial NIST 800-53 Controlos de Segurança: AC-5, AC-6
- PCI DSS: 6.3.2, 6.4.2
Pretendemos continuar a atualizar as recomendações e as melhores práticas listadas aqui. Forneça informações ou quaisquer correções para este documento usando o link Comentários na parte inferior deste artigo.
Autenticação
A autenticação é o processo de provar que o utilizador é quem diz ser. A Base de Dados SQL do Azure e a Instância Gerida SQL suportam dois tipos de autenticação:
- Autenticação do SQL
- Autenticação do Microsoft Entra
Nota
A autenticação do Microsoft Entra pode não ser suportada para todas as ferramentas e aplicativos de terceiros.
Gerenciamento central de identidades
O gerenciamento central de identidades oferece os seguintes benefícios:
- Gerencie contas de grupo e controle as permissões do usuário sem duplicar logins entre servidores, bancos de dados e instâncias gerenciadas.
- Gestão de permissões simplificada e flexível.
- Gestão de aplicações em escala.
Como implementar
- Use a autenticação do Microsoft Entra para gerenciamento centralizado de identidades.
Melhores práticas
Crie um locatário do Microsoft Entra e crie usuários para representar usuários humanos e crie entidades de serviço para representar aplicativos, serviços e ferramentas de automação. As entidades de serviço são equivalentes às contas de serviço no Windows e Linux.
Atribua direitos de acesso a recursos a entidades do Microsoft Entra por meio de atribuição de grupo: crie grupos do Microsoft Entra, conceda acesso a grupos e adicione membros individuais aos grupos. Em seu banco de dados, crie usuários de banco de dados contidos que mapeiam para seus grupos do Microsoft Entra. Para atribuir permissões dentro do banco de dados, adicione os usuários de banco de dados contidos que representam seus grupos a funções de banco de dados ou conceda permissões a eles diretamente.
- Consulte os artigos, Configurar e gerenciar a autenticação do Microsoft Entra com SQL e Usar a autenticação do Microsoft Entra com SQL.
Nota
Na Instância Gerenciada SQL, você também pode criar logons que mapeiam para entidades do Microsoft Entra no
master
banco de dados. Consulte CREATE LOGIN (Transact-SQL).Usar grupos do Microsoft Entra simplifica o gerenciamento de permissões e tanto o proprietário do grupo quanto o proprietário do recurso podem adicionar/remover membros de/para o grupo.
Crie um grupo separado para administradores do Microsoft Entra para cada servidor ou instância gerenciada.
- Consulte o artigo Provisionar um administrador do Microsoft Entra para seu servidor.
Monitore as alterações de associação ao grupo do Microsoft Entra usando relatórios de atividade de auditoria do Microsoft Entra ID.
Para uma instância gerenciada, uma etapa separada é necessária para criar um administrador do Microsoft Entra.
- Consulte o artigo Provisionar um administrador do Microsoft Entra para sua instância gerenciada.
Nota
- A autenticação do Microsoft Entra é registrada nos logs de auditoria SQL do Azure, mas não nos logs de entrada do Microsoft Entra.
- As permissões do Azure RBAC concedidas no Azure não se aplicam às permissões do Banco de Dados SQL do Azure ou da Instância Gerenciada do SQL. Essas permissões devem ser criadas/mapeadas manualmente usando permissões SQL existentes.
- No lado do cliente, a autenticação do Microsoft Entra precisa de acesso à Internet ou via UDR (User Defined Route) para uma rede virtual.
- O token de acesso do Microsoft Entra é armazenado em cache no lado do cliente e seu tempo de vida depende da configuração do token. Consulte o artigo, Tempos de vida de token configuráveis no Microsoft Entra ID
- Para obter orientação sobre como solucionar problemas de autenticação do Microsoft Entra, consulte o seguinte blog: Solucionando problemas do Microsoft Entra ID.
Autenticação multifator Microsoft Entra
Mencionado em: OSA Practice #2, ISO Access Control (AC)
A autenticação multifator Microsoft Entra ajuda a fornecer segurança adicional ao exigir mais de uma forma de autenticação.
Como implementar
Habilite a autenticação multifator no Microsoft Entra ID usando o Acesso Condicional e use a autenticação interativa.
A alternativa é habilitar a autenticação multifator para todo o locatário do Microsoft Entra ou domínio do Ative Directory.
Melhores práticas
Ative o Acesso Condicional no Microsoft Entra ID (requer assinatura Premium).
- Consulte o artigo Acesso condicional no Microsoft Entra ID.
Crie grupos(s) do Microsoft Entra e habilite a política de autenticação multifator para grupos selecionados usando o Acesso Condicional do Microsoft Entra.
- Consulte o artigo, Plan Conditional Access Deployment.
A autenticação multifator pode ser habilitada para todo o locatário do Microsoft Entra ou para o Ative Directory federado com o Microsoft Entra ID.
Use o modo de autenticação interativa do Microsoft Entra para o Banco de Dados SQL do Azure e a Instância Gerenciada SQL do Azure, onde uma senha é solicitada interativamente, seguida pela autenticação multifator:
- Use a autenticação universal no SSMS. Consulte o artigo, Usando a autenticação multifator do Microsoft Entra com o Banco de Dados SQL do Azure, Instância Gerenciada do SQL, Sinapse do Azure (suporte do SSMS para autenticação multifator).
- Use a autenticação interativa com suporte no SSDT (SQL Server Data Tools). Consulte o artigo Suporte ao Microsoft Entra ID no SSDT (SQL Server Data Tools).
- Use outras ferramentas SQL que oferecem suporte à autenticação multifator.
- Suporte do Assistente do SSMS para exportar/extrair/implantar banco de dados
- SqlPackage: opção '/ua'
- Utilitário sqlcmd: opção -G (interativo)
- bcp Utility: opção -G (interativo)
Implemente seus aplicativos para se conectar ao Banco de Dados SQL do Azure ou à Instância Gerenciada SQL do Azure usando autenticação interativa com suporte à autenticação multifator.
- Consulte o artigo Conectar-se ao Banco de Dados SQL do Azure com a autenticação multifator do Microsoft Entra.
Nota
Esse modo de autenticação requer identidades baseadas no usuário. Nos casos em que é usado um modelo de identidade confiável que ignora a autenticação de usuário individual do Microsoft Entra (por exemplo, usando identidade gerenciada para recursos do Azure), a autenticação multifator não se aplica.
Minimizar o uso de autenticação baseada em senha para usuários
Mencionado em: OSA Practice #4, ISO Access Control (AC)
Os métodos de autenticação baseados em senha são uma forma mais fraca de autenticação. As credenciais podem ser comprometidas ou entregues por engano.
Como implementar
- Use a autenticação integrada Microsoft Entra que elimina o uso de senhas.
Melhores práticas
- Use a autenticação de logon único usando credenciais do Windows. Federar o domínio do Ative Directory local com o Microsoft Entra ID e usar a autenticação integrada do Windows (para máquinas ingressadas no domínio com o Microsoft Entra ID).
- Consulte o artigo, Suporte do SSMS para autenticação integrada do Microsoft Entra.
Minimizar o uso de autenticação baseada em senha para aplicativos
Mencionado em: OSA Practice #4, ISO Access Control (AC)
Como implementar
- Habilite o Azure Managed Identity. Você também pode usar a autenticação integrada ou baseada em certificado.
Melhores práticas
Use identidades gerenciadas para recursos do Azure.
Use a autenticação baseada em certificado para um aplicativo.
- Consulte este exemplo de código.
Use a autenticação do Microsoft Entra para domínio federado integrado e máquina associada ao domínio (consulte a seção acima).
- Consulte o aplicativo de exemplo para autenticação integrada.
Proteja palavras-passe e segredos
Para os casos em que as palavras-passe não são evitáveis, certifique-se de que estão protegidas.
Como implementar
- Use o Cofre da Chave do Azure para armazenar senhas e segredos. Sempre que aplicável, use a autenticação multifator para o Banco de Dados SQL do Azure com usuários do Microsoft Entra.
Melhores práticas
Se não for possível evitar palavras-passe ou segredos, armazene palavras-passe de utilizador e segredos de aplicações no Cofre de Chaves do Azure e faça a gestão do acesso através das políticas de acesso do Cofre de Chaves.
Várias estruturas de desenvolvimento de aplicativos também podem oferecer mecanismos específicos para proteger segredos no aplicativo. Por exemplo: ASP.NET aplicativo principal.
Usar a autenticação SQL para aplicativos herdados
A autenticação SQL refere-se à autenticação de um usuário ao se conectar ao Banco de Dados SQL do Azure ou à Instância Gerenciada do SQL usando nome de usuário e senha. Será necessário criar um login em cada servidor ou instância gerenciada e um usuário em cada banco de dados.
Como implementar
- Use a autenticação SQL.
Melhores práticas
Como administrador de servidor ou instância, crie logins e usuários. A menos que use usuários de banco de dados contidos com senhas, todas as senhas são armazenadas no
master
banco de dados.
Gestão de acesso
O gerenciamento de acesso (também chamado de Autorização) é o processo de controlar e gerenciar o acesso e os privilégios dos usuários autorizados ao Banco de Dados SQL do Azure ou à Instância Gerenciada do SQL.
Implementar o princípio do menor privilégio
Mencionado em: FedRamp controla AC-06, NIST: AC-6, OSA Practice #3
O princípio do menor privilégio afirma que os usuários não devem ter mais privilégios do que o necessário para concluir suas tarefas. Para obter mais informações, consulte o artigo Administração suficiente.
Como implementar
Atribua apenas as permissões necessárias para concluir as tarefas necessárias:
Em bancos de dados SQL:
- Use permissões granulares e funções de banco de dados definidas pelo usuário (ou funções de servidor na Instância Gerenciada SQL):
- Criar as funções necessárias
- Criar usuários necessários
- Adicionar usuários como membros a funções
- Em seguida, atribua permissões a funções.
- Certifique-se de não atribuir usuários a funções desnecessárias.
- Use permissões granulares e funções de banco de dados definidas pelo usuário (ou funções de servidor na Instância Gerenciada SQL):
No Azure Resource Manager:
- Use funções internas, se disponíveis, ou funções personalizadas do Azure e atribua as permissões necessárias.
Melhores práticas
As seguintes práticas recomendadas são opcionais, mas resultarão em melhor capacidade de gerenciamento e suporte da sua estratégia de segurança:
Se possível, comece com o menor conjunto possível de permissões e comece a adicionar permissões uma a uma se houver uma necessidade real (e justificativa) – em oposição à abordagem oposta: tirar as permissões passo a passo.
Abster-se de atribuir permissões a usuários individuais. Em vez disso, use funções (funções de banco de dados ou de servidor) de forma consistente. As funções ajudam muito com permissões de geração de relatórios e solução de problemas. (O RBAC do Azure só dá suporte à atribuição de permissões por meio de funções.)
Crie e use funções personalizadas com as permissões exatas necessárias. Funções típicas que são usadas na prática:
- Implantação de segurança
- Administrador
- Programador
- Pessoal de apoio
- Auditor
- Processos automatizados
- Utilizador final
Use funções internas somente quando as permissões das funções corresponderem exatamente às permissões necessárias para o usuário. Você pode atribuir usuários a várias funções.
Lembre-se de que as permissões no mecanismo de banco de dados podem ser aplicadas dentro dos seguintes escopos (quanto menor o escopo, menor o impacto das permissões concedidas):
- Servidor (funções especiais no
master
banco de dados) no Azure - Base de dados
- Esquema
- É uma prática recomendada usar esquemas para conceder permissões dentro de um banco de dados.
- Objeto (tabela, exibição, procedimento e assim por diante)
Nota
Não é recomendável aplicar permissões no nível do objeto porque esse nível adiciona complexidade desnecessária à implementação geral. Se você decidir usar permissões no nível do objeto, elas deverão ser claramente documentadas. O mesmo se aplica às permissões em nível de coluna, que são ainda menos recomendáveis pelos mesmos motivos. Lembre-se também de que, por padrão, um DENY no nível da tabela não substitui um GRANT no nível da coluna. Isso exigiria que a configuração do servidor de conformidade de critérios comuns fosse ativada.
- Servidor (funções especiais no
Execute verificações regulares usando a Avaliação de Vulnerabilidade (VA) para testar muitas permissões.
Implementar a separação de funções
Mencionado em: FedRamp: AC-04, NIST: AC-5, ISO: A.6.1.2, PCI 6.4.2, SOC: CM-3, SDL-3
A Separação de Funções, também chamada de Segregação de Funções, descreve o requisito de dividir tarefas sensíveis em várias tarefas que são atribuídas a diferentes usuários. A separação de funções ajuda a evitar violações de dados.
Como implementar
Identificar o nível necessário de Separação de Funções. Exemplos:
- Entre ambientes de desenvolvimento/teste e produção
- Tarefas sensíveis em termos de segurança vs tarefas de nível de gerenciamento DBA (Database Administrator) vs tarefas de desenvolvedor.
- Exemplos: Auditor, criação de política de segurança para Segurança em Nível de Função (RLS), Implementação de objetos do Banco de Dados SQL com permissões DDL.
Identificar uma hierarquia abrangente de usuários (e processos automatizados) que acessam o sistema.
Crie funções de acordo com os grupos de usuários necessários e atribua permissões a funções.
- Para tarefas de nível de gerenciamento no portal do Azure ou por meio da automação do PowerShell, use as funções do Azure. Encontre uma função interna correspondente ao requisito ou crie uma função personalizada do Azure usando as permissões disponíveis
- Crie funções de servidor para tarefas em todo o servidor (criação de novos logins, bancos de dados) em uma instância gerenciada.
- Crie funções de banco de dados para tarefas no nível de banco de dados.
Para determinadas tarefas confidenciais, considere a criação de procedimentos armazenados especiais assinados por um certificado para executar as tarefas em nome dos usuários. Uma vantagem importante dos procedimentos armazenados assinados digitalmente é que, se o procedimento for alterado, as permissões concedidas à versão anterior do procedimento serão imediatamente removidas.
- Exemplo: Tutorial: Assinando procedimentos armazenados com um certificado
Implemente a Criptografia de Dados Transparente (TDE) com chaves gerenciadas pelo cliente no Cofre de Chaves do Azure para habilitar a Separação de Funções entre o proprietário dos dados e o proprietário da segurança.
Para garantir que um DBA não possa ver dados considerados altamente confidenciais e ainda possa executar tarefas de DBA, você pode usar Always Encrypted com separação de funções.
- Consulte os artigos, Visão geral do gerenciamento de chaves para sempre criptografado, Provisionamento de chaves com separação de funções e Rotação de chaves mestras de coluna com separação de funções.
Nos casos em que o uso do Always Encrypted não é viável, ou pelo menos não sem grandes custos e esforços que podem até tornar o sistema quase inutilizável, compromissos podem ser feitos e mitigados através do uso de controles compensadores, tais como:
- Intervenção humana em processos.
- Trilhas de auditoria – para obter mais informações sobre auditoria, consulte Auditar eventos críticos de segurança.
Melhores práticas
Certifique-se de que contas diferentes sejam usadas para ambientes de desenvolvimento/teste e produção. Contas diferentes ajudam a cumprir a separação dos sistemas de teste e produção.
Abster-se de atribuir permissões a usuários individuais. Em vez disso, use funções (funções de banco de dados ou de servidor) de forma consistente. Ter funções ajuda muito com permissões de relatórios e solução de problemas.
Use funções internas quando as permissões corresponderem exatamente às permissões necessárias – se a união de todas as permissões de várias funções internas levar a uma correspondência de 100%, você também poderá atribuir várias funções simultaneamente.
Crie e use funções definidas pelo usuário quando as funções internas concederem muitas permissões ou permissões insuficientes.
As atribuições de função também podem ser feitas temporariamente, também conhecidas como DSD (Separação Dinâmica de Funções), dentro das etapas de Trabalho do SQL Agent no T-SQL ou usando o Azure PIM para funções do Azure.
Certifique-se de que os DBAs não tenham acesso às chaves de criptografia ou armazenamentos de chaves e que os administradores de segurança com acesso às chaves não tenham acesso ao banco de dados por sua vez. A utilização da Gestão Extensível de Chaves (EKM) pode tornar esta separação mais fácil de alcançar. O Azure Key Vault pode ser usado para implementar o EKM.
Certifique-se sempre de ter uma trilha de auditoria para ações relacionadas à segurança.
Você pode recuperar a definição das funções internas do Azure para ver as permissões usadas e criar uma função personalizada com base em trechos e acumulações dessas por meio do PowerShell.
Como qualquer membro da função de banco de dados db_owner pode alterar configurações de segurança, como TDE (Transparent Data Encryption), ou alterar o SLO, essa associação deve ser concedida com cuidado. No entanto, há muitas tarefas que exigem privilégios de db_owner. Tarefa como alterar qualquer configuração de banco de dados, como alterar opções de banco de dados. A auditoria desempenha um papel fundamental em qualquer solução.
Não é possível restringir as permissões de um db_owner e, portanto, impedir que uma conta administrativa visualize os dados do usuário. Se houver dados altamente confidenciais em um banco de dados, o Always Encrypted pode ser usado para impedir com segurança que db_owners ou qualquer outro DBA os visualize.
Nota
Alcançar a Separação de Funções (SoD) é um desafio para tarefas relacionadas à segurança ou solução de problemas. Outras áreas, como desenvolvimento e funções de usuário final, são mais fáceis de segregar. A maioria dos controles relacionados à conformidade permite o uso de funções de controle alternativas, como auditoria, quando outras soluções não são práticas.
Para os leitores que desejam se aprofundar no SoD, recomendamos os seguintes recursos:
Para o Banco de Dados SQL do Azure e a Instância Gerenciada do SQL:
Para o Azure Resource Management:
Realizar revisões regulares de código
Mencionado em: PCI: 6.3.2, SOC: SDL-3
A separação de funções não se limita aos dados de uma base de dados, mas inclui o código da aplicação. O código malicioso pode potencialmente contornar os controlos de segurança. Antes de implantar o código personalizado na produção, é essencial revisar o que está sendo implantado.
Como implementar
Use uma ferramenta de banco de dados como o Azure Data Studio que dá suporte ao controle do código-fonte.
Implemente um processo de implantação de código segregado.
Antes de se comprometer com a ramificação principal, uma pessoa (que não seja o próprio autor do código) tem que inspecionar o código quanto a possíveis riscos de elevação de privilégios, bem como modificações de dados mal-intencionados para proteger contra fraudes e acesso não autorizado. Isso pode ser feito usando mecanismos de controle do código-fonte.
Melhores práticas
Padronização: Ajuda a implementar um procedimento padrão que deve ser seguido para quaisquer atualizações de código.
A Avaliação de Vulnerabilidade contém regras que verificam permissões excessivas, o uso de algoritmos de criptografia antigos e outros problemas de segurança em um esquema de banco de dados.
Verificações adicionais podem ser feitas em um ambiente de controle de qualidade ou teste usando a Proteção Avançada contra Ameaças que verifica se há código vulnerável à injeção de SQL.
Exemplos do que procurar:
- Criação de um usuário ou alteração de configurações de segurança a partir de uma implantação automatizada de atualização de código SQL.
- Um procedimento armazenado que, dependendo dos parâmetros fornecidos, atualiza um valor monetário em uma célula de forma não conforme.
Certifique-se de que a pessoa que conduz a revisão é um indivíduo diferente do autor do código de origem e conhecedor de revisões de código e codificação segura.
Certifique-se de conhecer todas as fontes de alterações de código. O código pode estar em scripts T-SQL. Pode ser comandos ad hoc a serem executados ou implantados em formas de Exibições, Funções, Gatilhos e Procedimentos Armazenados. Ele pode fazer parte das definições de trabalho do SQL Agent (Etapas). Também pode ser executado a partir de pacotes SSIS, Azure Data Factory e outros serviços.
Proteção de dados
A proteção de dados é um conjunto de recursos para proteger informações importantes contra comprometimento por criptografia ou ofuscação.
Nota
A Microsoft atesta o Banco de Dados SQL do Azure e a Instância Gerenciada SQL como sendo compatíveis com FIPS 140-2 Nível 1. Isso é feito depois de verificar o uso estrito de algoritmos aceitáveis FIPS 140-2 Nível 1 e instâncias validadas FIPS 140-2 Nível 1 desses algoritmos, incluindo consistência com comprimentos de chave necessários, gerenciamento de chaves, geração de chaves e armazenamento de chaves. Este atestado destina-se a permitir que nossos clientes respondam à necessidade ou exigência do uso de instâncias validadas FIPS 140-2 Nível 1 no processamento de dados ou entrega de sistemas ou aplicativos. Definimos os termos "Conformidade com FIPS 140-2 Nível 1" e "Conformidade com FIPS 140-2 Nível 1" usados na declaração acima para demonstrar sua aplicabilidade pretendida ao uso pelo governo dos EUA e Canadá do termo diferente "FIPS 140-2 Nível 1 validado".
Criptografar dados em trânsito
Mencionado em: OSA Practice #6, ISO Control Family: Criptografia
Protege os seus dados enquanto os dados se movem entre o cliente e o servidor. Consulte Segurança de rede.
Encriptar dados inativos
Mencionado em: OSA Practice #6, ISO Control Family: Criptografia
A criptografia em repouso é a proteção criptográfica dos dados quando eles são persistentes em arquivos de banco de dados, log e backup.
Como implementar
- A criptografia de dados transparente (TDE) com chaves gerenciadas por serviço é habilitada por padrão para todos os bancos de dados criados após 2017 no Banco de Dados SQL do Azure e na Instância Gerenciada do SQL.
- Em uma instância gerenciada, se o banco de dados for criado a partir de uma operação de restauração usando um servidor local, a configuração TDE do banco de dados original será honrada. Se o banco de dados original não tiver o TDE habilitado, recomendamos que o TDE seja ativado manualmente para a instância gerenciada.
Melhores práticas
Não armazene dados que exijam criptografia em repouso no
master
banco de dados. Omaster
banco de dados não pode ser criptografado com TDE.Use chaves gerenciadas pelo cliente no Azure Key Vault se precisar de maior transparência e controle granular sobre a proteção TDE. O Azure Key Vault permite a capacidade de revogar permissões a qualquer momento para tornar o banco de dados inacessível. Você pode gerenciar centralmente os protetores TDE juntamente com outras chaves ou girar o protetor TDE em sua própria agenda usando o Azure Key Vault.
Se você estiver usando chaves gerenciadas pelo cliente no Cofre de Chaves do Azure, siga os artigos, Diretrizes para configurar o TDE com o Azure Key Vault e Como configurar o Geo-DR com o Azure Key Vault.
Nota
Alguns itens considerados conteúdo do cliente, como nomes de tabelas, nomes de objetos e nomes de índice, podem ser transmitidos em arquivos de log para suporte e solução de problemas pela Microsoft.
Proteja dados confidenciais em uso de usuários não autorizados com privilégios elevados
Dados em uso são os dados armazenados na memória do sistema de banco de dados durante a execução de consultas SQL. Se o banco de dados armazenar dados confidenciais, sua organização poderá ser obrigada a garantir que usuários com privilégios elevados sejam impedidos de exibir dados confidenciais no banco de dados. Usuários de alto privilégio, como operadores da Microsoft ou DBAs em sua organização, devem ser capazes de gerenciar o banco de dados, mas impedidos de exibir e potencialmente exfiltrar dados confidenciais da memória do processo SQL ou consultando o banco de dados.
As políticas que determinam quais dados são confidenciais e se os dados confidenciais devem ser criptografados na memória e não acessíveis aos administradores em texto sem formatação são específicas da sua organização e das regulamentações de conformidade às quais você precisa aderir. Consulte o requisito relacionado: Identificar e marcar dados confidenciais.
Como implementar
- Use Sempre Criptografado para garantir que dados confidenciais não sejam expostos em texto sem formatação no Banco de Dados SQL do Azure ou na Instância Gerenciada do SQL, mesmo na memória/em uso. O Always Encrypted protege os dados de administradores de banco de dados (DBAs) e administradores de nuvem (ou agentes mal-intencionados que podem se passar por usuários altamente privilegiados, mas não autorizados) e oferece mais controle sobre quem pode acessar seus dados.
Melhores práticas
Always Encrypted não é um substituto para criptografar dados em repouso (TDE) ou em trânsito (SSL/TLS). O Always Encrypted não deve ser usado para dados não confidenciais para minimizar o impacto no desempenho e na funcionalidade. O uso do Always Encrypted em conjunto com TDE e Transport Layer Security (TLS) é recomendado para proteção abrangente de dados em repouso, em trânsito e em uso.
Avalie o impacto da criptografia das colunas de dados confidenciais identificadas antes de implantar o Always Encrypted em um banco de dados de produção. Em geral, Always Encrypted reduz a funcionalidade de consultas em colunas criptografadas e tem outras limitações, listadas em Always Encrypted - Feature Details. Portanto, talvez seja necessário rearquitetar seu aplicativo para reimplementar a funcionalidade, uma consulta não suporta, no lado do cliente e/ou refatorar seu esquema de banco de dados, incluindo as definições de procedimentos armazenados, funções, exibições e gatilhos. Os aplicativos existentes podem não funcionar com colunas criptografadas se não aderirem às restrições e limitações do Always Encrypted. Embora o ecossistema de ferramentas, produtos e serviços da Microsoft que suportam o Always Encrypted esteja crescendo, vários deles não funcionam com colunas criptografadas. A criptografia de uma coluna também pode afetar o desempenho da consulta, dependendo das características da sua carga de trabalho.
Gerencie chaves Always Encrypted com separação de funções se estiver usando Always Encrypted para proteger dados de DBAs mal-intencionados. Com a separação de funções, um administrador de segurança cria as chaves físicas. O DBA cria a chave mestra de coluna e os objetos de metadados da chave de criptografia de coluna descrevendo as chaves físicas no banco de dados. Durante esse processo, o administrador de segurança não precisa acessar o banco de dados e o DBA não precisa acessar as chaves físicas em texto sem formatação.
- Consulte o artigo Gerenciando chaves com separação de funções para obter detalhes.
Armazene suas chaves mestras de coluna no Cofre de Chaves do Azure para facilitar o gerenciamento. Evite usar o Repositório de Certificados do Windows (e, em geral, soluções de armazenamento de chaves distribuídas, em oposição às soluções de gerenciamento central de chaves) que dificultam o gerenciamento de chaves.
Pense cuidadosamente nas compensações de usar várias chaves (chave mestra de coluna ou chaves de criptografia de coluna). Mantenha o número de chaves pequeno para reduzir o custo de gerenciamento de chaves. Uma chave mestra de coluna e uma chave de criptografia de coluna por banco de dados normalmente são suficientes em ambientes de estado estacionário (não no meio de uma rotação de chave). Você pode precisar de chaves adicionais se tiver grupos de usuários diferentes, cada um usando chaves diferentes e acessando dados diferentes.
Gire as chaves mestras de coluna de acordo com seus requisitos de conformidade. Se você também precisar girar chaves de criptografia de coluna, considere usar criptografia online para minimizar o tempo de inatividade do aplicativo.
- Consulte o artigo, Considerações sobre desempenho e disponibilidade.
Use criptografia determinística se os cálculos (igualdade) em dados precisarem ser suportados. Caso contrário, use criptografia aleatória. Evite usar criptografia determinística para conjuntos de dados de baixa entropia ou conjuntos de dados com distribuição conhecida publicamente.
Se estiver preocupado com o facto de terceiros acederem legalmente aos seus dados sem o seu consentimento, certifique-se de que todas as aplicações e ferramentas que têm acesso às chaves e aos dados em texto simples são executadas fora da Nuvem do Microsoft Azure. Sem acesso às chaves, o terceiro não terá como desencriptar os dados, a menos que ignore a encriptação.
O Always Encrypted não suporta facilmente a concessão de acesso temporário às chaves (e aos dados protegidos). Por exemplo, se você precisar compartilhar as chaves com um DBA para permitir que o DBA faça algumas operações de limpeza em dados confidenciais e criptografados. A única maneira de revogar de forma confiável o acesso aos dados do DBA será girar as chaves de criptografia de coluna e as chaves mestras de coluna que protegem os dados, o que é uma operação cara.
Para acessar os valores de texto sem formatação em colunas criptografadas, um usuário precisa ter acesso à Chave Mestra de Coluna (CMK) que protege as colunas, que é configurada no armazenamento de chaves que contém a CMK. O usuário também precisa ter as permissões de banco de dados VIEW ANY COLUMN MASTER KEY DEFINITION e VIEW ANY COLUMN ENCRYPTION KEY DEFINITION.
Controle o acesso dos usuários do aplicativo a dados confidenciais por meio de criptografia
A criptografia pode ser usada como uma maneira de garantir que apenas usuários específicos do aplicativo que tenham acesso a chaves criptográficas possam visualizar ou atualizar os dados.
Como implementar
- Use a criptografia no nível da célula (CLE). Consulte o artigo Criptografar uma coluna de dados para obter detalhes.
- Use Always Encrypted, mas esteja ciente de sua limitação. As limitações estão listadas abaixo.
Melhores práticas:
Ao utilizar o CLE:
Controle o acesso às chaves através de permissões e funções SQL.
Use AES (AES 256 recomendado) para criptografia de dados. Algoritmos, como RC4, DES e TripleDES, são preteridos e não devem ser usados devido a vulnerabilidades conhecidas.
Proteja chaves simétricas com chaves/certificados assimétricos (não senhas) para evitar o uso de 3DES.
Tenha cuidado ao migrar um banco de dados usando criptografia em nível de célula via exportação/importação (arquivos bacpac).
Lembre-se de que o Always Encrypted foi projetado principalmente para proteger dados confidenciais em uso de usuários de alto privilégio do Banco de Dados SQL do Azure (operadores de nuvem, DBAs) - consulte Proteger dados confidenciais em uso de usuários não autorizados com privilégios elevados. Esteja ciente dos seguintes desafios ao usar o Always Encrypted para proteger dados de usuários de aplicativos:
- Por padrão, todos os drivers de cliente Microsoft que suportam Always Encrypted mantêm um cache global (um por aplicativo) de chaves de criptografia de coluna. Depois que um driver de cliente adquire uma chave de criptografia de coluna de texto simples entrando em contato com um armazenamento de chaves que contém uma chave mestra de coluna, a chave de criptografia de coluna de texto sem formatação é armazenada em cache. Isso torna desafiador isolar dados de usuários de um aplicativo multiusuário. Se seu aplicativo representar usuários finais ao interagir com um armazenamento de chaves (como o Cofre de Chaves do Azure), depois que a consulta de um usuário preencher o cache com uma chave de criptografia de coluna, uma consulta subsequente que exija a mesma chave, mas seja acionada por outro usuário, usará a chave em cache. O driver não chamará o armazenamento de chaves e não verificará se o segundo usuário tem permissão para acessar a chave de criptografia de coluna. Como resultado, o usuário pode ver os dados criptografados mesmo que não tenha acesso às chaves. Para obter o isolamento de usuários em um aplicativo multiusuário, você pode desabilitar o cache de chave de criptografia de coluna. A desativação do cache causará despesas adicionais de desempenho, pois o driver precisará entrar em contato com o armazenamento de chaves para cada operação de criptografia ou descriptografia de dados.
Proteja os dados contra visualização não autorizada por usuários do aplicativo, preservando o formato dos dados
Outra técnica para impedir que usuários não autorizados visualizem dados é ofuscar ou mascarar os dados, preservando os tipos e formatos de dados para garantir que os aplicativos de usuário possam continuar manipulando e exibindo os dados.
Como implementar
- Use o mascaramento dinâmico de dados para ofuscar as colunas da tabela.
Nota
Always Encrypted não funciona com mascaramento dinâmico de dados. Não é possível criptografar e mascarar a mesma coluna, o que implica que você precisa priorizar a proteção dos dados em uso versus mascarar os dados para os usuários do seu aplicativo por meio do Dynamic Data Masking.
Melhores práticas
Nota
O mascaramento dinâmico de dados não pode ser usado para proteger dados de usuários de alto privilégio. As políticas de mascaramento não se aplicam a usuários com acesso administrativo, como db_owner.
Não permita que os usuários do aplicativo executem consultas ad hoc (pois eles podem contornar o Dynamic Data Masking).
- Consulte o artigo, Ignorando o mascaramento usando técnicas de inferência ou força bruta para obter detalhes.
Use uma política de controle de acesso adequada (por meio de permissões SQL, funções, RLS) para limitar as permissões do usuário para fazer atualizações nas colunas mascaradas. Criar uma máscara em uma coluna não impede atualizações para essa coluna. Os usuários que recebem dados mascarados ao consultar a coluna mascarada podem atualizar os dados se tiverem permissões de gravação.
O mascaramento dinâmico de dados não preserva as propriedades estatísticas dos valores mascarados. Isso pode afetar os resultados da consulta (por exemplo, consultas que contêm predicados de filtragem ou junções nos dados mascarados).
Segurança da rede
Segurança de rede refere-se a controles de acesso e práticas recomendadas para proteger seus dados em trânsito para o Banco de Dados SQL do Azure.
Configurar meu cliente para se conectar com segurança ao Banco de Dados SQL/Instância Gerenciada SQL
Práticas recomendadas sobre como impedir que máquinas cliente e aplicativos com vulnerabilidades conhecidas (por exemplo, usando protocolos TLS mais antigos e pacotes de codificação) se conectem ao Banco de Dados SQL do Azure e à Instância Gerenciada do SQL.
Como implementar
- Verifique se as máquinas cliente que se conectam ao Banco de Dados SQL do Azure e à Instância Gerenciada do SQL estão usando a versão mais recente do Transport Layer Security (TLS).
Melhores práticas
Imponha uma versão mínima do TLS no nível do servidor do Banco de dados SQL ou da instância gerenciada do SQL usando a configuração de versão mínima do TLS. Recomendamos definir a versão mínima do TLS como 1.2, após o teste, para confirmar se seus aplicativos a suportam. O TLS 1.2 inclui correções para vulnerabilidades encontradas em versões anteriores.
Configure todos os seus aplicativos e ferramentas para se conectar ao Banco de dados SQL com a criptografia habilitada
- Encrypt = On, TrustServerCertificate = Off (ou equivalente com drivers que não sejam da Microsoft).
Se o seu aplicativo usa um driver que não suporta TLS ou suporta uma versão mais antiga do TLS, substitua o driver, se possível. Se não for possível, avalie cuidadosamente os riscos de segurança.
- Reduza os vetores de ataque por meio de vulnerabilidades no SSL 2.0, SSL 3.0, TLS 1.0 e TLS 1.1 desabilitando-os em máquinas cliente que se conectam ao Banco de Dados SQL do Azure por configurações do Registro TLS (Transport Layer Security).
- Verifique os pacotes de codificação disponíveis no cliente: Cipher Suites em TLS/SSL (Schannel SSP). Especificamente, desative o 3DES por configuração do TLS Cipher Suite Order.
Minimizar a superfície de ataque
Minimize o número de recursos que podem ser atacados por um usuário mal-intencionado. Implemente controles de acesso à rede para o Banco de Dados SQL do Azure.
Mencionado em: OSA Practice #5
Como implementar
Na Base de Dados SQL:
- Definir Permitir acesso aos serviços do Azure como DESATIVADO no nível do servidor
- Use os pontos de extremidade do Serviço VNet e as Regras de Firewall da VNet.
- Use o Link Privado.
Na instância gerenciada do SQL:
- Siga as diretrizes em Requisitos de rede.
Melhores práticas
Restringindo o acesso ao Banco de Dados SQL do Azure e à Instância Gerenciada SQL conectando-se em um ponto de extremidade privado (por exemplo, usando um caminho de dados privado):
- Uma instância gerenciada pode ser isolada dentro de uma rede virtual para impedir o acesso externo. Aplicativos e ferramentas que estão na mesma rede virtual ou emparelhada na mesma região podem acessá-la diretamente. Aplicativos e ferramentas que estão em regiões diferentes podem usar conexão de rede virtual para rede virtual ou emparelhamento de circuito de Rota Expressa para estabelecer conexão. O cliente deve usar o NSG (Network Security Groups) para restringir o acesso pela porta 1433 apenas aos recursos que exigem acesso a uma instância gerenciada.
- Para um Banco de Dados SQL, use o recurso Link Privado que fornece um IP privado dedicado para o servidor dentro de sua rede virtual. Você também pode usar pontos de extremidade de serviço de rede virtual com regras de firewall de rede virtual para restringir o acesso aos servidores.
- Os usuários móveis devem usar conexões VPN ponto a site para se conectar pelo caminho de dados.
- Os usuários conectados à rede local devem usar a conexão VPN site a site ou a Rota Expressa para se conectar pelo caminho de dados.
Você pode acessar o Banco de Dados SQL do Azure e a Instância Gerenciada SQL conectando-se a um ponto de extremidade público (por exemplo, usando um caminho de dados público). Devem ser consideradas as seguintes boas práticas:
- Para um servidor no Banco de dados SQL, use regras de firewall IP para restringir o acesso apenas a endereços IP autorizados.
- Para Instância Gerenciada SQL, use NSG (Grupos de Segurança de Rede) para restringir o acesso pela porta 3342 apenas aos recursos necessários. Para obter mais informações, consulte Usar uma instância gerenciada com segurança com pontos de extremidade públicos.
Nota
O ponto de extremidade público da Instância Gerenciada SQL não está habilitado por padrão e deve ser explicitamente habilitado. Se a política da empresa não permitir o uso de pontos de extremidade públicos, use a Política do Azure para impedir a habilitação de pontos de extremidade públicos em primeiro lugar.
Configure os componentes de Rede do Azure:
- Siga as práticas recomendadas do Azure para segurança de rede.
- Planeje a configuração da Rede Virtual de acordo com as práticas recomendadas descritas nas Perguntas Frequentes (FAQ) da Rede Virtual do Azure e planeje.
- Segmente uma rede virtual em várias sub-redes e atribua recursos para função semelhante à mesma sub-rede (por exemplo, recursos front-end vs back-end).
- Use NSGs (Grupos de Segurança de Rede) para controlar o tráfego entre sub-redes dentro do limite da rede virtual do Azure.
- Habilite o Azure Network Watcher para sua assinatura para monitorar o tráfego de rede de entrada e saída.
Configurar o Power BI para conexões seguras com o Banco de Dados SQL/Instância Gerenciada SQL
Melhores práticas
Para o Power BI Desktop, use o caminho de dados privado sempre que possível.
Verifique se o Power BI Desktop está se conectando usando TLS1.2 definindo a chave do Registro na máquina cliente de acordo com as configurações do Registro TLS (Transport Layer Security).
Restrinja o acesso a dados para utilizadores específicos através da segurança de nível de linha (RLS) com o Power BI.
Para o Serviço do Power BI, use o gateway de dados local, tendo em mente Limitações e Considerações.
Configurar o Serviço de Aplicativo para conexões seguras com o Banco de Dados SQL/Instância Gerenciada SQL
Melhores práticas
Para um Aplicativo Web simples, a conexão por meio de ponto de extremidade público requer a configuração Permitir que os Serviços do Azure estejam ATIVADOS.
Integre seu aplicativo a uma Rede Virtual do Azure para conectividade de caminho de dados privado com uma instância gerenciada. Opcionalmente, você também pode implantar um Aplicativo Web com Ambientes do Serviço de Aplicativo (ASE).
Para Aplicativo Web com ASE ou Aplicativo Web Integrado de rede virtual conectando-se a um banco de dados no Banco de Dados SQL, você pode usar pontos de extremidade de serviço de rede virtual e regras de firewall de rede virtual para limitar o acesso de uma rede virtual e sub-rede específica. Em seguida, defina Permitir que os Serviços do Azure sejam DESATIVADOS. Você também pode conectar o ASE a uma instância gerenciada na Instância Gerenciada do SQL por um caminho de dados privado.
Certifique-se de que seu Aplicativo Web esteja configurado de acordo com o artigo, Práticas recomendadas para proteger aplicativos Web e móveis de plataforma como serviço (PaaS) usando o Serviço de Aplicativo do Azure.
Instale o Web Application Firewall (WAF) para proteger seu aplicativo Web contra exploits e vulnerabilidades comuns.
Configurar a hospedagem da Máquina Virtual do Azure para conexões seguras com o Banco de Dados SQL/Instância Gerenciada SQL
Melhores práticas
Use uma combinação de regras Permitir e Negar nos NSGs das máquinas virtuais do Azure para controlar quais regiões podem ser acessadas a partir da VM.
Certifique-se de que sua VM esteja configurada de acordo com o artigo, Práticas recomendadas de segurança para cargas de trabalho IaaS no Azure.
Certifique-se de que todas as VMs estejam associadas a uma rede virtual e sub-rede específicas.
Avalie se você precisa da rota padrão 0.0.0.0/Internet de acordo com a orientação em sobre tunelamento forçado.
- Se sim – por exemplo, sub-rede front-end – mantenha a rota padrão.
- Se não – por exemplo, camada intermediária ou sub-rede de back-end – habilite o túnel de força para que nenhum tráfego passe pela Internet para chegar ao local (também conhecido como entre locais).
Implemente rotas padrão opcionais se estiver usando emparelhamento ou conexão local.
Implemente Rotas Definidas pelo Usuário se precisar enviar todo o tráfego na rede virtual para um Dispositivo Virtual de Rede para inspeção de pacotes.
Use pontos de extremidade de serviço de rede virtual para acesso seguro a serviços PaaS, como o Armazenamento do Azure, por meio da rede de backbone do Azure.
Proteja-se contra ataques distribuídos de negação de serviço (DDoS)
Os ataques distribuídos de negação de serviço (DDoS) são tentativas de um usuário mal-intencionado de enviar uma enxurrada de tráfego de rede para o Banco de Dados SQL do Azure com o objetivo de sobrecarregar a infraestrutura do Azure e fazer com que ele rejeite logons e carga de trabalho válidos.
Mencionado em: OSA Practice #9
Como implementar
A proteção contra DDoS é ativada automaticamente como parte da Plataforma Azure. Ele inclui monitoramento de tráfego sempre ativo e mitigação em tempo real de ataques no nível da rede em pontos de extremidade públicos.
Use a Proteção contra DDoS do Azure para monitorar endereços IP públicos associados a recursos implantados em redes virtuais.
Melhores práticas
Seguir as práticas descritas em Minimizar superfície de ataque ajuda a minimizar ameaças de ataque DDoS.
O alerta de credenciais SQL de força bruta da Proteção Avançada contra Ameaças ajuda a detetar ataques de força bruta. Em alguns casos, o alerta pode até distinguir cargas de trabalho de teste de penetração.
Para aplicativos de hospedagem de VM do Azure que se conectam ao Banco de Dados SQL:
- Siga a recomendação para Restringir o acesso por meio de pontos de extremidade voltados para a Internet no Microsoft Defender for Cloud.
- Use conjuntos de dimensionamento de máquina virtual para executar várias instâncias do seu aplicativo em VMs do Azure.
- Desative RDP e SSH da Internet para evitar ataques de força bruta.
Monitorização, registos e auditoria
Esta seção refere-se aos recursos para ajudá-lo a detetar atividades anômalas que indicam tentativas incomuns e potencialmente prejudiciais de acessar ou explorar bancos de dados. Ele também descreve as práticas recomendadas para configurar a auditoria de banco de dados para rastrear e capturar eventos de banco de dados.
Proteja os bancos de dados contra ataques
A proteção avançada contra ameaças permite-lhe detetar e responder a potenciais ameaças à medida que ocorrem, fornecendo alertas de segurança sobre atividades anómalas.
Como implementar
- Use a Proteção Avançada contra Ameaças para SQL para detetar tentativas incomuns e potencialmente prejudiciais de acessar ou explorar bancos de dados, incluindo:
- Ataque de injeção de SQL.
- Roubo/fuga de credenciais.
- Abuso de privilégios.
- Transferência de dados não autorizada.
Melhores práticas
Configure o Microsoft Defender para SQL para um servidor específico ou uma instância gerenciada. Você também pode configurar o Microsoft Defender for SQL para todos os servidores e instâncias gerenciadas em uma assinatura habilitando o Microsoft Defender for Cloud.
Para obter uma experiência completa de investigação, é recomendável habilitar a Auditoria do Banco de Dados SQL. Com a auditoria, você pode rastrear eventos de banco de dados e gravá-los em um log de auditoria em uma conta de Armazenamento do Azure ou espaço de trabalho do Azure Log Analytics.
Auditar eventos críticos de segurança
O acompanhamento de eventos do banco de dados ajuda você a entender a atividade do banco de dados. Você pode obter informações sobre discrepâncias e anomalias que podem indicar preocupações comerciais ou suspeitas de violações de segurança. Também permite e facilita a adesão às normas de conformidade.
Como implementar
Habilite a Auditoria do Banco de Dados SQL ou a Auditoria de Instância Gerenciada para rastrear eventos do banco de dados e gravá-los em um log de auditoria em sua conta de Armazenamento do Azure, espaço de trabalho do Log Analytics (visualização) ou Hubs de Eventos (visualização).
Os logs de auditoria podem ser gravados em uma conta de Armazenamento do Azure, em um espaço de trabalho do Log Analytics para consumo pelos logs do Azure Monitor ou no hub de eventos para consumo usando o hub de eventos. Você pode configurar qualquer combinação dessas opções, e os logs de auditoria serão gravados em cada uma delas.
Melhores práticas
- Ao configurar a Auditoria do Banco de Dados SQL em seu servidor ou a Auditoria de Instância Gerenciada para auditar eventos, todos os bancos de dados existentes e recém-criados nesse servidor serão auditados.
- Por padrão, a política de auditoria inclui todas as ações (consultas, procedimentos armazenados e logins bem-sucedidos e com falha) nos bancos de dados, o que pode resultar em um alto volume de logs de auditoria. É recomendável que os clientes configurem a auditoria para diferentes tipos de ações e grupos de ações usando o PowerShell. Configurar isso ajudará a controlar o número de ações auditadas e minimizar o risco de perda de eventos. As configurações de auditoria personalizadas permitem que os clientes capturem apenas os dados de auditoria necessários.
- Os logs de auditoria podem ser consumidos diretamente no portal do Azure ou do local de armazenamento que foi configurado.
Nota
Habilitar a auditoria para o Log Analytics incorrerá em custos com base nas taxas de ingestão. Esteja ciente do custo associado ao uso dessa opção ou considere armazenar os logs de auditoria em uma conta de armazenamento do Azure.
Outros recursos
Logs de auditoria seguros
Restrinja o acesso à conta de armazenamento para dar suporte à separação de funções e separar o DBA dos auditores.
Como implementar
- Ao salvar logs de auditoria no Armazenamento do Azure, verifique se o acesso à Conta de Armazenamento está restrito aos princípios mínimos de segurança. Controle quem tem acesso à conta de armazenamento.
- Para obter mais informações, consulte Autorizando o acesso ao Armazenamento do Azure.
Melhores práticas
Controlar o acesso ao alvo de auditoria é um conceito-chave para separar o DBA dos auditores.
Ao auditar o acesso a dados confidenciais, considere proteger os dados com criptografia de dados para evitar vazamento de informações para o auditor. Para obter mais informações, consulte a seção Proteger dados confidenciais em uso de usuários não autorizados com privilégios elevados.
Gestão de Segurança
Esta seção descreve os diferentes aspetos e as práticas recomendadas para gerenciar a postura de segurança de seus bancos de dados. Ele inclui práticas recomendadas para garantir que seus bancos de dados estejam configurados para atender aos padrões de segurança, para descobrir, classificar e rastrear o acesso a dados potencialmente confidenciais em seus bancos de dados.
Verifique se os bancos de dados estão configurados para atender às práticas recomendadas de segurança
Melhore proativamente a segurança do seu banco de dados, descobrindo e corrigindo possíveis vulnerabilidades do banco de dados.
Como implementar
- Habilite a Avaliação de Vulnerabilidade do SQL (VA) para verificar seu banco de dados em busca de problemas de segurança e para executar automaticamente periodicamente em seus bancos de dados.
Melhores práticas
Inicialmente, execute o VA em seus bancos de dados e itere corrigindo verificações com falhas que se opõem às práticas recomendadas de segurança. Configure linhas de base para configurações aceitáveis até que a verificação saia limpa ou todas as verificações tenham passado.
Configure verificações periódicas recorrentes para serem executadas uma vez por semana e configure a pessoa relevante para receber e-mails resumidos.
Reveja o resumo da AV após cada análise semanal. Para quaisquer vulnerabilidades encontradas, avalie o desvio do resultado da verificação anterior e determine se a verificação deve ser resolvida. Analise se há um motivo legítimo para a alteração na configuração.
Resolva verificações e atualize linhas de base quando relevante. Crie itens de tíquete para resolver ações e acompanhe-os até que sejam resolvidos.
Outros recursos
- Avaliação de vulnerabilidade do SQL
- O serviço de Avaliação de Vulnerabilidades do SQL ajuda a identificar vulnerabilidades do banco de dados
Identificar e marcar dados confidenciais
Descubra colunas que potencialmente contêm dados confidenciais. O que é considerado dado sensível depende muito do cliente, da regulamentação de conformidade, etc., e precisa ser avaliado pelos usuários responsáveis por esses dados. Classifique as colunas para usar cenários avançados de auditoria e proteção baseados em sensibilidade.
Como implementar
- Use o SQL Data Discovery and Classification para descobrir, classificar, rotular e proteger os dados confidenciais em seus bancos de dados.
- Exiba as recomendações de classificação criadas pela descoberta automatizada no painel Descoberta e Classificação de Dados SQL. Aceite as classificações relevantes, de modo que seus dados confidenciais sejam marcados persistentemente com rótulos de classificação.
- Adicione manualmente classificações para quaisquer campos de dados confidenciais adicionais que não foram descobertos pelo mecanismo automatizado.
- Para obter mais informações, consulte Descoberta e classificação de dados SQL.
Melhores práticas
Monitore o painel de classificação regularmente para uma avaliação precisa do estado de classificação do banco de dados. Um relatório sobre o estado de classificação do banco de dados pode ser exportado ou impresso para compartilhamento para fins de conformidade e auditoria.
Monitore continuamente o status dos dados confidenciais recomendados na Avaliação de Vulnerabilidade do SQL. Acompanhe a regra de descoberta de dados confidenciais e identifique qualquer desvio nas colunas recomendadas para classificação.
Use a classificação de forma adaptada às necessidades específicas da sua organização. Personalize sua política de Proteção de Informações (rótulos de sensibilidade, tipos de informações, lógica de descoberta) na política de Proteção de Informações SQL no Microsoft Defender for Cloud.
Rastreie o acesso a dados confidenciais
Monitore quem acessa dados confidenciais e capture consultas sobre dados confidenciais em logs de auditoria.
Como implementar
- Utilize a Auditoria de SQL e a Classificação de Dados em combinação.
- No log de auditoria do Banco de dados SQL , você pode controlar o acesso especificamente a dados confidenciais. Você também pode exibir informações como os dados que foram acessados, bem como seu rótulo de sensibilidade. Para obter mais informações, consulte Descoberta de dados e Classificação e Auditoria de acesso a dados confidenciais.
Melhores práticas
- Consulte as práticas recomendadas para as seções Auditoria e Classificação de Dados:
Visualize o status de segurança e conformidade
Use um sistema unificado de gerenciamento de segurança de infraestrutura que fortaleça a postura de segurança de seus data centers (incluindo bancos de dados no Banco de dados SQL). Veja uma lista de recomendações relativas à segurança das suas bases de dados e ao estado de conformidade.
Como implementar
- Monitore recomendações de segurança relacionadas ao SQL e ameaças ativas no Microsoft Defender for Cloud.
Ameaças comuns à segurança e potenciais atenuações
Esta secção ajuda-o a encontrar medidas de segurança para proteger contra determinados vetores de ataque. Espera-se que a maioria das mitigações possa ser alcançada seguindo uma ou mais das diretrizes de segurança acima.
Ameaça à segurança: exfiltração de dados
A exfiltração de dados é a cópia, transferência ou recuperação não autorizada de dados de um computador ou servidor. Veja uma definição para exfiltração de dados na Wikipédia.
A conexão ao servidor através de um ponto de extremidade público apresenta um risco de exfiltração de dados, pois exige que os clientes abram seus firewalls para IPs públicos.
Cenário 1: Um aplicativo em uma VM do Azure se conecta a um banco de dados no Banco de Dados SQL do Azure. Um ator mal-intencionado obtém acesso à VM e a compromete. Nesse cenário, a exfiltração de dados significa que uma entidade externa usando a VM não autorizada se conecta ao banco de dados, copia dados pessoais e os armazena em um armazenamento de blob ou em um Banco de dados SQL diferente em uma assinatura diferente.
Cenário 2: Um DBA desonesto. Esse cenário é frequentemente levantado por clientes sensíveis à segurança de setores regulamentados. Nesse cenário, um usuário de alto privilégio pode copiar dados do Banco de Dados SQL do Azure para outra assinatura não controlada pelo proprietário dos dados.
Potenciais atenuações
Atualmente, o Banco de Dados SQL do Azure e a Instância Gerenciada do SQL oferecem as seguintes técnicas para reduzir as ameaças de exfiltração de dados:
- Use uma combinação de regras Permitir e Negar nos NSGs das VMs do Azure para controlar quais regiões podem ser acessadas a partir da VM.
- Se estiver usando um servidor no Banco de dados SQL, defina as seguintes opções:
- Permitir que os Serviços do Azure sejam DESATIVADOS.
- Permita apenas o tráfego da sub-rede que contém sua VM do Azure configurando uma regra de Firewall de rede virtual.
- Usar Link Privado
- Para a Instância Gerenciada SQL, o uso de acesso IP privado por padrão resolve a primeira preocupação de exfiltração de dados de uma VM não autorizada. Ative o recurso de delegação de sub-rede em uma sub-rede para definir automaticamente a política mais restritiva em uma sub-rede de Instância Gerenciada SQL.
- A preocupação com o DBA não autorizado está mais exposta com a Instância Gerenciada SQL, pois ela tem uma área de superfície maior e os requisitos de rede são visíveis para os clientes. A melhor mitigação para isso é aplicar todas as práticas neste guia de segurança para evitar o cenário de DBA não autorizado em primeiro lugar (não apenas para exfiltração de dados). Always Encrypted é um método para proteger dados confidenciais, criptografando-os e mantendo a chave inacessível para o DBA.
Aspetos de segurança da continuidade e disponibilidade de negócios
A maioria dos padrões de segurança aborda a disponibilidade de dados em termos de continuidade operacional, alcançada pela implementação de recursos de redundância e failover para evitar pontos únicos de falha. Para cenários de desastre, é uma prática comum manter backups de arquivos de dados e log. A seção a seguir fornece uma visão geral de alto nível dos recursos internos do Azure. Ele também fornece opções adicionais que podem ser configuradas para atender a necessidades específicas:
O Azure oferece alta disponibilidade interna: alta disponibilidade com Banco de Dados SQL e Instância Gerenciada SQL
A camada Business Critical inclui grupos de failover, backups de log completos e diferenciais e backups de restauração point-in-time habilitados por padrão:
Recursos adicionais de continuidade de negócios, como a configuração redundante de zona e grupos de failover em diferentes geos do Azure, podem ser configurados: