Segurança de runtime - Amazon EKS

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Segurança de runtime

A segurança de tempo de execução fornece proteção ativa para seus contêineres enquanto eles estão em execução. A ideia é detectar e and/or evitar que atividades maliciosas ocorram dentro do contêiner. Isso pode ser feito com vários mecanismos no kernel Linux ou nas extensões do kernel integradas ao Kubernetes, como recursos do Linux, computação segura (seccomp) ou. AppArmor SELinux Também há opções como a Amazon GuardDuty e ferramentas de terceiros que podem ajudar a estabelecer linhas de base e detectar atividades anômalas com menos configuração manual dos mecanismos do kernel Linux.

Importante

Atualmente, o Kubernetes não fornece nenhum mecanismo nativo para carregar seccomp ou perfis nos nós AppArmor. SELinux Eles precisam ser carregados manualmente ou instalados nos Nodes quando são inicializados. Isso precisa ser feito antes de referenciá-los em seus pods, pois o agendador não sabe quais nós têm perfis. Veja abaixo como ferramentas como o Security Profiles Operator podem ajudar a automatizar o provisionamento de perfis em nós.

Contextos de segurança e controles Kubernetes integrados

Muitos mecanismos de segurança de tempo de execução do Linux estão totalmente integrados ao Kubernetes e podem ser configurados por meio de contextos de segurança do Kubernetes. Uma dessas opções é o privileged sinalizador, que é false por padrão e, se ativado, é essencialmente equivalente à raiz no host. Quase sempre é inapropriado ativar o modo privilegiado em cargas de trabalho de produção, mas há muitos outros controles que podem fornecer privilégios mais granulares aos contêineres, conforme apropriado.

Capacidades do Linux

Os recursos do Linux permitem que você conceda determinados recursos a um pod ou contêiner sem fornecer todas as habilidades do usuário root. Os exemplos incluemCAP_NET_ADMIN, que permite configurar interfaces de rede ou firewalls, ouCAP_SYS_TIME, que permite a manipulação do relógio do sistema.

Seccomp

Com a computação segura (seccomp), você pode impedir que um aplicativo em contêiner faça determinadas chamadas de sistema para o kernel do sistema operacional hospedeiro subjacente. Embora o sistema operacional Linux tenha algumas centenas de chamadas de sistema, a maior parte delas não é necessária para executar contêineres. Ao restringir quais syscalls podem ser feitas por um contêiner, você pode reduzir efetivamente a superfície de ataque do seu aplicativo.

O Seccomp funciona interceptando chamadas de sistema e permitindo a passagem apenas daquelas que foram listadas na lista de permissões. O Docker tem um perfil seccomp padrão que é adequado para a maioria das cargas de trabalho de uso geral, e outros tempos de execução de contêineres, como containerd, fornecem padrões comparáveis. Você pode configurar seu contêiner ou pod para usar o perfil seccomp padrão do tempo de execução do contêiner adicionando o seguinte à securityContext seção da especificação do pod:

securityContext: seccompProfile: type: RuntimeDefault

A partir de 1.22 (em alfa, estável a partir de 1.27), o código acima RuntimeDefault pode ser usado para todos os pods em um Node usando um único sinalizador kubelet,. --seccomp-default Então, o perfil especificado em só securityContext é necessário para outros perfis.

Também é possível criar seus próprios perfis para coisas que exigem privilégios adicionais. Isso pode ser muito tedioso de fazer manualmente, mas existem ferramentas como o Inspektor Gadget (também recomendado na seção de segurança de rede para gerar políticas de rede) e o Security Profiles Operator que suportam o uso de ferramentas como eBPF ou logs para registrar os requisitos básicos de privilégios como perfis seccomp. O Security Profiles Operator permite ainda automatizar a implantação de perfis gravados em nós para uso por pods e contêineres.

AppArmor and SELinux

AppArmor e SELinux são conhecidos como sistemas de controle de acesso obrigatório ou MAC. Eles têm um conceito semelhante ao seccomp, mas com habilidades diferentes APIs , permitindo o controle de acesso, por exemplo, para caminhos específicos do sistema de arquivos ou portas de rede. O suporte para essas ferramentas depende da distribuição Linux, com Debian/Ubuntu suporte AppArmor e suporte para RHEL/CentOS/Bottlerocket/Amazon Linux 2023 SELinux. Consulte também a seção de segurança da infraestrutura para uma discussão mais aprofundada sobre SELinux.

Ambos AppArmor SELinux estão integrados ao Kubernetes, mas a partir do Kubernetes 1.28, os AppArmor perfis devem ser especificados por meio de anotações, enquanto os SELinux rótulos podem ser definidos diretamente no campo Opções no contexto de segurança. SELinux

