Defesa em profundidade com Microsoft Azure

Defesa em profundidade com Microsoft Azure

Um conceito importante no mundo de cibersegurança é a defesa em profundidade (defense in-depth). Nesse texto falo sobre algumas características desse conceito e como ele pode ser aplicado no seu ambiente Azure.


O desenho acima representa as camadas que devem ser protegidas em um ambiente. A proteção começa pela camada externa e vai sendo aplicada nas camadas interiores, por isso é importante não negligenciar a segurança em nenhuma das fases, ao ponto que a camada em questão, é protegida primariamente pela camada externa à si mesma (aplicação > dados, física > perímetro, etc).

As soluções utilizadas para proteção das camadas nesse artigo são exclusivamente da Microsoft. As empresas costumam ter soluções de diversos fornecedores em seu parque tecnológico, então entenda que para escolher a melhor solução, é importante entender corretamente o caso de uso e as necessidades da empresa.

Quando falamos de cloud, um conceito comentado com frequência, é a responsabilidade compartilhada. Esse conceito diz respeito às tarefas que são de responsabilidade do cliente e as que são de responsabilidade do provedor de cloud. Isso é tema para outro artigo, porém é importante que você esteja minimamente familiarizado para entender que através das camadas, a responsabilidade passa a ser cada vez mais do cliente.


Física

Em um ambiente de nuvem pública e fazendo referência ao modelo de responsabilidade compartilhada, a segurança física do ambiente é de responsabilidade total do provedor. Todos as variáveis relacionadas à segurança dos ambientes de data center são de completa custódia da empresa e o cliente não precisa se preocupar com isso.

A segurança dos data centers começa com a não divulgação de sua localização. Empresas como Microsoft, Amazon, Google, Oracle, tem múltiplos data centers ao redor do mundo e o local onde estão implantados é informação sigilosa, conhecida por poucas pessoas até mesmo dentro da própria empresa.

Agora na área dos data centers, a segurança é reforçada do início ao fim, pois a responsabilidade de se gerenciar tantas informações de tantos clientes e empresas diferentes é gigantesca. O acesso é extremamente restrito, permitido apenas a pessoas liberadas, é feito por agentes de segurança da própria empresa e de empresas contratadas. O ambiente contém câmeras em todos os pontos, para garantir que nenhum visitante indesejado tenha a oportunidade de chegar próximo da estrutura principal.

Para entrar no ambiente, existem diversas camadas de segurança que a pessoa deve passar, desde cadastro, revista e sendo sempre monitorada.

Pelo fato das empresas adotarem diferentes modelos de segurança para seus data centers, não é possível detalhar como a segurança é feita, porém no canal da Google Cloud no youtube temos esse vídeo, que é um tour por algumas áreas de um de seus data centers e ao longo do vídeo podemos ver como a segurança é prioridade máxima para as empresas, garantindo a confiança dos clientes de que suas informações estarão protegidas o tempo todo.


IAM

Entrando em seu ambiente cloud, a primeira barreira de defesa é a sua solução de IAM (Identity and Access Management), ou Gerenciamento de Identidade e Acesso. A solução adotada será responsável por controlar quem se autentica e o que essa pessoa poderá fazer no ambiente.

O controle das permissões dos usuários deve ser feito de maneira que o acesso fornecido seja somente o necessário (princípio do privilégio mínimo), reduzindo a margem para possíveis problemas causados pelo comprometimento de alguma identidade ou até mesmo por alguém agindo de má fé, querendo prejudicar a empresa.

Dito isso, aqui estão algumas soluções que podem ser utilizadas quando você estiver planejando seu ambiente de nuvem pública:

Microsoft Entra — Azure AD

Solução de identidade oficial da Microsoft e um dos IdPs (Identity Providers, Provedores de Identidade)mais utilizados no mundo. O Azure AD conta com uma série de recursos que podem ser utilizados para incrementar a segurança dos acessos aos teus recursos.

As Políticas de Acesso Condicional (Conditional Access Policies) permitem a criação de regras que analisam características do acesso de um usuário e realizam algumas ações determinadas, como exigir um segundo fator de autenticação. As políticas fornecem diversas opções de controles, então você pode aplicá-las apenas a uma ou a um grupo de aplicações, restringir sua aplicação a um grupo de usuários, análisar os riscos identificados e aplicar ações de acordo com a gravidade do risco (baixo, médio e crítico), entre outras coisas que você pode conferir neste link.

O Gerenciamento de Identidades Privilegiadas (PIM, Privileged Identity Management) fornece uma forma de proteger acessos com as chamadas permissões privilegiadas, que são permissões aplicadas a grandes quantidades de recursos ou que permitem que o usuário realize ações que devem ser restritas à poucas pessoas.

Defender for Identity

