Este documento descreve como configurar perfis do Kubernetes Seccomp (modo de computação seguro) para pods híbridos do Apigee para melhorar a segurança restringindo as chamadas do sistema (syscalls) que os contentores podem fazer.
Acerca dos perfis de Seccomp no Kubernetes
O seccomp é uma funcionalidade de segurança do kernel do Linux que limita as chamadas do sistema que um processo pode fazer. Quando usado com o Kubernetes, pode aplicar perfis Seccomp ao securityContext de um pod para restringir as chamadas de sistema disponíveis para os respetivos contentores. Isto ajuda a reduzir a superfície de ataque do contentor e mitiga o risco de fugas do contentor ou escalada de privilégios aplicando o princípio do menor privilégio.
Para mais informações sobre o Seccomp no Kubernetes, consulte o artigo Secure Computing (Seccomp) na documentação do Kubernetes.
No modo híbrido, os perfis de Seccomp não estão ativados por predefinição. Pode optar por aplicar um perfil Seccomp a componentes híbridos adicionando o objeto seccompProfile ao seu ficheiro overrides.yaml.
Configurar perfis de Seccomp
Pode aplicar perfis Seccomp globalmente, por ambiente ou por componente no seu ficheiro overrides.yaml adicionando o bloco de configuração securityContext.seccompProfile. O Hybrid suporta os seguintes tipos de perfis Seccomp:
RuntimeDefault: o perfil predefinido especificado pelo tempo de execução do contentor. Esta é a opção recomendada, uma vez que oferece um nível de segurança razoável, mantendo a compatibilidade para a maioria das cargas de trabalho.Unconfined: não aplica restrições Seccomp ao pod. Esta é a opção menos segura e deve ser usada com precaução.
Precedência da configuração
Pode definir o seccompProfile nos seguintes níveis em overrides.yaml. As definições ao nível do componente têm prioridade sobre as definições ao nível do ambiente, e as definições ao nível do ambiente têm prioridade sobre as definições globais:
- Nível do componente: aplica-se a um componente específico (por exemplo,
runtimeoucassandra). - Nível do ambiente: aplica-se a todos os componentes num ambiente específico definido na matriz
envs[], a menos que seja substituído ao nível do componente. - Nível global: aplica-se a todos os componentes no cluster, a menos que seja substituído ao nível do ambiente ou do componente.
Exemplos
Configuração global
Para aplicar o perfil RuntimeDefault Seccomp a todos os componentes que não tenham uma substituição ao nível do ambiente ou do componente, adicione o seguinte ao nível superior do seu overrides.yaml:
securityContext: seccompProfile: type: RuntimeDefault
Configuração do ambiente
Para aplicar o perfil RuntimeDefault Seccomp a todos os componentes num ambiente específico, adicione a configuração no elemento envs[]:
envs: - name: "my-environment" securityContext: seccompProfile: type: RuntimeDefault ...
Configuração de componentes
Para aplicar o perfil do RuntimeDefault Seccomp a um componente específico (por exemplo, o componente de tempo de execução), adicione a configuração nesse componente:
runtime: securityContext: seccompProfile: type: RuntimeDefault ...