Considerações de segurança para instâncias de contêiner do Azure
Este artigo apresenta considerações de segurança para usar as Instâncias de Contêiner do Azure para executar aplicativos de contêiner. Os tópicos incluem:
- Recomendações de segurança para gerenciar imagens e segredos para Instâncias de Contêiner do Azure
- Considerações para o ecossistema de contêiner durante todo o ciclo de vida do contêiner, para qualquer plataforma de contêiner
Para obter recomendações abrangentes que ajudam a melhorar a postura de segurança de sua implantação, consulte a linha de base de segurança do Azure para instâncias de contêiner.
Recomendações de segurança para instâncias de contêiner do Azure
Utilizar um registo privado
Os contentores são criados a partir de imagens que estão armazenadas num ou mais repositórios. Esses repositórios podem pertencer a um registro público, como o Docker Hub, ou a um registro privado. Um exemplo de um registo privado é o Docker Trusted Registry, que pode ser instalado no local ou numa cloud privada virtual. Você também pode usar serviços de registro de contêiner privado baseados em nuvem, incluindo o Registro de Contêiner do Azure.
Uma imagem de contêiner disponível publicamente não garante segurança. As imagens de contêiner consistem em várias camadas de software e cada camada de software pode ter vulnerabilidades. Para ajudar a reduzir a ameaça de ataques, você deve armazenar e recuperar imagens de um registro privado, como o Registro de Contêiner do Azure ou o Registro Confiável do Docker. Além de fornecer um registro privado gerenciado, o Registro de Contêiner do Azure dá suporte à autenticação baseada em entidade de serviço por meio da ID do Microsoft Entra para fluxos de autenticação básica. Essa autenticação inclui acesso baseado em função para somente leitura (pull), gravação (push) e outras permissões.
Monitorar e digitalizar imagens de contêiner
Aproveite as soluções para digitalizar imagens de contêiner em um registro privado e identificar possíveis vulnerabilidades. É importante entender a profundidade da deteção de ameaças que as diferentes soluções oferecem.
Por exemplo, o Registro de Contêiner do Azure se integra opcionalmente ao Microsoft Defender for Cloud para verificar automaticamente todas as imagens do Linux enviadas por push para um registro. O scanner Qualys integrado do Microsoft Defender for Cloud deteta vulnerabilidades de imagem, classifica-as e fornece orientação de correção.
Soluções de monitorização de segurança e digitalização de imagens, como o Twistlock e o Aqua Security , também estão disponíveis através do Azure Marketplace.
Proteja as credenciais
Os contêineres podem se espalhar por vários clusters e regiões do Azure. Portanto, você deve proteger as credenciais necessárias para logins ou acesso à API, como senhas ou tokens. Certifique-se de que apenas usuários privilegiados possam acessar esses contêineres em trânsito e em repouso. Inventarie todos os segredos de credenciais e, em seguida, exija que os desenvolvedores usem ferramentas emergentes de gerenciamento de segredos projetadas para plataformas de contêiner. Certifique-se de que sua solução inclui bancos de dados criptografados, criptografia TLS para dados secretos em trânsito e controle de acesso baseado em função do Azure (Azure RBAC) de privilégios mínimos. O Azure Key Vault é um serviço de nuvem que protege chaves de criptografia e segredos (como certificados, cadeias de conexão e senhas) para aplicativos em contêineres. Como esses dados são confidenciais e críticos para os negócios, proteja o acesso aos cofres de chaves para que apenas aplicativos e usuários autorizados possam acessá-los.
Considerações para o ecossistema de contêineres
As seguintes medidas de segurança, bem implementadas e geridas de forma eficaz, podem ajudá-lo a proteger e proteger o seu ecossistema de contentores. Essas medidas se aplicam a todo o ciclo de vida do contêiner, desde o desenvolvimento até a implantação da produção, e a uma variedade de orquestradores, hosts e plataformas de contêineres.
Use o gerenciamento de vulnerabilidades como parte do ciclo de vida de desenvolvimento de contêineres
Ao usar o gerenciamento eficaz de vulnerabilidades durante todo o ciclo de vida de desenvolvimento do contêiner, você melhora as chances de identificar e resolver problemas de segurança antes que eles se tornem um problema mais sério.
Procurar vulnerabilidades
Novas vulnerabilidades são descobertas o tempo todo, portanto, a verificação e identificação de vulnerabilidades é um processo contínuo. Incorpore a verificação de vulnerabilidades em todo o ciclo de vida do contêiner:
- Como verificação final em seu pipeline de desenvolvimento, você deve executar uma verificação de vulnerabilidade em contêineres antes de enviar as imagens para um registro público ou privado.
- Continue a verificar imagens de contêiner no Registro para identificar quaisquer falhas que foram de alguma forma perdidas durante o desenvolvimento e para resolver quaisquer vulnerabilidades recém-descobertas que possam existir no código usado nas imagens de contêiner.
Mapear vulnerabilidades de imagem para contêineres em execução
Você precisa ter um meio de mapear vulnerabilidades identificadas em imagens de contêiner para contêineres em execução, para que os problemas de segurança possam ser mitigados ou resolvidos.
Certifique-se de que apenas imagens aprovadas sejam usadas em seu ambiente
Há mudança e volatilidade suficientes em um ecossistema de contêineres sem permitir contêineres desconhecidos também. Permitir apenas imagens de contêiner aprovadas. Dispor de ferramentas e processos para monitorizar e prevenir a utilização de imagens de contentor não aprovadas.
Uma maneira eficaz de reduzir a superfície de ataque e evitar que os desenvolvedores cometam erros críticos de segurança é controlar o fluxo de imagens de contêiner em seu ambiente de desenvolvimento. Por exemplo, você pode sancionar uma única distribuição Linux como uma imagem base, de preferência uma que seja enxuta (Alpine ou CoreOS em vez de Ubuntu), para minimizar a superfície para possíveis ataques.
A assinatura de imagem ou impressão digital pode fornecer uma cadeia de custódia que permite verificar a integridade dos contêineres. Por exemplo, o Registro de Contêiner do Azure dá suporte ao modelo de confiança de conteúdo do Docker, que permite que os editores de imagens assinem imagens enviadas por push para um Registro e que os consumidores de imagens extraiam apenas imagens assinadas.
Permitir apenas registos aprovados
Uma extensão da garantia de que seu ambiente use apenas imagens aprovadas é permitir apenas o uso de registros de contêiner aprovados. Exigir o uso de registros de contêiner aprovados reduz sua exposição ao risco, limitando o potencial de introdução de vulnerabilidades desconhecidas ou problemas de segurança.
Garanta a integridade das imagens durante todo o ciclo de vida
Parte do gerenciamento da segurança durante todo o ciclo de vida do contêiner é garantir a integridade das imagens do contêiner no registro e à medida que são alteradas ou implantadas na produção.
Imagens com vulnerabilidades, mesmo menores, não devem ter permissão para serem executadas em um ambiente de produção. Idealmente, todas as imagens implantadas em produção devem ser salvas em um registro privado acessível a alguns poucos. Mantenha o número de imagens de produção pequeno para garantir que elas possam ser gerenciadas de forma eficaz.
Como é difícil identificar a origem do software a partir de uma imagem de contêiner disponível publicamente, crie imagens da fonte para garantir o conhecimento da origem da camada. Quando surge uma vulnerabilidade numa imagem de contentor criada automaticamente, os clientes podem encontrar um caminho mais rápido para a resolução. Com uma imagem pública, os clientes precisariam encontrar a raiz de uma imagem pública para corrigi-la ou obter outra imagem segura do editor.
Não é garantido que uma imagem completamente digitalizada implantada em produção esteja atualizada durante toda a vida útil do aplicativo. Vulnerabilidades de segurança podem ser relatadas para camadas da imagem que não eram conhecidas anteriormente ou foram introduzidas após a implantação de produção.
Audite periodicamente as imagens implantadas em produção para identificar imagens desatualizadas ou que não são atualizadas há algum tempo. Você pode usar metodologias de implantação azul-verde e mecanismos de atualização contínua para atualizar imagens de contêiner sem tempo de inatividade. Você pode digitalizar imagens usando as ferramentas descritas na seção anterior.
Use um pipeline de integração contínua (CI) com verificação de segurança integrada para criar imagens seguras e enviá-las para seu registro privado. A análise de vulnerabilidade incorporada na solução de CI assegura que as imagens que passam em todos os testes são enviadas para o registo privado a partir do qual as cargas de trabalho em produção são implementadas.
Uma falha no pipeline de CI garante que as imagens vulneráveis não sejam enviadas para o registro privado usado para implantações de carga de trabalho de produção. Ele também automatiza a verificação de segurança de imagem se houver um número significativo de imagens. Caso contrário, auditar manualmente as imagens relativamente a vulnerabilidades pode ser extremamente moroso e suscetível a erros.
Impor privilégios mínimos em tempo de execução
O conceito de privilégios mínimos é uma prática recomendada de segurança básica que também se aplica a contêineres. Quando uma vulnerabilidade é explorada, geralmente dá ao invasor acesso e privilégios iguais aos do aplicativo ou processo comprometido. Garantir que os contêineres operem com os menores privilégios e acesso necessários para realizar o trabalho reduz sua exposição ao risco.
Reduza a superfície de ataque do contêiner removendo privilégios desnecessários
Você também pode minimizar a superfície de ataque potencial removendo quaisquer processos ou privilégios não utilizados ou desnecessários do tempo de execução do contêiner. Os contêineres privilegiados são executados como root. Se um usuário mal-intencionado ou carga de trabalho escapar em um contêiner privilegiado, o contêiner será executado como raiz nesse sistema.
Pré-aprovar arquivos e executáveis que o contêiner tem permissão para acessar ou executar
Reduzir o número de variáveis ou incógnitas ajuda a manter um ambiente estável e confiável. Limitar os contêineres para que eles possam acessar ou executar apenas arquivos e executáveis pré-aprovados ou seguros é um método comprovado de limitar a exposição ao risco.
É muito mais fácil gerenciar uma lista segura quando ela é implementada desde o início. Uma lista segura fornece uma medida de controle e capacidade de gerenciamento à medida que você aprende quais arquivos e executáveis são necessários para que o aplicativo funcione corretamente.
Uma lista segura não só reduz a superfície de ataque, mas também pode fornecer uma linha de base para anomalias e prevenir os casos de uso do "vizinho barulhento" e cenários de fuga de contêineres.
Impor a segmentação de rede em contêineres em execução
Para ajudar a proteger os contêineres em uma sub-rede contra riscos de segurança em outra sub-rede, mantenha a segmentação de rede (ou nanossegmentação) ou segregação entre contêineres em execução. Manter a segmentação da rede também pode ser necessário para usar contêineres em setores que são obrigados a atender aos mandatos de conformidade.
Por exemplo, a ferramenta de parceiros Aqua fornece uma abordagem automatizada para nano-segmentação. O Aqua monitoriza as atividades da rede de contentores em tempo de execução. Ele identifica todas as conexões de rede de entrada e saída de/para outros contêineres, serviços, endereços IP e a Internet pública. A nanossegmentação é criada automaticamente com base no tráfego monitorizado.
Monitorar a atividade do contêiner e o acesso do usuário
Como em qualquer ambiente de TI, você deve monitorar consistentemente a atividade e o acesso do usuário ao seu ecossistema de contêiner para identificar rapidamente qualquer atividade suspeita ou maliciosa. O Azure fornece soluções de monitoramento de contêiner, incluindo:
O Azure Monitor for containers monitora o desempenho de suas cargas de trabalho implantadas em ambientes Kubernetes hospedados no Serviço Kubernetes do Azure (AKS). O Azure Monitor for containers oferece visibilidade de desempenho coletando métricas de memória e processador de controladores, nós e contêineres disponíveis no Kubernetes por meio da API de métricas.
A solução Azure Container Monitoring ajuda você a exibir e gerenciar outros hosts de contêiner do Docker e do Windows em um único local. Por exemplo:
- Exiba informações detalhadas de auditoria que mostram comandos usados com contêineres.
- Solucione problemas de contêineres exibindo e pesquisando logs centralizados sem precisar visualizar remotamente hosts do Docker ou do Windows.
- Encontre contêineres que podem ser barulhentos e consumir recursos em excesso em um host.
- Visualize informações centralizadas sobre CPU, memória, armazenamento e uso de rede e desempenho para contêineres.
A solução suporta orquestradores de contêineres, incluindo Docker Swarm, DC/OS, Kubernetes não gerenciados, Service Fabric e Red Hat OpenShift.
Monitorar a atividade de recursos de contêiner
Monitore sua atividade de recursos, como arquivos, rede e outros recursos que seus contêineres acessam. O monitoramento da atividade e do consumo de recursos é útil tanto para o monitoramento de desempenho quanto como medida de segurança.
O Azure Monitor habilita o monitoramento principal para os serviços do Azure, permitindo a coleta de métricas, logs de atividade e logs de diagnóstico. Por exemplo, o registo de atividade indica quando são criados ou modificados os novos recursos.
Estão disponíveis métricas que fornecem estatísticas de desempenho de recursos diferentes e até do sistema operativo no interior de uma máquina virtual. Você pode exibir esses dados com um dos exploradores no portal do Azure e criar alertas com base nessas métricas.
Registrar todo o acesso de usuário administrativo do contêiner para auditoria
Mantenha uma trilha de auditoria precisa do acesso administrativo ao seu ecossistema de contêiner, incluindo seu cluster Kubernetes, registro de contêiner e imagens de contêiner. Esses registros podem ser necessários para fins de auditoria e serão úteis como prova forense após qualquer incidente de segurança. As soluções do Azure incluem:
- Integração do Serviço Kubernetes do Azure com o Microsoft Defender for Cloud para monitorar a configuração de segurança do ambiente de cluster e gerar recomendações de segurança
- Solução Azure Container Monitoring
- Logs de recursos para Instâncias de Contêiner do Azure e Registro de Contêiner do Azure
Próximos passos
Consulte a linha de base de segurança do Azure para Instâncias de Contêiner para obter recomendações abrangentes que ajudam a melhorar a postura de segurança de sua implantação.
Saiba mais sobre como usar o Microsoft Defender for Cloud para deteção de ameaças em tempo real em seus ambientes em contêineres.
Saiba mais sobre como gerenciar vulnerabilidades de contêineres com as soluções Twistlock e Aqua Security.