Como componente do Defender for Cloud, o Microsoft Defender for Identity fornece capacidades de segurança para identidades aplicáveis à cloud e ao on-premise (Active Directory).

Essa solução analisa os logs gerados pelos IdPs e identifica atividades suspeitas, compreendidas pelo estudo das diversas informações diferentes que são capturadas pela Microsoft em cada ação dos usuários.

Microsoft Entra — Permission Management

Recentemente lançada, o Gerenciamento de Permissões (Permission Management) do Microsoft Entra fornece uma interface centralizada para que os administradores e times de segurança tenham ampla visão das permissões que os usuários tem nas plataformas (Azure, AWS e GCP).


Perímetro

O perímetro é a segunda camada “lógica” dentro do ambiente cloud, e nela temos recursos que são “transparentes” para as aplicações. Todo ambiente contém alguns desses recursos que serão descritos à seguir, pois sua função é proteger contra os mais diversos ataques e manter os negócios operando sem problemas.

Azure DDoS Protection

Habilitado com o plano standard em todas as subscriptions por padrão, o Azure DDoS Protection tem a função de proteger seu ambiente de ataques DoS (Denial of Service) e DDoS (Distributed Denial of Service).

Fortalecido com o uso de Inteligência Artificial e Machine Learning, o Azure DDoS Protection é um componente robusto e eficiente, que análisa os padrões das requisições e consegue antecipar ataques com a inteligência presente no recurso.

Azure WAF

O Web Application Firewall é o recurso responsável pela proteção das aplicações que funcionam na camada 7 do modelo OSI. Esse recurso tem a capacidade de proteger aplicações web contra os mais variados ataques, como injeção SQL e cross-site scripting (XSS).

O Azure WAF não é criado como um recurso próprio, mas sim uma capacidade em outros recursos. Hoje os serviços que contém a capacidade de WAF disponível na Azure são: Azure CDN (Content Delivery Network), Azure Application Gateway e Azure Front Door. Esses recursos foram “escolhidos” para terem essa funcionalidade de WAF pois são recursos que em uma arquitetura empresarial de larga escala, ficam à frente dos componentes mais sensíveis (como bases de dados e servidores de aplicação). A presença em múltiplas zonas de disponibilidades (e até em múltiplas regiões como é o caso do front door) faz com que a proteção do ambiente se estenda de acordo com a escala do recurso.

Azure Firewall

Diferente do WAF, o Azure Firewall opera nas camadas 3 e 7 do modelo OSI. Com ele é possível construir diversas políticas de segurança de acordo com a origem e com o destino do tráfego. Podemos restringir acesso à sites, realizar análise nos pacotes trafegados nas requisições e bloquear requisições de origens classificadas pela Microsoft como perigosas.


Rede

A rede na cloud começa pela VNet (Virtual Network), que conterá todos os recursos que forem criados. Em um ambiente empresarial, é comum ter centenas de redes diferentes, variando de acordo com o tamanho da empresa. As redes são segmentadas em subnets, que são “pedaços” separados da rede, com range de IPs próprio e com capacidades próprias.

Para manter as VNets e subnets mais seguras, podemos utilizar esses 3 recursos:

Network Security Group

Os NSGs são soluções que podem ser criadas e anexadas às subnets e às interfaces de rede das máquinas virtuais.

São regras que permitem/bloqueiam a entrada e saída de tráfego dentro daquele recurso onde está aplicada. As regras são “simples”, mas contém uma série de variáveis que permitem que você consiga deixar de forma explícita, o que deve ser liberado e o que deve ser bloqueado naquele NSG.

As regras suportam IPs de origem e destino, portas, protocolos, FQDN (fully qualified domain name), entre outras informações que podem ser visualizadas aqui.

Application Security Group

Os ASGs são mais peculiares do que os NSGs. Apesar da semelhança no nome, os ASGs e os NSGs funcionam de maneira parecida mas para propósitos diferentes.

Os ASGs foram criados para incrementar a proteção de aplicações que foram hospedadas em máquinas virtuais. As interfaces de rede das VMs são colocadas em um grupo lógico que permite a criação de regras (como as do NSG) para todas as interfaces de rede que estão presente no mesmo grupo.

Bonus: Network Watcher

As soluções do Network Watcher não são necessariamente de segurança, afinal de contas elas não agem em cima de uma ameaça ou regra criada. O NW fornece uma série de recursos que permitem analisar o tráfego de rede para visualização de logs, entender o funcionamento dos NSGs, verificar o que entra e o que sai de uma VM, entre outras ferramentas.

O NW é muito útil no momento que precisamos entender o funcionamento do tráfego de rede em um ambiente grande com diversas camadas de segurança, componentes e cheio de segmentações de rede.


Compute

Entrando nas 3 camadas do meio, vamos falar sobre compute. A camada de compute (ou computação), é responsável pela execução das aplicações da sua empresa. Nessa camada, temos máquinas virtuais, contêineres, oquestradores de contêiner (azure kubernetes service, azure red hat openshift, etc) entre outras soluções.

Antes de apresentar as soluções dessa camada, um breve histórico:

Um grande problema encontrado em ambientes empresariais, é a exposição desnecessária de portas em máquinas virtuais. Portas como a 22 (SSH) são usadas para acessar o recurso diretamente, dando controle sobre o recurso ao usuário que está conectado. Outro problema comumente encontrado é a falta de segurança das credenciais de acesso à esses recursos (chaves SSH e arquivo de conexão RDP).

Azure Bastion

O Azure Bastion tem o propósito de resolver um desses problemas. Uma vez criado, o recurso permite que o usuário se conecte à máquina virtual de maneira segura, utilizando o protocolo HTTPS (porta 443). O usuário precisa conectar no portal azure e realizar o login para conseguir acesso à máquina, isso sem a preocupação de deixar suas credenciais “soltas” e inseguras, como é o caso de uma conexão direta ao servidor por meio de SSH ou RDP.

JIT VM Access (Just In Time VM Access)

O segundo problema apontado, é resolvido por esse recurso. O JIT VM Access (traduzido ficaria algo como Acesso à VM em tempo real) é parte do Defender for Cloud e realiza a abertura de certas portas apenas quando se faz necessário.

Uma VM tem um NSG atrelado à sua interface de rede e nesse NSG não há regras de liberação das portas 3389 (RDP) ou 22 (SSH). Caso seja necessário se conectar ao recurso, o JIT realiza a abertura das portas por um tempo determinado, para que o usuário possa concluir suas tarefas e após encerrá-las, a porta será fechada novamente e o recurso estará seguro.


Aplicação

Chegando ao nível do código da aplicação, ainda temos que nos preocupar. É importante que saibamos que os códigos que estamos colocando em produção, são seguros e estão sendo monitorados constantemente pelas ferramentas adotadas.

Mesmo com a inserção da segurança no ciclo DevOps (DevSecOps) e com todas as ferramentas de análise de código (SAST/DAST), não podemos simplesmente assumir que uma aplicação é/está segura, é importante a avaliação constante dos recursos que temos.

Defender for Container

Mais um componente da suíte do Defender for Cloud, o Defender for Containers permite aumentar a segurança do seu ambiente que utiliza contêineres.

A plataforma é habilitada por padrão para realizar assessments de segurança em clusters AKS (Azure Kubernetes Service), EKS (Elastic Kubernetes Service — AWS) e em plataformas Kubernetes on-premise.

A ferramenta oferece todas as funcionalidades “padrão” que as outras soluções do defender for cloud disponibilizam (pontuação de segurança, alertas, recomendações, etc.).


Dados

Por último (e com certeza não menos importante) temos a camada central do ambiente. Os dados.

A camada de dados é representada por todas as soluções que de alguma forma armazenam informações (bases de dados, discos, storage accounts, etc.). Em uma era onde os dados são fundamentais em literalmente todos os aspectos, mantê-los seguros at-rest (em descanso), in transit (em trânsito/em movimento) e longe de atacantes é fundamental para a estratégia da empresa.

Para cumprir com esses requisitos, alguns recursos contém funcionalidades nativas para garantir a segurança dessas informações. Aqui estão algumas:

Transparent Data Encryption (TDE)

Funcionalidade disponível em bases de dados SQL (Azure SQL Database, SQL Server e Synapse Analytics), o TDE realiza a criptografia at rest dos dados presentes nos recursos em que é aplicado.

Storage Service Encryption

Recurso ativo por padrão nas storage accounts, o SSE realiza a criptografia e a descriptografia at rest, sem afetar a performance do recurso e de forma completamente transparente ao usuário.

Essa funcionalidade independe do tipo de storage account que você criou, elas sempre estarão protegidas por esse recurso.

Como mencionei no início do texto, é importante que a segurança de todas as camadas seja tratada de maneira séria. A segurança de uma camada se inicia pela segurança de sua camada mais externa, que tem o papel não só de proteger os recursos condizentes à aquele nível, mas também aos recursos que estão em camadas mais “profundas” que ela.

Analise o ambiente da empresa onde você trabalha, seja um ambiente em nuvem ou on-premise. As camadas costumam ser facilmente identificáveis. Veja quais soluções estão sendo utilizadas, se há algum tipo de cobertura diferente sendo feita na empresa, ou até mesmo se há algum gap de proteção que você identificou.

Se você trabalha com ambientes Azure, esse texto é a sua referência para construção de uma arquitetura em camadas segura.


Caso tenha alguma dúvida, não deixe de comentar.

Obrigado pela atenção ❤