Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Um desafio significativo na operação de um sistema complexo como o Microsoft Azure é garantir que somente softwares autorizados sejam executados no sistema. Os softwares não autorizados apresentam diversos riscos a qualquer empresa:
- Riscos de segurança, como ferramentas dedicadas de ataque, malwares personalizados e softwares de terceiros com vulnerabilidades conhecidas
- Riscos de conformidade quando o processo de gerenciamento de alterações aprovadas não é usado ao incluir novos softwares
- Risco de qualidade devido a softwares desenvolvidos externamente, que podem não atender aos requisitos operacionais do negócio
A Azure enfrenta o mesmo desafio com complexidade significativa. Milhares de servidores rodam softwares que milhares de engenheiros desenvolvem e mantêm. Essa escala apresenta uma grande superfície de ataque que processos de negócios sozinhos não conseguem gerenciar.
Adicionando uma porta de autorização
O Azure utiliza um processo de engenharia rico que implementa portões na segurança, conformidade e qualidade do software implantado. Esse processo inclui controle de acesso ao código-fonte, revisões de código entre pares, análise estática para vulnerabilidades de segurança, o Ciclo de Vida de Desenvolvimento de Segurança (SDL) da Microsoft e testes funcionais e de qualidade. A Microsoft precisa garantir que o software implantado flua por esse processo. A integridade do código ajuda a alcançar essa garantia.
Integridade de código como uma porta de autorização
Integridade de código é um serviço em nível de kernel que ficou disponível a partir do Windows Server 2016. A Integridade de Código pode aplicar uma política estrita de controle de execução sempre que um driver ou uma biblioteca de vínculo dinâmico (DLL) seja carregado, um binário executável seja executado ou um script seja executado. Há sistemas semelhantes, como o DM-Verity, para o Linux. Uma política de integridade de código consiste em um conjunto de indicadores de autorização, como certificados de assinatura de código ou hashes de arquivo SHA-256, que o kernel verifica antes de carregar ou executar um binário ou script.
A integridade do código permite que administradores de sistemas definam uma política que autoriza apenas binários e scripts que certificados específicos assinam ou que correspondem a hashes SHA-256 especificados. O kernel aplica essa política bloqueando a execução de tudo o que não atende à política definida.
Uma política de integridade de código pode bloquear softwares críticos em produção e causar uma interrupção, a menos que a política esteja perfeitamente correta. Diante dessa preocupação, você pode se perguntar por que o monitoramento de segurança não é suficiente para detectar execução não autorizada de software. A integridade do código possui um modo de auditoria que, em vez de impedir a execução, pode alertar quando um software não autorizado é executado. Alertar pode agregar muito valor para enfrentar riscos de conformidade. No entanto, para riscos de segurança como ransomware ou malwares personalizados, atrasar a resposta em até alguns segundos pode ser a diferença entre proteção e um adversário ganhar uma posição persistente na sua frota. No Azure, a Microsoft faz investimentos significativos para gerenciar qualquer risco de que a integridade do código contribua para uma interrupção que afete o cliente.
Processo de compilação
Como descrito anteriormente, o sistema de compilação do Azure possui um conjunto rico de testes para garantir que as mudanças de software sejam seguras e compatíveis. Após a validação de uma compilação, o sistema de compilação a assina usando um certificado de compilação do Azure. O certificado indica que a build passou por todo o processo de gerenciamento de mudanças. O teste final que a build realiza é a Validação de Assinatura de Código (CSV). O CSV confirma que os binários recém-construídos atendem à política de integridade do código antes da Microsoft implantá-los em produção. Essa validação dá à Microsoft alta confiança de que binários assinados incorretamente não causarão uma queda que impacte o cliente. Se o CSV encontrar um problema, a compilação falha e os engenheiros responsáveis são acionados para investigar e corrigir o problema.
Segurança durante a implantação
Mesmo que o Azure execute CSV para cada compilação, alguma alteração ou inconsistência na produção ainda pode causar uma queda relacionada à integridade do código. Por exemplo, uma máquina pode executar uma versão antiga da política de integridade do código, ou pode estar em um estado pouco saudável que produz falsos positivos na integridade do código. Em escala Azure, a Microsoft já viu de tudo. O Azure continua protegendo contra o risco de uma queda durante a implantação.
Todas as mudanças no Azure devem ser implantadas por meio de uma série de etapas. As primeiras etapas são instâncias internas de teste do Azure. A próxima etapa atende apenas outras equipes de produtos da Microsoft. O estágio final atende a clientes de terceiros. Quando o Azure implementa uma alteração, ela avança por cada estágio, um de cada vez, e faz uma pausa para avaliar a integridade do estágio. Se a mudança não tiver impacto negativo, ela avança para a próxima etapa. Se a Microsoft fizer uma alteração ruim em uma política de integridade de código, a implantação em etapas detecta a mudança e a reverte.
Resposta a incidentes
Mesmo com essa proteção em camadas, um servidor da frota pode bloquear softwares devidamente autorizados e causar um problema para o cliente, um dos piores cenários da Microsoft. A camada final de defesa é a investigação humana. Sempre que a integridade do código bloqueia um arquivo, gera um alerta para que os engenheiros de plantão investiguem. O alerta permite que os engenheiros iniciem investigações de segurança e intervenham, seja o problema indicativo de um ataque real, falso positivo ou outra situação que impacte o cliente. Esse alerta minimiza o tempo necessário para mitigar quaisquer problemas relacionados à integridade do código.
Próximas etapas
Para saber mais sobre como a Microsoft impulsiona a integridade e a segurança da plataforma, veja: