Livro de jogadas para abordar requisitos comuns de segurança com base de dados Azure SQL e Azure SQL Gestão De InstânciaPlaybook for addressing common security requirements with Azure SQL Database and Azure SQL Managed Instance

APLICA-SE A: Azure SQL Database Azure SQL Gestd Instance

Este artigo fornece as melhores práticas sobre como resolver os requisitos comuns de segurança.This article provides best practices on how to solve common security requirements. Nem todos os requisitos são aplicáveis a todos os ambientes, e deverá consultar a sua base de dados e a sua equipa de segurança sobre quais as funcionalidades a implementar.Not all requirements are applicable to all environments, and you should consult your database and security team on which features to implement.

Resolução de requisitos comuns de segurançaSolving common security requirements

Este documento fornece orientações sobre como resolver requisitos de segurança comuns para aplicações novas ou existentes usando a Base de Dados Azure SQL e Azure SQL Managed Instance.This document provides guidance on how to solve common security requirements for new or existing applications using Azure SQL Database and Azure SQL Managed Instance. É organizado por áreas de segurança de alto nível.It's organized by high-level security areas. Para abordar ameaças específicas, consulte a secção de ameaças à segurança comum e a potenciais mitigações.For addressing specific threats, refer to the Common security threats and potential mitigations section. Embora algumas das recomendações apresentadas sejam aplicáveis quando as aplicações migratórias de no local para Azure, os cenários de migração não são o foco deste documento.Although some of the presented recommendations are applicable when migrating applications from on-premises to Azure, migration scenarios are not the focus of this document.

Ofertas de implementação de bases de dados Azure SQL abrangidas por este guiaAzure SQL Database deployment offers covered in this guide

Ofertas de implantação não abrangidas por este guiaDeployment offers not covered in this guide

  • Azure Synapse AnalyticsAzure Synapse Analytics
  • VMs Azure SQL (IaaS)Azure SQL VMs (IaaS)
  • SQL ServerSQL Server

AudiênciaAudience

Os públicos pretendidos para este guia são os clientes que enfrentam questões sobre como garantir a Base de Dados Azure SQL.The intended audiences for this guide are customers facing questions on how to secure Azure SQL Database. As funções interessadas neste artigo de boas práticas incluem, mas não se limitando a:The roles interested in this best practice article include, but not limited to:

  • Arquitetos de SegurançaSecurity Architects
  • Gestores de SegurançaSecurity Managers
  • Agentes de ConformidadeCompliance Officers
  • Oficiais de PrivacidadePrivacy Officers
  • Engenheiros de SegurançaSecurity Engineers

Usando este guiaUsing this guide

Este documento destina-se a ser um companheiro da nossa documentação de segurança existente na Base de Dados Azure SQL.This document is intended as a companion to our existing Azure SQL Database security documentation.

Salvo indicação em contrário, recomendamos que siga todas as melhores práticas enumeradas em cada secção para alcançar o objetivo ou requisito respetivo.Unless otherwise stated, we recommend you follow all best practices listed in each section to achieve the respective goal or requirement. Para cumprir normas específicas de conformidade com a segurança ou as melhores práticas, são listados controlos de conformidade regulamentares importantes na secção Requisitos ou Objetivos, sempre que aplicável.To meet specific security compliance standards or best practices, important regulatory compliance controls are listed under the Requirements or Goals section wherever applicable. Estas são as normas e regulamentos de segurança que são referenciados neste artigo:These are the security standards and regulations that are referenced in this paper:

Pretendemos continuar a atualizar as recomendações e as melhores práticas aqui enumeradas.We plan on continuing to update the recommendations and best practices listed here. Forneça a entrada ou quaisquer correções para este documento utilizando o link Feedback na parte inferior deste artigo.Provide input or any corrections for this document using the Feedback link at the bottom of this article.

AutenticaçãoAuthentication

A autenticação é o processo de provar que o utilizador é quem diz ser.Authentication is the process of proving the user is who they claim to be. Azure SQL Database e SQL Managed Instance suportam dois tipos de autenticação:Azure SQL Database and SQL Managed Instance support two types of authentication:

  • Autenticação do SQLSQL authentication
  • Autenticação do Azure Active DirectoryAzure Active Directory authentication

Nota

A autenticação do Azure Ative Directory não pode ser suportada para todas as ferramentas e aplicações de terceiros.Azure Active Directory authentication may not be supported for all tools and 3rd party applications.

Gestão central das identidadesCentral management for identities

A gestão central da identidade oferece os seguintes benefícios:Central identity management offers the following benefits:

  • Gerencie as contas do grupo e controle as permissões dos utilizadores sem duplicar os logins em servidores, bases de dados e instâncias geridas.Manage group accounts and control user permissions without duplicating logins across servers, databases and managed instances.
  • Gestão de permissões simplificadas e flexíveis.Simplified and flexible permission management.
  • Gestão de aplicações em escala.Management of applications at scale.

Como implementar:How to implement:

  • Utilize a autenticação do Azure Ative Directory (Azure AD) para gestão centralizada de identidade.Use Azure Active Directory (Azure AD) authentication for centralized identity management.

Boas práticas:Best practices:

  • Crie um inquilino AZure AD e crie utilizadores para representar utilizadores humanos e criar diretores de serviços para representar apps, serviços e ferramentas de automação.Create an Azure AD tenant and create users to represent human users and create service principals to represent apps, services, and automation tools. Os principais serviços são equivalentes às contas de serviço no Windows e linux.Service principals are equivalent to service accounts in Windows and Linux.

  • Atribuir direitos de acesso aos recursos aos principais da Azure AD através da atribuição de grupos: Criar grupos Azure AD, conceder acesso a grupos e adicionar membros individuais aos grupos.Assign access rights to resources to Azure AD principals via group assignment: Create Azure AD groups, grant access to groups, and add individual members to the groups. Na sua base de dados, crie utilizadores de bases de dados contidos que mapeiem os seus grupos AD Azure.In your database, create contained database users that map your Azure AD groups. Para atribuir permissões dentro da base de dados, coloque os utilizadores associados aos seus grupos AZURE AD em funções de base de dados com as permissões apropriadas.To assign permissions inside the database, put the users that are associated with your Azure AD groups in database roles with the appropriate permissions.

    Nota

    Em SQL Managed Instance, também pode criar logins que mapeiam para os principais AD do Azure na base de dados principal.In SQL Managed Instance, you can also create logins that map to Azure AD principals in the master database. Consulte O LOGIN CREATE (Transact-SQL).See CREATE LOGIN (Transact-SQL).

  • A utilização de grupos AD Azure simplifica a gestão da permissão e tanto o proprietário do grupo, como o proprietário do recurso pode adicionar/remover membros de/para o grupo.Using Azure AD groups simplifies permission management and both the group owner, and the resource owner can add/remove members to/from the group.

  • Crie um grupo separado para administradores AD Azure para cada servidor ou instância gerida.Create a separate group for Azure AD administrators for each server or managed instance.

  • Monitor Azure AD altera alterações de membros do grupo usando relatórios de atividade de auditoria Azure AD.Monitor Azure AD group membership changes using Azure AD audit activity reports.

  • Para um caso gerido, é necessário um passo separado para criar um administrador AD Azure.For a managed instance, a separate step is required to create an Azure AD admin.

Nota

  • A autenticação Azure AD é registada em registos de auditoria Azure SQL, mas não em registos de login Azure AD.Azure AD authentication is recorded in Azure SQL audit logs, but not in Azure AD sign-in logs.
  • As permissões Azure RBAC concedidas em Azure não se aplicam a permissões de Azure SQL Database ou SQL Managed Instance.Azure RBAC permissions granted in Azure do not apply to Azure SQL Database or SQL Managed Instance permissions. Tais permissões devem ser criadas/mapeadas manualmente utilizando permissões SQL existentes.Such permissions must be created/mapped manually using existing SQL permissions.
  • Do lado do cliente, a autenticação AZure AD necessita de acesso à internet ou via Rota Definida pelo Utilizador (UDR) a uma rede virtual.On the client-side, Azure AD authentication needs access to the internet or via User Defined Route (UDR) to a virtual network.
  • O token de acesso Azure AD está em cache no lado do cliente e a sua vida útil depende da configuração simbólica.The Azure AD access token is cached on the client side and its lifetime depends on token configuration. Veja o artigo, Configurar vidas simbólicas no Azure Ative DirectorySee the article, Configurable token lifetimes in Azure Active Directory
  • Para obter orientações sobre problemas de resolução de problemas Azure AD Authentication, consulte o seguinte blog: Troubleshooting Azure AD.For guidance on troubleshooting Azure AD Authentication issues, see the following blog: Troubleshooting Azure AD.

Multi-Factor Authentication do Azure ADAzure AD Multi-Factor Authentication

Mencionado em: Osa Practice #2, ISO Access Control (AC)Mentioned in: OSA Practice #2, ISO Access Control (AC)

A autenticação multi-factor Azure AD ajuda a fornecer segurança adicional, exigindo mais do que uma forma de autenticação.Azure AD Multi-Factor Authentication helps provides additional security by requiring more than one form of authentication.

Como implementar:How to implement:

  • Ativar a autenticação multi-factor em Ad Azure utilizando o Acesso Condicional e utilizar a autenticação interativa.Enable Multi-Factor Authentication in Azure AD using Conditional Access and use interactive authentication.

  • A alternativa é ativar a autenticação multi-factor para todo o domínio AD ou AD AZure.The alternative is to enable Multi-Factor Authentication for the entire Azure AD or AD domain.

Boas práticas:Best practices:

Minimizar a utilização da autenticação baseada em palavras-passe para os utilizadoresMinimize the use of password-based authentication for users

Mencionado em: Osa Practice #4, ISO Access Control (AC)Mentioned in: OSA Practice #4, ISO Access Control (AC)

Os métodos de autenticação baseados em palavras-passe são uma forma mais fraca de autenticação.Password-based authentication methods are a weaker form of authentication. As credenciais podem ser comprometidas ou erroneamente dadas.Credentials can be compromised or mistakenly given away.

Como implementar:How to implement:

  • Utilize uma autenticação integrada AZURE AD que elimine o uso de palavras-passe.Use an Azure AD integrated authentication that eliminates the use of passwords.

Boas práticas:Best practices:

  • Utilize uma única autenticação de sinalização utilizando credenciais do Windows.Use single sign-on authentication using Windows credentials. Federar o domínio AD no local com Azure AD e utilizar a autenticação integrada do Windows (para máquinas de domínio com Azure AD).Federate the on-premises AD domain with Azure AD and use Integrated Windows authentication (for domain-joined machines with Azure AD).

Minimizar a utilização da autenticação baseada em palavras-passe para aplicaçõesMinimize the use of password-based authentication for applications

Mencionado em: Osa Practice #4, ISO Access Control (AC)Mentioned in: OSA Practice #4, ISO Access Control (AC)

Como implementar:How to implement:

  • Ativar a identidade gerida do Azure.Enable Azure Managed Identity. Também pode utilizar a autenticação integrada ou baseada em certificados.You can also use integrated or certificate-based authentication.

Boas práticas:Best practices:

Proteja senhas e segredosProtect passwords and secrets

Para casos em que as palavras-passe não são evitáveis, certifique-se de que estão seguras.For cases when passwords aren't avoidable, make sure they're secured.

Como implementar:How to implement:

  • Use o Cofre de Chaves Azure para armazenar senhas e segredos.Use Azure Key Vault to store passwords and secrets. Sempre que aplicável, utilize a Autenticação Multi-Factor para Azure SQL Database com utilizadores AZure AD.Whenever applicable, use Multi-Factor Authentication for Azure SQL Database with Azure AD users.

Boas práticas:Best practices:

  • Se evitar palavras-passe ou segredos não for possível, guarde senhas de utilizador e segredos de aplicação no Cofre de Chaves Azure e gere o acesso através das políticas de acesso do Key Vault.If avoiding passwords or secrets aren't possible, store user passwords and application secrets in Azure Key Vault and manage access through Key Vault access policies.

  • Vários quadros de desenvolvimento de aplicações também podem oferecer mecanismos específicos para proteger segredos na aplicação.Various app development frameworks may also offer framework-specific mechanisms for protecting secrets in the app. Por exemplo: ASP.NET aplicação core.For example: ASP.NET core app.

Utilize a autenticação SQL para aplicações antigasUse SQL authentication for legacy applications

A autenticação SQL refere-se à autenticação de um utilizador ao ligar-se à Base de Dados Azure SQL ou à SQL Managed Instance utilizando o nome de utilizador e a palavra-passe.SQL authentication refers to the authentication of a user when connecting to Azure SQL Database or SQL Managed Instance using username and password. Um login terá de ser criado em cada servidor ou instância gerida, e um utilizador criado em cada base de dados.A login will need to be created in each server or managed instance, and a user created in each database.

Como implementar:How to implement:

  • Utilize a autenticação SQL.Use SQL authentication.

Boas práticas:Best practices:

Gestão de acessoAccess management

A gestão de acessos (também denominada Autorização) é o processo de controlo e gestão do acesso e privilégios dos utilizadores autorizados à Base de Dados Azure SQL ou à SQL Managed Instance.Access management (also called Authorization) is the process of controlling and managing authorized users' access and privileges to Azure SQL Database or SQL Managed Instance.

Implementar princípio de menor privilégioImplement principle of least privilege

Mencionado em: FedRamp controla AC-06, NIST: AC-6, OSA Practice #3Mentioned in: FedRamp controls AC-06, NIST: AC-6, OSA Practice #3

O princípio do menor privilégio diz que os utilizadores não devem ter mais privilégios do que o necessário para completar as suas tarefas.The principle of least privilege states that users shouldn't have more privileges than needed to complete their tasks. Para mais informações, consulte o artigo Administração suficiente.For more information, see the article Just enough administration.

Como implementar:How to implement:

Atribua apenas as permissões necessárias para completar as tarefas necessárias:Assign only the necessary permissions to complete the required tasks:

Boas práticas:Best practices:

As seguintes boas práticas são opcionais, mas resultarão numa melhor gestão e suporte da sua estratégia de segurança:The following best practices are optional but will result in better manageability and supportability of your security strategy:

  • Se possível, comece com o conjunto de permissões menos possível e comece a adicionar permissões uma a uma se houver uma necessidade real (e justificação) – ao contrário da abordagem oposta: tirar permissões passo a passo.If possible, start with the least possible set of permissions and start adding permissions one by one if there's a real necessity (and justification) – as opposed to the opposite approach: taking permissions away step by step.

  • Abstenha-se de atribuir permissões a utilizadores individuais.Refrain from assigning permissions to individual users. Utilize as funções (bases de dados ou funções de servidor) de forma consistente.Use roles (database or server roles) consistently instead. As funções ajudam muito com as permissões de relato e resolução de problemas.Roles helps greatly with reporting and troubleshooting permissions. (O Azure RBAC só suporta a atribuição de permissão através de funções.)(Azure RBAC only supports permission assignment via roles.)

  • Criar e utilizar funções personalizadas com as permissões exatas necessárias.Create and use custom roles with the exact permissions needed. Funções típicas que são usadas na prática:Typical roles that are used in practice:

    • Implantação de segurançaSecurity deployment
    • AdministradorAdministrator
    • ProgramadorDeveloper
    • Pessoal de apoioSupport personnel
    • AuditorAuditor
    • Processos automatizadosAutomated processes
    • Utilizador finalEnd user
  • Utilize funções incorporadas apenas quando as permissões das funções corresponderem exatamente às permissões necessárias para o utilizador.Use built-in roles only when the permissions of the roles match exactly the needed permissions for the user. Pode atribuir utilizadores a múltiplas funções.You can assign users to multiple roles.

  • Lembre-se que as permissões no motor da base de dados podem ser aplicadas nos seguintes âmbitos (quanto menor for o âmbito, menor o impacto das permissões concedidas):Remember that permissions in the database engine can be applied within the following scopes (the smaller the scope, the smaller the impact of the granted permissions):

    Nota

    Não é aconselhável aplicar permissões ao nível do objeto porque este nível adiciona complexidade desnecessária à implementação global.It is not recommended to apply permissions on the object level because this level adds unnecessary complexity to the overall implementation. Se decidir utilizar permissões de nível de objetos, estas devem ser claramente documentadas.If you decide to use object-level permissions, those should be clearly documented. O mesmo se aplica às permissões de nível de coluna, que são ainda menos recomendáveis pelas mesmas razões.The same applies to column-level-permissions, which are even less recommendable for the same reasons. Esteja também ciente de que, por defeito, um DENY de nível de tabela não substitui uma subvenção de nível de coluna.Also be aware that by default a table-level DENY does not override a column-level GRANT. Isto exigiria que a configuração do servidor de conformidade de conformidade comum fosse ativada.This would require the common criteria compliance Server Configuration to be activated.

  • Efetue verificações regulares usando a Avaliação de Vulnerabilidade (VA) para testar demasiadas permissões.Perform regular checks using Vulnerability Assessment (VA) to test for too many permissions.

Implementar Separação de DeveresImplement Separation of Duties

Mencionado em: FedRamp: AC-04, NIST: AC-5, ISO: A.6.1.2, PCI 6.4.2, SOC: CM-3, SDL-3Mentioned in: FedRamp: AC-04, NIST: AC-5, ISO: A.6.1.2, PCI 6.4.2, SOC: CM-3, SDL-3

A Separação de Deveres, também denominada Segregação de Deveres, descreve a exigência de dividir tarefas sensíveis em múltiplas tarefas que são atribuídas a diferentes utilizadores.Separation of Duties, also called Segregation of Duties describes the requirement to split sensitive tasks into multiple tasks that are assigned to different users. A separação de deveres ajuda a prevenir violações de dados.Separation of Duties helps prevent data breaches.

Como implementar:How to implement:

  • Identificar o nível exigido de Separação de Deveres.Identify the required level of Separation of Duties. Exemplos:Examples:

    • Entre ambientes de desenvolvimento/teste e produçãoBetween Development/Test and Production environments
    • Tarefas sensíveis em termos de segurança vs Tarefas de nível de gestão do Administrador de Base de Dados (DBA) vs tarefas de desenvolvedor.Security-wise sensitive tasks vs Database Administrator (DBA) management level tasks vs developer tasks.
      • Exemplos: Auditor, criação de política de segurança para segurança de nível de função (RLS), implementação de objetos de base de dados SQL com permissões DDL.Examples: Auditor, creation of security policy for Role-level Security (RLS), Implementing SQL Database objects with DDL-permissions.
  • Identifique uma hierarquia abrangente de utilizadores (e processos automatizados) que acedam ao sistema.Identify a comprehensive hierarchy of users (and automated processes) that access the system.

  • Criar funções de acordo com os grupos de utilizador necessários e atribuir permissões a funções.Create roles according to the needed user-groups and assign permissions to roles.

    • Para tarefas de nível de gestão no portal Azure ou através da automação PowerShell utilize funções Azure.For management-level tasks in Azure portal or via PowerShell-automation use Azure roles. Ou encontra uma função incorporada que corresponda ao requisito, ou crie uma função personalizada Azure usando as permissões disponíveisEither find a built-in role matching the requirement, or create an Azure custom role using the available permissions
    • Criar funções de Servidor para tarefas em todo o servidor (criando novos logins, bases de dados) num caso gerido.Create Server roles for server-wide tasks (creating new logins, databases) in a managed instance.
    • Criar funções de base de dados para tarefas ao nível da base de dados.Create Database Roles for database-level tasks.
  • Para determinadas tarefas sensíveis, considere a criação de procedimentos especiais armazenados assinados por um certificado para executar as tarefas em nome dos utilizadores.For certain sensitive tasks, consider creating special stored procedures signed by a certificate to execute the tasks on behalf of the users. Uma vantagem importante dos procedimentos armazenados assinados digitalmente é que, se o procedimento for alterado, as permissões concedidas à versão anterior do procedimento são imediatamente eliminadas.One important advantage of digitally signed stored procedures is that if the procedure is changed, the permissions that were granted to the previous version of the procedure are immediately removed.

  • Implementar encriptação de dados transparentes (TDE) com chaves geridas pelo cliente no Cofre da Chave Azure para permitir a separação de direitos entre o proprietário de dados e o proprietário de segurança.Implement Transparent Data Encryption (TDE) with customer-managed keys in Azure Key Vault to enable Separation of Duties between data owner and security owner.

  • Para garantir que um DBA não pode ver dados considerados altamente sensíveis e que ainda podem fazer tarefas DBA, pode utilizar Sempre Encriptado com a separação de papéis.To ensure that a DBA can't see data that is considered highly sensitive and can still do DBA tasks, you can use Always Encrypted with role separation.

  • Nos casos em que a utilização de Always Encrypted não seja viável, ou pelo menos não sem custos e esforços importantes que possam mesmo tornar o sistema quase inutilizável, os compromissos podem ser feitos e atenuados através da utilização de controlos compensatórios como:In cases where the use of Always Encrypted isn't feasible, or at least not without major costs and efforts that may even render the system near unusable, compromises can be made and mitigated through the use of compensating controls such as:

