Configure perfis de Seccomp para a segurança de pods

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:

  1. Nível do componente: aplica-se a um componente específico (por exemplo, runtime ou cassandra).
  2. 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.
  3. 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
...