Assim como nos perfis seccomp, o operador de perfis de segurança mencionado acima pode ajudar na implantação de perfis nos nós do cluster. (No futuro, o projeto também visa gerar perfis para AppArmor e SELinux como faz para o seccomp.)

Recomendações

Use a Amazon GuardDuty para monitorar o tempo de execução e detectar ameaças aos seus ambientes EKS

Se você atualmente não tem uma solução para monitorar continuamente os tempos de execução do EKS, analisar os registros de auditoria do EKS e verificar se há malware e outras atividades suspeitas, a Amazon recomenda fortemente o uso da Amazon GuardDuty para clientes que desejam uma forma simples, rápida, segura, escalável e econômica de proteger seus ambientes da AWS com apenas um clique. GuardDuty A Amazon é um serviço de monitoramento de segurança que analisa e processa fontes de dados fundamentais, como eventos de CloudTrail gerenciamento da AWS, registros de eventos da AWS CloudTrail , registros de fluxo de VPC (de instâncias do Amazon EC2), registros de auditoria do Kubernetes e registros de DNS. Também inclui monitoramento de tempo de execução do EKS. Ele usa feeds de inteligência de ameaças continuamente atualizados, como listas de endereços IP e domínios maliciosos e aprendizado de máquina para identificar atividades inesperadas, potencialmente não autorizadas e maliciosas em seu ambiente da AWS. Isso pode incluir problemas como escalonamento de privilégios, uso de credenciais expostas ou comunicação com endereços IP e domínios maliciosos, presença de malware em suas instâncias do Amazon EC2 e cargas de trabalho de contêineres EKS ou descoberta de atividades suspeitas de API. GuardDuty informa você sobre o status do seu ambiente da AWS produzindo descobertas de segurança que você pode visualizar no GuardDuty console ou por meio da Amazon EventBridge. GuardDuty também fornece suporte para você exportar suas descobertas para um bucket do Amazon Simple Storage Service (S3) e integrá-las a outros serviços, como o AWS Security Hub e o Detective.

Assista à palestra técnica on-line da AWS “Detecção aprimorada de ameaças para o Amazon EKS com a Amazon GuardDuty — AWS Online Tech Talks” para ver como habilitar esses recursos adicionais de segurança do EKS step-by-step em minutos.

Opcionalmente: use uma solução terceirizada para monitoramento do tempo de execução

Criar e gerenciar perfis seccomp e Apparmor pode ser difícil se você não estiver familiarizado com a segurança do Linux. Se você não tiver tempo para se tornar proficiente, considere usar uma solução comercial terceirizada. Muitos deles foram além dos perfis estáticos, como Apparmor e seccomp, e começaram a usar o aprendizado de máquina para bloquear ou alertar sobre atividades suspeitas. Algumas dessas soluções podem ser encontradas abaixo na seção de ferramentas. Opções adicionais podem ser encontradas no AWS Marketplace for Containers.

Considere os recursos do add/dropping Linux antes de escrever políticas seccomp

Os recursos envolvem várias verificações nas funções do kernel acessíveis por syscalls. Se a verificação falhar, a syscall normalmente retornará um erro. A verificação pode ser feita logo no início de uma syscall específica ou mais profundamente no kernel em áreas que podem ser acessadas por meio de várias syscalls diferentes (como gravar em um arquivo privilegiado específico). O Seccomp, por outro lado, é um filtro de syscall que é aplicado a todas as syscalls antes de serem executadas. Um processo pode configurar um filtro que permita revogar seu direito de executar determinadas syscalls ou argumentos específicos para determinadas syscalls.

Antes de usar o seccomp, considere se os recursos do adding/removing Linux oferecem o controle de que você precisa. Consulte Configuração de recursos para contêineres para obter mais informações.

Veja se você pode atingir seus objetivos usando as Políticas de Segurança do Pod (PSPs)

As políticas de segurança do Pod oferecem várias maneiras diferentes de melhorar sua postura de segurança sem introduzir complexidade indevida. Explore as opções disponíveis PSPs antes de se aventurar na criação de perfis seccomp e Apparmor.

Atenção

A partir do Kubernetes 1.25, PSPs foram removidos e substituídos pelo controlador Pod Security Admission. As alternativas de terceiros que existem incluem OPA/Gatekeeper Kyverno. Uma coleção de restrições e modelos de restrições do Gatekeeper para implementar políticas comumente encontradas em PSPs pode ser extraída do repositório da biblioteca do Gatekeeper em. GitHub E muitos substitutos para PSPs podem ser encontrados na biblioteca de políticas do Kyverno, incluindo a coleção completa de padrões de segurança do Pod.

Ferramentas e recursos