Boas práticas:Best practices:

  • Certifique-se de que são utilizadas contas diferentes para ambientes de Desenvolvimento/Teste e Produção.Make sure that different accounts are used for Development/Test and Production environments. Contas diferentes ajudam a cumprir a separação dos sistemas de teste e produção.Different accounts help to comply with separation of Test and Production systems.

  • Abstenha-se de atribuir permissões a utilizadores individuais.Refrain from assigning permissions to individual users. Utilize as funções (bases de dados ou funções de servidor) de forma consistente.Use roles (database or server roles) consistently instead. Ter papéis ajuda muito com permissões de relato e resolução de problemas.Having roles helps greatly with reporting and troubleshooting permissions.

  • Use funções incorporadas quando as permissões correspondem exatamente às permissões necessárias – se a união de todas as permissões de várias funções incorporadas levar a uma correspondência de 100%, também pode atribuir várias funções simultaneamente.Use built-in roles when the permissions match exactly the needed permissions – if the union of all permissions from multiple built-in roles leads to a 100% match, you can assign multiple roles concurrently as well.

  • Crie e utilize funções definidas pelo utilizador quando as funções incorporadas concedem demasiadas permissões ou permissões insuficientes.Create and use user-defined roles when built-in roles grant too many permissions or insufficient permissions.

  • As atribuições de funções também podem ser feitas temporariamente, também conhecidas como Separação Dinâmica de Deveres (DSD), quer dentro dos passos de trabalho do agente SQL em T-SQL ou usando Azure PIM para funções de Azure.Role assignments can also be done temporarily, also known as Dynamic Separation of Duties (DSD), either within SQL Agent Job steps in T-SQL or using Azure PIM for Azure roles.

  • Certifique-se de que os DBAs não têm acesso às chaves de encriptação ou às lojas-chave, e que os Administradores de Segurança com acesso às chaves não têm acesso à base de dados por sua vez.Make sure that DBAs don't have access to the encryption keys or key stores, and that Security Administrators with access to the keys have no access to the database in turn. A utilização de Gestão de Chaves Extensíveis (EKM) pode facilitar a sua separação.The use of Extensible Key Management (EKM) can make this separation easier to achieve. O Azure Key Vault pode ser usado para implementar eKM.Azure Key Vault can be used to implement EKM.

  • Certifique-se sempre de ter um rasto de auditoria para ações relacionadas com a segurança.Always make sure to have an Audit trail for security-related actions.

  • Pode recuperar a definição das funções incorporadas do Azure para ver as permissões utilizadas e criar um papel personalizado baseado em excertos e acumulações destes através do PowerShell.You can retrieve the definition of the Azure built-in roles to see the permissions used and create a custom role based on excerpts and cumulations of these via PowerShell.

  • Como qualquer membro da função de base de dados db_owner pode alterar definições de segurança como a Encriptação de Dados Transparente (TDE), ou alterar a SLO, esta adesão deve ser concedida com cuidado.Because any member of the db_owner database role can change security settings like Transparent Data Encryption (TDE), or change the SLO, this membership should be granted with care. No entanto, há muitas tarefas que requerem privilégios db_owner.However, there are many tasks that require db_owner privileges. Tarefa como alterar qualquer definição de base de dados, como alterar opções de DB.Task like changing any database setting such as changing DB options. A auditoria desempenha um papel fundamental em qualquer solução.Auditing plays a key role in any solution.

  • Não é possível restringir as permissões de um db_owner, impedindo assim que uma conta administrativa veja os dados dos utilizadores.It is not possible to restrict permissions of a db_owner, and therefore prevent an administrative account from viewing user data. Se houver dados altamente sensíveis numa base de dados, o Always Encrypted pode ser usado para impedir db_owners ou qualquer outro DBA de o visualizar.If there's highly sensitive data in a database, Always Encrypted can be used to safely prevent db_owners or any other DBA from viewing it.

Nota

Alcançar a Separação de Deveres (SoD) é um desafio para tarefas relacionadas com a segurança ou resolução de problemas.Achieving Separation of Duties (SoD) is challenging for security-related or troubleshooting tasks. Outras áreas como o desenvolvimento e as funções de utilizador final são mais fáceis de segregar.Other areas like development and end-user roles are easier to segregate. A maioria dos controlos relacionados com a conformidade permite a utilização de funções de controlo alternativos, como a Auditoria quando outras soluções não são práticas.Most compliance related controls allow the use of alternate control functions such as Auditing when other solutions aren't practical.

Para os leitores que querem mergulhar mais profundamente no SoD, recomendamos os seguintes recursos:For the readers that want to dive deeper into SoD, we recommend the following resources:

Realizar revisões de código regularesPerform regular code reviews

Mencionado em: PCI: 6.3.2, SOC: SDL-3Mentioned in: PCI: 6.3.2, SOC: SDL-3

A separação de direitos não se limita aos dados numa base de dados, mas inclui o código de aplicação.Separation of Duties is not limited to the data in a database, but includes application code. O código malicioso pode potencialmente contornar os controlos de segurança.Malicious code can potentially circumvent security controls. Antes de implementar código personalizado para a produção, é essencial rever o que está a ser implementado.Before deploying custom code to production, it is essential to review what's being deployed.

Como implementar:How to implement:

  • Utilize uma ferramenta de base de dados como o Azure Data Studio que suporta o controlo de origem.Use a database tool like Azure Data Studio that supports source control.

  • Implementar um processo de implantação de código segregado.Implement a segregated code deployment process.

  • Antes de se comprometer com o ramo principal, uma pessoa (que não seja o autor do próprio código) tem de inspecionar o código para uma possível elevação de riscos de privilégios, bem como modificações de dados maliciosas para proteger contra fraudes e acesso fraudulento.Before committing to main branch, a person (other than the author of the code itself) has to inspect the code for potential elevation of privileges risks as well as malicious data modifications to protect against fraud and rogue access. Isto pode ser feito utilizando mecanismos de controlo de fontes.This can be done using source control mechanisms.

Boas práticas:Best practices:

  • Normalização: Ajuda a implementar um procedimento padrão que deve ser seguido para quaisquer atualizações de código.Standardization: It helps to implement a standard procedure that is to be followed for any code updates.

  • A Avaliação de Vulnerabilidades contém regras que verificam permissões excessivas, o uso de algoritmos de encriptação antigos e outros problemas de segurança dentro de um esquema de base de dados.Vulnerability Assessment contains rules that check for excessive permissions, the use of old encryption algorithms, and other security problems within a database schema.

  • Podem ser efetuados mais controlos num ambiente de QA ou de teste utilizando a Advanced Threat Protection que verifica códigos vulneráveis à injeção de SQL.Further checks can be done in a QA or test environment using Advanced Threat Protection that scans for code that is vulnerable to SQL-injection.

  • Exemplos do que procurar:Examples of what to look out for:

    • Criação de um utilizador ou alteração de definições de segurança dentro de uma implementação automatizada de atualização de código SQL.Creation of a user or changing security settings from within an automated SQL-code-update deployment.
    • Um procedimento armazenado, que, dependendo dos parâmetros fornecidos, atualiza um valor monetário numa célula de forma não conforme.A stored procedure, which, depending on the parameters provided, updates a monetary value in a cell in a non-conforming way.
  • Certifique-se de que a pessoa que conduz a revisão é um indivíduo diferente do autor do código de origem e conhecedor em revisões de código e codificação segura.Make sure the person conducting the review is an individual other than the originating code author and knowledgeable in code-reviews and secure coding.

  • Certifique-se de saber todas as fontes de alterações de código.Be sure to know all sources of code-changes. O código pode estar nos Scripts T-SQL.Code can be in T-SQL Scripts. Podem ser comandos ad-hoc para serem executados ou implantados em formas de Visualizações, Funções, Gatilhos e Procedimentos Armazenados.It can be ad-hoc commands to be executed or be deployed in forms of Views, Functions, Triggers, and Stored Procedures. Pode fazer parte das definições de trabalho do agente SQL (Etapas).It can be part of SQL Agent Job definitions (Steps). Também pode ser executado a partir de pacotes SSIS, Azure Data Factory, e outros serviços.It can also be executed from within SSIS packages, Azure Data Factory, and other services.

Proteção de dadosData protection

A proteção de dados é um conjunto de capacidades para salvaguardar informações importantes do compromisso por encriptação ou obfuscação.Data protection is a set of capabilities for safeguarding important information from compromise by encryption or obfuscation.

Nota

A Microsoft atesta a base de dados Azure SQL e a SQL Managed Instance como sendo compatíveis com o NÍVEL 1 1.Microsoft attests to Azure SQL Database and SQL Managed Instance as being FIPS 140-2 Level 1 compliant. Isto é feito após verificar a utilização estrita 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 os comprimentos-chave necessários, gestão de chaves, geração de chaves e armazenamento de chaves.This is done after verifying the strict use of FIPS 140-2 Level 1 acceptable algorithms and FIPS 140-2 Level 1 validated instances of those algorithms including consistency with required key lengths, key management, key generation, and key storage. Este atestado destina-se a permitir que os nossos clientes respondam à necessidade ou exigência da utilização de instâncias validadas fips 140-2 Nível 1 no processamento de dados ou entrega de sistemas ou aplicações.This attestation is meant to allow our customers to respond to the need or requirement for the use of FIPS 140-2 Level 1 validated instances in the processing of data or delivery of systems or applications. Definimos os termos "CONFORMIDADE FIPS 140-2 Nível 1" e "CONFORMIDADE FIPS 140-2 Nível 1" usados na declaração acima para demonstrar a sua aplicabilidade pretendida ao uso do governo dos EUA e do Canadá do termo diferente "FIPS 140-2 Nível 1 validado".We define the terms "FIPS 140-2 Level 1 compliant" and "FIPS 140-2 Level 1 compliance" used in the above statement to demonstrate their intended applicability to U.S. and Canadian government use of the different term "FIPS 140-2 Level 1 validated."

Encriptar dados em trânsitoEncrypt data in transit

Mencionado em: OSA Practice #6, ISO Control Family: CriptografiaMentioned in: OSA Practice #6, ISO Control Family: Cryptography

Protege os seus dados enquanto os dados se movem entre o seu cliente e o seu servidor.Protects your data while data moves between your client and server. Consulte a Segurança da Rede.Refer to Network Security.

Encriptar dados inativosEncrypt data at rest

Mencionado em: OSA Practice #6, ISO Control Family: CriptografiaMentioned in: OSA Practice #6, ISO Control Family: Cryptography

A encriptação em repouso é a proteção criptográfica dos dados quando são persistir em ficheiros de base de dados, registos e cópias de segurança.Encryption at rest is the cryptographic protection of data when it is persisted in database, log, and backup files.

Como implementar:How to implement:

  • A Encriptação transparente da Base de Dados (TDE) com chaves geridas pelo serviço são ativadas por padrão para quaisquer bases de dados criadas após 2017 na Base de Dados Azure SQL e na SQL Managed Instance.Transparent Database Encryption (TDE) with service managed keys are enabled by default for any databases created after 2017 in Azure SQL Database and SQL Managed Instance.
  • Num caso gerido, se a base de dados for criada a partir de uma operação de restauro utilizando um servidor no local, a definição de TDE da base de dados original será honrada.In a managed instance, if the database is created from a restore operation using an on-premises server, the TDE setting of the original database will be honored. Se a base de dados original não tiver O TDE ativado, recomendamos que o TDE seja ligado manualmente para a instância gerida.If the original database doesn't have TDE enabled, we recommend that TDE be manually turned on for the managed instance.

Boas práticas:Best practices:

  • Não armazene dados que exijam encriptação em repouso na base de dados principal.Don't store data that requires encryption-at-rest in the master database. A base de dados principal não pode ser encriptada com TDE.The master database can't be encrypted with TDE.

  • Utilize chaves geridas pelo cliente no Cofre da Chave Azure se precisar de maior transparência e controlo granular sobre a proteção TDE.Use customer-managed keys in Azure Key Vault if you need increased transparency and granular control over the TDE protection. O Azure Key Vault permite a capacidade de revogar permissões a qualquer momento para tornar a base de dados inacessível.Azure Key Vault allows the ability to revoke permissions at any time to render the database inaccessible. Pode gerir centralmente os protetores TDE juntamente com outras teclas ou rodar o protetor TDE na sua própria agenda utilizando o Cofre da Chave Azure.You can centrally manage TDE protectors along with other keys, or rotate the TDE protector at your own schedule using Azure Key Vault.

  • Se estiver a utilizar chaves geridas pelo cliente no Cofre da Chave Azure, siga os artigos, Diretrizes para configurar o TDE com cofre de chave Azure e como configurar o Geo-DR com o Cofre da Chave Azure.If you're using customer-managed keys in Azure Key Vault, follow the articles, Guidelines for configuring TDE with Azure Key Vault and How to configure Geo-DR with Azure Key Vault.

Proteger dados sensíveis na utilização de utilizadores altamente privilegiados e não autorizadosProtect sensitive data in use from high-privileged, unauthorized users

Os dados em uso são os dados armazenados na memória do sistema de base de dados durante a execução de consultas SQL.Data in use is the data stored in memory of the database system during the execution of SQL queries. Se a sua base de dados armazena dados sensíveis, a sua organização poderá ser obrigada a garantir que os utilizadores altamente privilegiados estão impedidos de visualizar dados sensíveis na sua base de dados.If your database stores sensitive data, your organization may be required to ensure that high-privileged users are prevented from viewing sensitive data in your database. Os utilizadores de alto privilégio, como os operadores da Microsoft ou DBAs na sua organização, devem ser capazes de gerir a base de dados, mas impedidos de visualizar e potencialmente exfiltrar dados sensíveis da memória do processo SQL ou consultando a base de dados.High-privilege users, such as Microsoft operators or DBAs in your organization should be able to manage the database, but prevented from viewing and potentially exfiltrating sensitive data from the memory of the SQL process or by querying the database.

As políticas que determinam quais os dados sensíveis e se os dados sensíveis devem ser encriptados na memória e não acessíveis aos administradores em texto simples, são específicos da sua organização e regulamentos de conformidade a que necessita aderir.The policies that determine which data is sensitive and whether the sensitive data must be encrypted in memory and not accessible to administrators in plaintext, are specific to your organization and compliance regulations you need to adhere to. Consulte o requisito relacionado: Identifique e marque dados sensíveis.Please see the related requirement: Identify and tag sensitive data.

Como implementar:How to implement:

  • Utilize sempre encriptados para garantir que os dados sensíveis não são expostos em texto simples na Base de Dados Azure SQL ou na SQL Managed Instance, mesmo na memória/utilização.Use Always Encrypted to ensure sensitive data isn't exposed in plaintext in Azure SQL Database or SQL Managed Instance, even in memory/in use. Sempre encriptado protege os dados de Administradores de Bases de Dados (DBAs) e administradores em nuvem (ou maus atores que podem personificar utilizadores altamente privilegiados mas não autorizados) e dá-lhe mais controlo sobre quem pode aceder aos seus dados.Always Encrypted protects the data from Database Administrators (DBAs) and cloud admins (or bad actors who can impersonate high-privileged but unauthorized users) and gives you more control over who can access your data.

Boas práticas:Best practices:

  • Sempre Encriptado não é um substituto para encriptar dados em repouso (TDE) ou em trânsito (SSL/TLS).Always Encrypted isn't a substitute to encrypt data at rest (TDE) or in transit (SSL/TLS). Sempre encriptado não deve ser usado para dados não sensíveis para minimizar o desempenho e o impacto da funcionalidade.Always Encrypted shouldn't be used for non-sensitive data to minimize performance and functionality impact. A utilização sempre encriptada em conjunto com a TDE e a Segurança da Camada de Transporte (TLS) é recomendada para uma proteção abrangente dos dados em repouso, em trânsito e em uso.Using Always Encrypted in conjunction with TDE and Transport Layer Security (TLS) is recommended for comprehensive protection of data at-rest, in-transit, and in-use.

  • Avalie o impacto da encriptação das colunas de dados sensíveis identificadas antes de implementar Sempre Encriptado numa base de dados de produção.Assess the impact of encrypting the identified sensitive data columns before you deploy Always Encrypted in a production database. Em geral, a Always Encrypted reduz a funcionalidade de consultas em colunas encriptadas e tem outras limitações, listadas em Sempre Encriptados - Detalhes de Recursos.In general, Always Encrypted reduces the functionality of queries on encrypted columns and has other limitations, listed in Always Encrypted - Feature Details. Por isso, poderá ser necessário rearquitectar a sua aplicação para re-implementar a funcionalidade, uma consulta não suporta, do lado do cliente ou/e refacciona o seu esquema de base de dados, incluindo as definições de procedimentos, funções, vistas e gatilhos armazenados.Therefore, you may need to rearchitect your application to re-implement the functionality, a query does not support, on the client side or/and refactor your database schema, including the definitions of stored procedures, functions, views and triggers. As aplicações existentes podem não funcionar com colunas encriptadas se não aderirem às restrições e limitações de Always Encrypted.Existing applications may not work with encrypted columns if they do not adhere to the restrictions and limitations of Always Encrypted. Enquanto o ecossistema das ferramentas, produtos e serviços da Microsoft que suportam sempre encriptados está a crescer, alguns deles não funcionam com colunas encriptadas.While the ecosystem of Microsoft tools, products and services supporting Always Encrypted is growing, a number of them do not work with encrypted columns. A encriptação de uma coluna também pode ter impacto no desempenho da consulta, dependendo das características da sua carga de trabalho.Encrypting a column may also impact query performance, depending on the characteristics of your workload.

  • Gerir sempre as teclas encriptadas com a separação de funções se estiver a usar Sempre Encriptado para proteger dados de DBAs maliciosos.Manage Always Encrypted keys with role separation if you're using Always Encrypted to protect data from malicious DBAs. Com a separação de papéis, um administrador de segurança cria as chaves físicas.With role separation, a security admin creates the physical keys. O DBA cria a chave principal da coluna e os objetos de metadados chave de encriptação da coluna que descrevem as chaves físicas na base de dados.The DBA creates the column master key and column encryption key metadata objects describing the physical keys in the database. Durante este processo, o administrador de segurança não precisa de acesso à base de dados, e o DBA não precisa de acesso às chaves físicas em texto simples.During this process, the security admin doesn't need access to the database, and the DBA doesn't need access to the physical keys in plaintext.

  • Guarde as suas chaves principais de coluna no Cofre da Chave Azure para facilitar a gestão.Store your column master keys in Azure Key Vault for ease of management. Evite utilizar o Windows Certificate Store (e, em geral, soluções de lojas de chaves distribuídas, em oposição às soluções centrais de gestão de chaves) que dificultam a gestão das chaves.Avoid using Windows Certificate Store (and in general, distributed key store solutions, as opposed central key management solutions) that make key management hard.

  • Pense cuidadosamente através das trocas de utilização de várias teclas (tecla principal de coluna ou teclas de encriptação de colunas).Think carefully through the tradeoffs of using multiple keys (column master key or column encryption keys). Mantenha o número de chaves pequenas para reduzir o custo de gestão das chaves.Keep the number of keys small to reduce key management cost. Uma chave-chave principal de coluna e uma chave de encriptação de coluna por base de dados são normalmente suficientes em ambientes de estado estável (não no meio de uma rotação chave).One column master key and one column encryption key per database is typically sufficient in steady-state environments (not in the middle of a key rotation). Pode precisar de chaves adicionais se tiver diferentes grupos de utilizadores, cada um usando diferentes teclas e acedendo a diferentes dados.You may need additional keys if you have different user groups, each using different keys and accessing different data.

  • Rode as teclas principais da coluna de acordo com os seus requisitos de conformidade.Rotate column master keys per your compliance requirements. Se também precisar de rodar as teclas de encriptação da coluna, considere usar a encriptação online para minimizar o tempo de inatividade da aplicação.If you also need to rotate column encryption keys, consider using online encryption to minimize application downtime.

  • Utilize encriptação determinística se os cálculos (igualdade) nos dados precisarem de ser suportados.Use deterministic encryption if computations (equality) on data need to be supported. Caso contrário, utilize encriptação aleatória.Otherwise, use randomized encryption. Evite utilizar encriptação determinística para conjuntos de dados de baixa entropia ou conjuntos de dados com distribuição publicamente conhecida.Avoid using deterministic encryption for low-entropy data sets, or data sets with publicly known distribution.

  • Se estiver preocupado com o acesso de terceiros aos seus dados legalmente sem o seu consentimento, certifique-se de que todas as aplicações e ferramentas que tenham acesso às chaves e dados em texto simples correm para fora da Microsoft Azure Cloud.If you're concerned about third parties accessing your data legally without your consent, ensure that all application and tools that have access to the keys and data in plaintext run outside of Microsoft Azure Cloud. Sem acesso às chaves, o terceiro não terá forma de desencriptar os dados a menos que contornem a encriptação.Without access to the keys, the third party will have no way of decrypting the data unless they bypass the encryption.

  • Sempre encriptado não suporta facilmente o acesso temporário às chaves (e aos dados protegidos).Always Encrypted doesn't easily support granting temporary access to the keys (and the protected data). Por exemplo, se precisar de partilhar as chaves com um DBA para permitir que o DBA faça algumas operações de limpeza em dados sensíveis e encriptados.For example, if you need to share the keys with a DBA to allow the DBA to do some cleansing operations on sensitive and encrypted data. A única forma de revogar a fiabilidade do acesso aos dados do DBA será rodar tanto as teclas de encriptação da coluna como as teclas principais da coluna que protegem os dados, que é uma operação dispendiosa.The only way to reliability revoke the access to the data from the DBA will be to rotate both the column encryption keys and the column master keys protecting the data, which is an expensive operation.

  • Para aceder aos valores de texto simples em colunas encriptadas, um utilizador precisa de ter acesso à Chave Master da Coluna (CMK) que protege as colunas, que está configurada na loja de chaves que detém o CMK.To access the plaintext values in encrypted columns, a user needs to have access to the Column Master Key (CMK) that protects columns, which is configured in the key store holding the CMK. O utilizador também precisa de ter a DEFINIÇÃO DE CHAVE MASTER DE COLUNA E VER QUAISQUER permissões DE DEFINIÇÃO DE CHAVE DE ENCRIPTAÇÃO DE COLUNAS.The user also needs to have the VIEW ANY COLUMN MASTER KEY DEFINITION and VIEW ANY COLUMN ENCRYPTION KEY DEFINITION database permissions.

Controlar o acesso dos utilizadores de aplicações a dados sensíveis através da encriptaçãoControl access of application users to sensitive data through encryption

A encriptação pode ser usada como uma forma de garantir que apenas utilizadores de aplicações específicas que tenham acesso a chaves criptográficas possam ver ou atualizar os dados.Encryption can be used as a way to ensure that only specific application users who have access to cryptographic keys can view or update the data.

Como implementar:How to implement:

  • Utilize encriptação ao nível celular (CLE).Use Cell-level Encryption (CLE). Consulte o artigo, Criptografe uma Coluna de Dados para obter mais detalhes.See the article, Encrypt a Column of Data for details.
  • Use Sempre Encriptado, mas esteja ciente da sua limitação.Use Always Encrypted, but be aware of its limitation. As limitações estão listadas abaixo.The limitations are listed below.

Melhores práticasBest practices

Ao utilizar o CLE:When using CLE:

  • Controlar o acesso às chaves através de permissões e funções SQL.Control access to keys through SQL permissions and roles.

  • Utilize AES (recomendado AES 256) para encriptação de dados.Use AES (AES 256 recommended) for data encryption. Os algoritmos, tais como RC4, DES e TripleDES, são depreciados e não devem ser usados devido a vulnerabilidades conhecidas.Algorithms, such RC4, DES and TripleDES, are deprecated and shouldn't be used because of known vulnerabilities.

  • Proteja as teclas simétricas com chaves/certificados assimétricos (não palavras-passe) para evitar a utilização de 3DES.Protect symmetric keys with asymmetric keys/certificates (not passwords) to avoid using 3DES.

  • Tenha cuidado ao migrar uma base de dados utilizando Cell-Level Encriptação através da exportação/importação (ficheiros bacpac).Be careful when migrating a database using Cell-Level Encryption via export/import (bacpac files).

Tenha em mente que a Always Encrypted foi concebida principalmente para proteger dados sensíveis na utilização de utilizadores de alto privilégio da Base de Dados Azure SQL (operadores de nuvem, DBAs) - consulte Proteger dados sensíveis na utilização de utilizadores altamente privilegiados e não autorizados.Keep in mind that Always Encrypted is primarily designed to protect sensitive data in use from high-privilege users of Azure SQL Database (cloud operators, DBAs) - see Protect sensitive data in use from high-privileged, unauthorized users. Esteja atento aos seguintes desafios ao utilizar o Always Encrypted para proteger os dados dos utilizadores da aplicação:Be aware of the following challenges when using Always Encrypted to protect data from application users:

  • Por padrão, todos os controladores de clientes da Microsoft que suportam Sempre Encriptado mantêm uma cache global (uma por aplicação) de chaves de encriptação de colunas.By default, all Microsoft client drivers supporting Always Encrypted maintain a global (one per application) cache of column encryption keys. Uma vez que um condutor de cliente adquire uma chave de encriptação de coluna de texto simples contactando uma loja de chaves segurando uma chave principal de coluna, a chave de encriptação da coluna de texto simples está em cache.Once a client driver acquires a plaintext column encryption key by contacting a key store holding a column master key, the plaintext column encryption key is cached. Isto torna os dados isolados dos utilizadores de uma aplicação multiutilizador desafiante.This makes isolating data from users of a multi-user application challenging. Se a sua aplicação se destinar a utilizadores finais ao interagir com uma loja de chaves (como o Azure Key Vault), depois de a consulta de um utilizador povoar a cache com uma chave de encriptação de coluna, uma consulta subsequente que requer a mesma chave mas que é desencadeada por outro utilizador utilizará a chave em cache.If your application impersonates end users when interacting with a key store (such as Azure Key Vault), after a user's query populates the cache with a column encryption key, a subsequent query that requires the same key but is triggered by another user will use the cached key. O controlador não liga para a loja de chaves e não verificará se o segundo utilizador tem permissão para aceder à chave de encriptação da coluna.The driver won't call the key store and it won't check if the second user has a permission to access the column encryption key. Como resultado, o utilizador pode ver os dados encriptados mesmo que o utilizador não tenha acesso às chaves.As a result, the user can see the encrypted data even if the user doesn't have access to the keys. Para conseguir o isolamento dos utilizadores dentro de uma aplicação multiutilizador, pode desativar a chave de encriptação de colunas.To achieve the isolation of users within a multi-user application, you can disable column encryption key caching. A desativação da caching irá causar despesas adicionais de desempenho, uma vez que o controlador terá de contactar a loja de chaves para cada operação de encriptação ou desencriptação de dados.Disabling caching will cause additional performance overheads, as the driver will need to contact the key store for each data encryption or decryption operation.

Proteja os dados contra a visualização não autorizada pelos utilizadores da aplicação, preservando o formato de dadosProtect data against unauthorized viewing by application users while preserving data format

Outra técnica para impedir que utilizadores não autorizados possam visualizar dados é obfundar ou mascarar os dados, preservando tipos e formatos de dados para garantir que as aplicações do utilizador possam continuar a manusear e exibir os dados.Another technique for preventing unauthorized users from viewing data is to obfuscate or mask the data while preserving data types and formats to ensure that user applications can continue handle and display the data.

Como implementar:How to implement:

Nota

Sempre encriptado não funciona com máscara de dados dinâmicos.Always Encrypted does not work with Dynamic Data Masking. Não é possível encriptar e mascarar a mesma coluna, o que implica que é necessário priorizar a proteção de dados em uso vs. mascarar os dados para os utilizadores da sua aplicação através de Dynamic Data Masking.It is not possible to encrypt and mask the same column, which implies that you need to prioritize protecting data in use vs. masking the data for your app users via Dynamic Data Masking.

Boas práticas:Best practices:

Nota

A Máscara dinâmica de dados não pode ser utilizada para proteger dados de utilizadores de alto privilégio.Dynamic Data Masking cannot be used to protect data from high-privilege users. As políticas de mascaramento não se aplicam aos utilizadores com acesso administrativo como db_owner.Masking policies do not apply to users with administrative access like db_owner.

  • Não permita que os utilizadores de aplicações corram consultas ad-hoc (pois podem ser capazes de trabalhar em torno de Dynamic Data Masking).Don't permit app users to run ad-hoc queries (as they may be able to work around Dynamic Data Masking).

  • Utilize uma política de controlo de acesso adequada (através de permissões, funções, RLS SQL) para limitar as permissões do utilizador para escoar atualizações nas colunas mascaradas.Use a proper access control policy (via SQL permissions, roles, RLS) to limit user permissions to make updates in the masked columns. Criar uma máscara numa coluna não impede atualizações a essa coluna.Creating a mask on a column doesn't prevent updates to that column. Os utilizadores que recebem dados mascarados ao consultarem a coluna mascarada, podem atualizar os dados se tiverem permissões de escrita.Users that receive masked data when querying the masked column, can update the data if they have write-permissions.

  • O Mascaramento dinâmico de dados não preserva as propriedades estatísticas dos valores mascarados.Dynamic Data Masking doesn't preserve the statistical properties of the masked values. Isto pode ter impacto nos resultados da consulta (por exemplo, consultas que contenham predicados filtrantes ou juntas nos dados mascarados).This may impact query results (for example, queries containing filtering predicates or joins on the masked data).

Segurança da redeNetwork security

Segurança da rede refere-se a controlos de acesso e boas práticas para proteger os seus dados em trânsito para a Base de Dados Azure SQL.Network security refers to access controls and best practices to secure your data in transit to Azure SQL Database.

Configure o meu cliente para ligar de forma segura à Base de Dados SQL/SQL Gestded InstanceConfigure my client to connect securely to SQL Database/SQL Managed Instance

As melhores práticas sobre como impedir que máquinas e aplicações de clientes com vulnerabilidades bem conhecidas (por exemplo, utilizando protocolos TLS mais antigos e suites de cifra) se liguem à Base de Dados SQL do Azure e à SQL Managed Instance.Best practices on how to prevent client machines and applications with well-known vulnerabilities (for example, using older TLS protocols and cipher suites) from connecting to Azure SQL Database and SQL Managed Instance.

Como implementar:How to implement:

Boas práticas:Best practices:

  • Configure todas as suas apps e ferramentas para ligar à Base de Dados SQL com encriptação ativadaConfigure all your apps and tools to connect to SQL Database with encryption enabled

    • Encriptar = Ligado, TrustServerCertificate = Desligado (ou equivalente com controladores não Microsoft).Encrypt = On, TrustServerCertificate = Off (or equivalent with non-Microsoft drivers).
  • Se a sua aplicação utilizar um controlador que não suporte OLS ou suporte uma versão mais antiga do TLS, substitua o controlador, se possível.If your app uses a driver that doesn't support TLS or supports an older version of TLS, replace the driver, if possible. Se não for possível, avalie cuidadosamente os riscos de segurança.If not possible, carefully evaluate the security risks.

  • Reduzir os vetores de ataque através de vulnerabilidades em SSL 2.0, SSL 3.0, TLS 1.0 e TLS 1.1, desativando-os em máquinas clientes que ligam à Base de Dados Azure SQL por definições de registo de segurança da camada de transporte (TLS).Reduce attack vectors via vulnerabilities in SSL 2.0, SSL 3.0, TLS 1.0, and TLS 1.1 by disabling them on client machines connecting to Azure SQL Database per Transport Layer Security (TLS) registry settings.

  • Consulte as suítes cifras disponíveis no cliente: Cipher Suites in TLS/SSL (Schannel SSP).Check cipher suites available on the client: Cipher Suites in TLS/SSL (Schannel SSP). Especificamente, desative 3DES por encomenda de suíte cifra TLS configurante.Specifically, disable 3DES per Configuring TLS Cipher Suite Order.

  • Para a Base de Dados Azure SQL e para a SQL Managed Instance, a encriptação é aplicada tanto para os tipos de conexão Proxy como para redirecionar.For Azure SQL Database and SQL Managed Instance, encryption is enforced for both Proxy and Redirect connection types. Para Azure SQL Managed Instance, utilize o tipo de ligação Proxy (padrão) pois este impõe encriptação a partir do lado do servidor.For Azure SQL Managed Instance, use the Proxy connection type (default) as this enforces encryption from the server side. O tipo de ligação Redirect atualmente não suporta a aplicação da encriptação e só está disponível em ligações IP privadas.The Redirect connection type currently doesn't support encryption enforcement and is only available on private IP connections.

  • Para mais informações, consulte Azure SQL Database Connectivity Architecture - Política de conexão.For more information, see Azure SQL Database Connectivity Architecture - Connection policy.

Minimizar a superfície de ataqueMinimize attack surface

Minimize o número de funcionalidades que podem ser atacadas por um utilizador malicioso.Minimize the number of features that can be attacked by a malicious user. Implementar controlos de acesso à rede para a Base de Dados Azure SQL.Implement network access controls for Azure SQL Database.

Mencionado em: Osa Practice #5Mentioned in: OSA Practice #5

Como implementar:How to implement:

Na Base de Dados SQL:In SQL Database:

  • Definir Permitir o acesso aos serviços de Azure a OFF ao nível do servidorSet Allow Access to Azure services to OFF at the server-level
  • Utilize pontos finais do Serviço VNet e regras de firewall VNet.Use VNet Service endpoints and VNet Firewall Rules.
  • Utilizar Link Privado (pré-visualização).Use Private Link (preview).

Em SQL Caso gerido:In SQL Managed Instance:

Boas práticas:Best practices:

  • Restringir o acesso à Base de Dados Azure SQL e à SQL Managed Instance através da ligação num ponto final privado (por exemplo, utilizando uma via de dados privado):Restricting access to Azure SQL Database and SQL Managed Instance by connecting on a private endpoint (for example, using a private data path):

    • Um caso gerido pode ser isolado dentro de uma rede virtual para impedir o acesso externo.A managed instance can be isolated inside a virtual network to prevent external access. As aplicações e ferramentas que se encontram na mesma rede virtual ou esprevada na mesma região poderiam aceder diretamente à mesma.Applications and tools that are in the same or peered virtual network in the same region could access it directly. Aplicações e ferramentas que se encontram em diferentes regiões poderiam utilizar a ligação virtual rede-rede para rede virtual ou o circuito ExpressRoute para estabelecer a ligação.Applications and tools that are in different region could use virtual-network-to-virtual-network connection or ExpressRoute circuit peering to establish connection. O cliente deve utilizar os Grupos de Segurança da Rede (NSG) para restringir o acesso ao porto 1433 apenas a recursos que exijam acesso a uma instância gerida.Customer should use Network Security Groups (NSG) to restrict access over port 1433 only to resources that require access to a managed instance.
    • Para uma Base de Dados SQL, utilize a funcionalidade Private Link que fornece um IP privado dedicado para o servidor dentro da sua rede virtual.For a SQL Database, use the Private Link feature that provides a dedicated private IP for the server inside your virtual network. Também pode utilizar pontos finais de serviço de rede virtual com regras de firewall de rede virtual para restringir o acesso aos seus servidores.You can also use Virtual network service endpoints with virtual network firewall rules to restrict access to your servers.
    • Os utilizadores móveis devem utilizar ligações VPN ponto a local para se conectarem sobre a via dos dados.Mobile users should use point-to-site VPN connections to connect over the data path.
    • Os utilizadores ligados à sua rede no local devem utilizar a ligação VPN local ou o ExpressRoute para se conectarem ao longo da via de dados.Users connected to their on-premises network should use site-to-site VPN connection or ExpressRoute to connect over the data path.
  • Pode aceder à Base de Dados Azure SQL e à SQL Managed Instance ligando-se a um ponto final público (por exemplo, utilizando uma via de dados públicos).You can access Azure SQL Database and SQL Managed Instance by connecting to a public endpoint (for example, using a public data path). Devem ser consideradas as seguintes boas práticas:The following best practices should be considered:

Nota

O ponto final público sql Managed Instance não está ativado por defeito e deve ser explicitamente ativado.The SQL Managed Instance public endpoint is not enabled by default and it and must be explicitly enabled. Se a política da empresa não permitir a utilização de pontos finais públicos, utilize a Política Azure para evitar, em primeiro lugar, a colocação de pontos finais públicos.If company policy disallows the use of public endpoints, use Azure Policy to prevent enabling public endpoints in the first place.

Configure o Power BI para ligações seguras à Base de Dados SQL/SqL Gestded InstanceConfigure Power BI for secure connections to SQL Database/SQL Managed Instance

Boas práticas:Best practices:

Configure o Serviço de Aplicações para ligações seguras à Base de Dados de Base de Dados SQL/SQL Gestão de InstânciasConfigure App Service for secure connections to SQL Database/SQL Managed Instance

Boas práticas:Best practices:

Configurar a máquina virtual Azure hospedagem para ligações seguras à Base de Dados SQL/SQL Gestão de InstânciasConfigure Azure virtual machine hosting for secure connections to SQL Database/SQL Managed Instance

Boas práticas:Best practices:

  • Utilize uma combinação de regras de Permitir e Negar sobre os NSGs das máquinas virtuais Azure para controlar quais as regiões que podem ser acedidas a partir do VM.Use a combination of Allow and Deny rules on the NSGs of Azure virtual machines to control which regions can be accessed from the VM.

  • Certifique-se de que o seu VM está configurado de acordo com o artigo, As melhores práticas de segurança para cargas de trabalho iaaS em Azure.Ensure that your VM is configured per the article, Security best practices for IaaS workloads in Azure.

  • Certifique-se de que todos os VMs estão associados a uma rede virtual específica e a uma sub-rede.Ensure that all VMs are associated with a specific virtual network and subnet.

  • Avalie se precisa da rota padrão 0.0.0/Internet por orientação sobre túneis forçados.Evaluate if you need the default route 0.0.0.0/Internet per the guidance at about forced tunneling.

    • Se sim – por exemplo, sub-rede frontal – então mantenha a rota predefinido.If yes – for example, front-end subnet - then keep the default route.
    • Se não – por exemplo, sub-rede de nível médio ou de back-end – então permitir a escavação de força para que nenhum tráfego vá pela Internet para chegar ao local (também conhecido como cross-premis).If no – for example, middle tier or back-end subnet – then enable force tunneling so no traffic goes over Internet to reach on-premises (a.k.a cross-premises).
  • Implemente as rotas predefinicionais opcionais se estiver a usar o seu conhecimento ou ligação às instalações.Implement optional default routes if you're using peering or connecting to on-premises.

  • Implemente as Rotas Definidas para o Utilizador se precisar enviar todo o tráfego da rede virtual para um Aparelho Virtual de Rede para inspeção de pacotes.Implement User Defined Routes if you need to send all traffic in the virtual network to a Network Virtual Appliance for packet inspection.

  • Utilize pontos finais de serviço de rede virtual para acesso seguro a serviços PaaS como o Azure Storage através da rede de espinha dorsal Azure.Use virtual network service endpoints for secure access to PaaS services like Azure Storage via the Azure backbone network.

Proteger contra ataques de Negação de Serviço Distribuídos (DDoS)Protect against Distributed Denial of Service (DDoS) attacks

Os ataques de Negação de Serviço Distribuído (DDoS) são tentativas de um utilizador malicioso enviar uma inundação de tráfego de rede para a Base de Dados Azure SQL com o objetivo de esmagar a infraestrutura Azure e fazê-la rejeitar logins válidos e carga de trabalho.Distributed Denial of Service (DDoS) attacks are attempts by a malicious user to send a flood of network traffic to Azure SQL Database with the aim of overwhelming the Azure infrastructure and causing it to reject valid logins and workload.

Mencionado em: Osa Practice #9Mentioned in: OSA Practice #9

Como implementar:How to implement:

A proteção DDoS é ativada automaticamente como parte da Plataforma Azure.DDoS protection is automatically enabled as part of the Azure Platform. Inclui a monitorização do tráfego sempre on-on e a mitigação em tempo real dos ataques a nível da rede em pontos finais públicos.It includes always-on traffic monitoring and real-time mitigation of network-level attacks on public endpoints.

Boas práticas:Best practices:

  • Siga as práticas descritas no Minimiz Attack Surface ajuda a minimizar as ameaças de ataque do DDoS.Follow the practices described in Minimize Attack Surface helps minimize DDoS attack threats.

  • O alerta de credenciais de proteção de ameaças avançadas sql ajuda a detetar ataques de força bruta.The Advanced Threat Protection Brute force SQL credentials alert helps to detect brute force attacks. Em alguns casos, o alerta pode até distinguir cargas de trabalho de teste de penetração.In some cases, the alert can even distinguish penetration testing workloads.

  • Para aplicações de hospedagem Azure VM conectando-se à Base de Dados SQL:For Azure VM hosting applications connecting to SQL Database:

    • Siga a recomendação para restringir o acesso através de pontos finais virados para a Internet no Azure Security Center.Follow recommendation to Restrict access through Internet-facing endpoints in Azure Security Center.
    • Utilize conjuntos de escala de máquina virtual para executar várias instâncias da sua aplicação em VMs Azure.Use virtual machine scale sets to run multiple instances of your application on Azure VMs.
    • Desative o RDP e o SSH da Internet para evitar ataques de força bruta.Disable RDP and SSH from Internet to prevent brute force attack.

Monitorização, Registo e AuditoriaMonitoring, Logging, and Auditing

Esta secção refere-se a capacidades para o ajudar a detetar atividades anómalas que indicam tentativas invulgares e potencialmente nocivas de aceder ou explorar bases de dados.This section refers to capabilities to help you detect anomalous activities indicating unusual and potentially harmful attempts to access or exploit databases. Também descreve as melhores práticas para configurar a auditoria da base de dados para rastrear e capturar eventos de base de dados.It also describes best practices to configure database auditing to track and capture database events.

Proteger bases de dados contra ataquesProtect databases against attacks

A proteção avançada de ameaças permite-lhe detetar e responder a potenciais ameaças à medida que ocorrem, fornecendo alertas de segurança sobre atividades anómalas.Advanced threat protection enables you to detect and respond to potential threats as they occur by providing security alerts on anomalous activities.

Como implementar:How to implement:

  • Utilize proteção de ameaças avançadas para o SQL detetar tentativas incomuns e potencialmente nocivas de aceder ou explorar bases de dados, incluindo:Use Advanced Threat Protection for SQL to detect unusual and potentially harmful attempts to access or exploit databases, including:
    • Ataque de injeção SQL.SQL injection attack.
    • Credenciais roubo/fuga.Credentials theft/leak.
    • Abuso de privilégios.Privilege abuse.
    • Exfiltração de dados.Data exfiltration.

Boas práticas:Best practices:

  • Configurar o Azure Defender para o SQL   para um servidor específico ou uma instância gerida.Configure Azure Defender for SQL for a specific server or a managed instance. Também pode configurar o Azure Defender para SQL para todos os servidores e casos geridos numa subscrição, mudando para o nível Standard do Azure Security Center.You can also configure Azure Defender for SQL for all servers and managed instances in a subscription by switching to Azure Security Center Standard tier.

  • Para uma experiência de investigação completa, é recomendado para permitir a Auditoria de Bases de Dados SQL.For a full investigation experience, it's recommended to enable SQL Database Auditing. Com a auditoria, pode rastrear eventos de base de dados e escrevê-los num registo de auditoria numa conta de Armazenamento Azure ou no espaço de trabalho do Azure Log Analytics.With auditing, you can track database events and write them to an audit log in an Azure Storage account or Azure Log Analytics workspace.

Auditoria a eventos críticos de segurançaAudit critical security events

O rastreio de eventos de base de dados ajuda-o a compreender a atividade da base de dados.Tracking of database events helps you understand database activity. Pode obter informações sobre discrepâncias e anomalias que possam indicar preocupações comerciais ou suspeitas de violações de segurança.You can gain insight into discrepancies and anomalies that could indicate business concerns or suspected security violations. Também permite e facilita a adesão às normas de conformidade.It also enables and facilitates adherence to compliance standards.

Como implementar:How to implement:

  • Permitir auditoria de base de dados SQL ou Auditoria de Instância Gerida para rastrear eventos de base de dados e escrevê-los para um registo de auditoria na sua conta de Armazenamento de Azure, Log Analytics (pré-visualização) ou Centros de Eventos (pré-visualização).Enable SQL Database Auditing or Managed Instance Auditing to track database events and write them to an audit log in your Azure Storage account, Log Analytics workspace (preview), or Event Hubs (preview).

  • Os registos de auditoria podem ser escritos numa conta de Armazenamento Azure, num espaço de trabalho log Analytics para consumo por registos do Azure Monitor ou para o centro de eventos para consumo utilizando o centro de eventos.Audit logs can be written to an Azure Storage account, to a Log Analytics workspace for consumption by Azure Monitor logs, or to event hub for consumption using event hub. Pode configurar qualquer combinação destas opções, e os registos de auditoria serão escritos a cada um.You can configure any combination of these options, and audit logs will be written to each.

Boas práticas:Best practices:

  • Ao configurar a Auditoria de Bases de Dados SQL no seu servidor ou auditoria de instâncias geridas para eventos de auditoria, todas as bases de dados existentes e recém-criadas nesse servidor serão auditadas.By configuring SQL Database Auditing on your server or Managed Instance Auditing to audit events, all existing and newly created databases on that server will be audited.
  • Por política de auditoria por defeito inclui todas as ações (consultas, procedimentos armazenados e logins bem sucedidos e falhados) contra as bases de dados, o que pode resultar em elevado volume de registos de auditoria.By default auditing policy includes all actions (queries, stored procedures and successful and failed logins) against the databases, which may result in high volume of audit logs. Recomenda-se que os clientes configurem auditorias para diferentes tipos de ações e grupos de ação utilizando o PowerShell.It's recommended for customers to configure auditing for different types of actions and action groups using PowerShell. Configurar isto ajudará a controlar o número de ações auditadas e minimizar o risco de perda de eventos.Configuring this will help control the number of audited actions, and minimize the risk of event loss. As configurações de auditoria personalizadas permitem que os clientes capturem apenas os dados de auditoria necessários.Custom audit configurations allow customers to capture only the audit data that is needed.
  • Os registos de auditoria podem ser consumidos diretamente no portal Azure,ou a partir do local de armazenamento que foi configurado.Audit logs can be consumed directly in the Azure portal, or from the storage location that was configured.

Nota

Permitir a auditoria ao Log Analytics incorrerá em custos baseados nas taxas de ingestão.Enabling auditing to Log Analytics will incur cost based on ingestion rates. Esteja ciente do custo associado com a utilização desta opção,ou considere guardar os registos de auditoria numa conta de armazenamento Azure.Please be aware of the associated cost with using this option, or consider storing the audit logs in an Azure storage account.

Recursos adicionais:Further resources:

Registos de auditoria segurosSecure audit logs

Restringir o acesso à conta de armazenamento para apoiar a Separação de Direitos e separar a DBA dos Auditores.Restrict access to the storage account to support Separation of Duties and to separate DBA from Auditors.

Como implementar:How to implement:

  • Ao guardar os registos de auditoria para o Azure Storage, certifique-se de que o acesso à Conta de Armazenamento está limitado aos princípios mínimos de segurança.When saving Audit logs to Azure Storage, make sure that access to the Storage Account is restricted to the minimal security principles. Controle quem tem acesso à conta de armazenamento.Control who has access to the storage account.
  • Para mais informações, consulte autorizando o acesso ao Azure Storage.For more information, see Authorizing access to Azure Storage.

Boas práticas:Best practices:

Gestão de SegurançaSecurity Management

Esta secção descreve os diferentes aspetos e boas práticas para gerir a postura de segurança das suas bases de dados.This section describes the different aspects and best practices for managing your databases security posture. Inclui as melhores práticas para garantir que as suas bases de dados estão configuradas para cumprir os padrões de segurança, para descobrir e classificar e rastrear o acesso a dados potencialmente sensíveis nas suas bases de dados.It includes best practices for ensuring your databases are configured to meet security standards, for discovering and for classifying and tracking access to potentially sensitive data in your databases.

Certifique-se de que as bases de dados estão configuradas para atender às melhores práticas de segurançaEnsure that the databases are configured to meet security best practices

Melhorar proativamente a segurança da sua base de dados descobrindo e remediando potenciais vulnerabilidades de base de dados.Proactively improve your database security by discovering and remediating potential database vulnerabilities.

Como implementar:How to implement:

  • Permitir que a SQL Vulnerability Assessment (VA) digitalize a sua base de dados por questões de segurança e que seja executada periodicamente nas suas bases de dados.Enable SQL Vulnerability Assessment (VA) to scan your database for security issues, and to automatically run periodically on your databases.

Boas práticas:Best practices:

  • Inicialmente, execute VA nas suas bases de dados e itere, remediando verificações falhadas que se opõem às melhores práticas de segurança.Initially, run VA on your databases and iterate by remediating failing checks that oppose security best practices. Configurar linhas de base para configurações aceitáveis até que a varredura saia limpa, ou todas as verificações foram passadas.Set up baselines for acceptable configurations until the scan comes out clean, or all checks has passed.

  • Configure as análises periódicas recorrentes para executar uma vez por semana e configurar a pessoa relevante para receber e-mails sumários.Configure periodic recurring scans to run once a week and configure the relevant person to receive summary emails.

  • Reveja o resumo do VA após cada digitalização semanal.Review the VA summary following each weekly scan. Para quaisquer vulnerabilidades encontradas, avalie o desvio do resultado da verificação anterior e determine se a verificação deve ser resolvida.For any vulnerabilities found, evaluate the drift from the previous scan result and determine if the check should be resolved. Reveja se há uma razão legítima para a alteração na configuração.Review if there's a legitimate reason for the change in configuration.

  • Resolver verificações e atualizar linhas de base quando relevantes.Resolve checks and update baselines where relevant. Crie itens de bilhetes para resolver ações e rastreá-los até que sejam resolvidos.Create ticket items for resolving actions and track these until they're resolved.

Recursos adicionais:Further resources:

Identificar e marcar dados sensíveisIdentify and tag sensitive data

Descubra colunas que possam conter dados sensíveis.Discover columns that potentially contain sensitive data. O que é considerado dados sensíveis depende fortemente do cliente, da regulação da conformidade, etc., e precisa de ser avaliado pelos utilizadores responsáveis por esses dados.What is considered sensitive data heavily depends on the customer, compliance regulation, etc., and needs to be evaluated by the users in charge of that data. Classifique as colunas para utilizar cenários avançados de auditoria e proteção baseados na sensibilidade.Classify the columns to use advanced sensitivity-based auditing and protection scenarios.

Como implementar:How to implement:

  • Utilize a SQL Data Discovery and Classification para descobrir, classificar, rotular e proteger os dados sensíveis nas suas bases de dados.Use SQL Data Discovery and Classification to discover, classify, label, and protect the sensitive data in your databases.
    • Veja as recomendações de classificação que são criadas pela descoberta automatizada no painel de deteção e classificação de dados SQL.View the classification recommendations that are created by the automated discovery in the SQL Data Discovery and Classification dashboard. Aceite as classificações relevantes, de modo a que os seus dados sensíveis são persistentemente marcados com etiquetas de classificação.Accept the relevant classifications, such that your sensitive data is persistently tagged with classification labels.
    • Adicione manualmente classificações para quaisquer campos de dados sensíveis adicionais que não foram descobertos pelo mecanismo automatizado.Manually add classifications for any additional sensitive data fields that were not discovered by the automated mechanism.
  • Para mais informações, consulte a SQL Data Discovery and Classification.For more information, see SQL Data Discovery and Classification.

Boas práticas:Best practices:

  • Monitorize regularmente o painel de classificação para uma avaliação precisa do estado de classificação da base de dados.Monitor the classification dashboard on a regular basis for an accurate assessment of the database's classification state. Um relatório sobre o estado de classificação da base de dados pode ser exportado ou impresso para partilhar para efeitos de conformidade e auditoria.A report on the database classification state can be exported or printed to share for compliance and auditing purposes.

  • Monitorize continuamente o estado dos dados sensíveis recomendados na Avaliação de Vulnerabilidade SQL.Continuously monitor the status of recommended sensitive data in SQL Vulnerability Assessment. Rastree a regra sensível de descoberta de dados e identifique qualquer deriva nas colunas recomendadas para a classificação.Track the sensitive data discovery rule and identify any drift in the recommended columns for classification.

  • Utilize a classificação de uma forma adaptada às necessidades específicas da sua organização.Use classification in a way that is tailored to the specific needs of your organization. Personalize a sua política de Proteção de Informação (etiquetas de sensibilidade, tipos de informação, lógica de descoberta) na política de Proteção de Informação SQL no Centro de Segurança Azure.Customize your Information Protection policy (sensitivity labels, information types, discovery logic) in the SQL Information Protection policy in Azure Security Center.

Rastrear o acesso a dados sensíveisTrack access to sensitive data

Monitorize quem acede a dados sensíveis e capture consultas sobre dados sensíveis em registos de auditoria.Monitor who accesses sensitive data and capture queries on sensitive data in audit logs.

Como implementar:How to implement:

Boas práticas:Best practices:

Visualizar o estado de segurança e conformidadeVisualize security and compliance status

Utilize um sistema unificado de gestão de segurança de infraestrutura que fortaleça a postura de segurança dos seus centros de dados (incluindo bases de dados na Base de Dados SQL).Use a unified infrastructure security management system that strengthens the security posture of your data centers (including databases in SQL Database). Consulte uma lista de recomendações relativas à segurança das suas bases de dados e ao estado de conformidade.View a list of recommendations concerning the security of your databases and compliance status.

Como implementar:How to implement:

Ameaças de segurança comuns e potenciais mitigaçõesCommon security threats and potential mitigations

Esta secção ajuda-o a encontrar medidas de segurança para proteger contra certos vetores de ataque.This section helps you find security measures to protect against certain attack vectors. Espera-se que a maioria das mitigações possa ser alcançada seguindo uma ou mais das diretrizes de segurança acima.It's expected that most mitigations can be achieved by following one or more of the security guidelines above.

Ameaça de segurança: Exfiltração de dadosSecurity threat: Data exfiltration

A exfiltração de dados é a cópia, transferência ou recuperação não autorizada de dados de um computador ou servidor.Data exfiltration is the unauthorized copying, transfer, or retrieval of data from a computer or server. Consulte uma definição para exfiltração de dados na Wikipédia.See a definition for data exfiltration on Wikipedia.

A ligação ao servidor por um ponto final público apresenta um risco de exfiltração de dados, uma vez que requer que os clientes abram as suas firewalls a IPs públicos.Connecting to server over a public endpoint presents a data exfiltration risk as it requires customers open their firewalls to public IPs.

Cenário 1: Uma aplicação num Azure VM liga-se a uma base de dados na Base de Dados Azure SQL.Scenario 1: An application on an Azure VM connects to a database in Azure SQL Database. Um ator desonesto tem acesso ao VM e compromete-o.A rogue actor gets access to the VM and compromises it. Neste cenário, a exfiltração de dados significa que uma entidade externa que utiliza o VM fraudulento se conecta à base de dados, copia dados pessoais e armazena-os num armazenamento de bolhas ou numa base de dados SQL diferente numa subscrição diferente.In this scenario, data exfiltration means that an external entity using the rogue VM connects to the database, copies personal data, and stores it in a blob storage or a different SQL Database in a different subscription.

Cenário 2: Um Rouge DBA.Scenario 2: A Rouge DBA. Este cenário é muitas vezes levantado por clientes sensíveis à segurança das indústrias regulamentadas.This scenario is often raised by security sensitive customers from regulated industries. Neste cenário, um utilizador de alto privilégio poderá copiar dados da Base de Dados Azure SQL para outra subscrição não controlada pelo titular dos dados.In this scenario, a high privilege user might copy data from Azure SQL Database to another subscription not controlled by the data owner.

Potenciais atenuações:Potential mitigations:

Hoje, a Azure SQL Database e a SQL Managed Instance oferecem as seguintes técnicas para mitigar ameaças de exfiltração de dados:Today, Azure SQL Database and SQL Managed Instance offers the following techniques for mitigating data exfiltration threats:

  • Utilize uma combinação de regras de Permitir e Negar sobre os NSGs de VMs Azure para controlar quais as regiões que podem ser acedidas a partir do VM.Use a combination of Allow and Deny rules on the NSGs of Azure VMs to control which regions can be accessed from the VM.
  • Se utilizar um servidor na Base de Dados SQL, desa estale as seguintes opções:If using a server in SQL Database, set the following options:
    • Permitir que os Serviços Azure off.Allow Azure Services to OFF.
    • Apenas permita o tráfego a partir da sub-rede que contém o seu Azure VM, configurando uma regra VNet Firewall.Only allow traffic from the subnet containing your Azure VM by setting up a VNet Firewall rule.
    • Utilizar link privadoUse Private Link
  • Para a SQL Managed Instance, a utilização do acesso IP privado por predefinição aborda a primeira preocupação de exfiltração de dados de um VM fraudulento.For SQL Managed Instance, using private IP access by default addresses the first data exfiltration concern of a rogue VM. Ligue a função de delegação da sub-rede numa sub-rede para definir automaticamente a política mais restritiva numa sub-rede SQL Managed Instance.Turn on the subnet delegation feature on a subnet to automatically set the most restrictive policy on a SQL Managed Instance subnet.
  • A preocupação da Rogue DBA está mais exposta com a SQL Managed Instance, uma vez que tem uma área de superfície maior e os requisitos de networking são visíveis para os clientes.The Rogue DBA concern is more exposed with SQL Managed Instance as it has a larger surface area and networking requirements are visible to customers. A melhor mitigação para isso é aplicar todas as práticas neste guia de segurança para evitar o cenário rogue DBA em primeiro lugar (não só para exfiltração de dados).The best mitigation for this is applying all of the practices in this security guide to prevent the Rogue DBA scenario in the first place (not only for data exfiltration). Sempre Encriptado é um método para proteger dados sensíveis encriptando-os e mantendo a chave inacessível para o DBA.Always Encrypted is one method to protect sensitive data by encrypting it and keeping the key inaccessible for the DBA.

Aspetos de segurança da continuidade e disponibilidade do negócioSecurity aspects of business continuity and availability

A maioria das normas de segurança aborda a disponibilidade de dados em termos de continuidade operacional, conseguida através da implementação de redundância e capacidades de fail-over para evitar pontos únicos de falha.Most security standards address data availability in terms of operational continuity, achieved by implementing redundancy and fail-over capabilities to avoid single points of failure. Para cenários de desastres, é uma prática comum manter cópias de segurança dos ficheiros Data e Log.For disaster scenarios, it's a common practice to keep backups of Data and Log files.A secção seguinte fornece uma visão geral de alto nível das capacidades que são incorporadas em Azure. The following section provides a high-level overview of the capabilities that are built-into Azure. Também fornece opções adicionais que podem ser configuradas para atender a necessidades específicas:It also provides additional options that can be configured to meet specific needs:

Passos seguintesNext steps