Configurar perfis Seccomp para segurança de pods

Neste documento, descrevemos como configurar perfis do Kubernetes Seccomp (modo de computação segura) para pods da Apigee híbrida e melhorar a segurança restringindo as chamadas de sistema (syscalls) que os contêineres podem fazer.

Sobre perfis Seccomp no Kubernetes

O seccomp é um recurso de segurança do kernel do Linux que limita as chamadas de sistema que um processo pode fazer. Quando usado com o Kubernetes, é possível aplicar perfis Seccomp ao securityContext de um pod para restringir as chamadas de sistema disponíveis aos contêineres dele. Isso ajuda a reduzir a superfície de ataque do contêiner e mitiga o risco de invasões ou escalonamento de privilégios ao aplicar o princípio de privilégio mínimo.

Para mais informações sobre o Seccomp no Kubernetes, consulte Computação segura (Seccomp) na documentação do Kubernetes.

No ambiente híbrido, os perfis Seccomp não são ativados por padrão. É possível aplicar um perfil Seccomp a componentes híbridos adicionando o objeto seccompProfile ao arquivo overrides.yaml.

Como configurar perfis do Seccomp

É possível aplicar perfis do Seccomp globalmente, por ambiente ou por componente no arquivo overrides.yaml adicionando o bloco de configuração securityContext.seccompProfile. O híbrido é compatível com os seguintes tipos de perfil do Seccomp:

  • RuntimeDefault:o perfil padrão especificado pelo ambiente de execução do contêiner. Essa é a opção recomendada, porque oferece um nível razoável de segurança e mantém a compatibilidade com a maioria das cargas de trabalho.
  • Unconfined:não aplica restrições de Seccomp ao pod. Essa é a opção menos segura e precisa ser usada com cautela.

Precedência de configuração

É possível definir o seccompProfile nos seguintes níveis em overrides.yaml. As configurações no nível do componente têm precedência sobre as configurações no nível do ambiente, que têm precedência sobre as configurações globais:

  1. Nível do componente:se aplica a um componente específico (por exemplo, runtime ou cassandra).
  2. Nível do ambiente:se aplica a todos os componentes em um ambiente específico definido na matriz envs[], a menos que seja substituído no nível do componente.
  3. Nível global:se aplica a todos os componentes do cluster, a menos que seja substituído no nível do ambiente ou do componente.

Exemplos

Configuração global

Para aplicar o perfil Seccomp RuntimeDefault a todos os componentes que não têm uma substituição no 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 Seccomp RuntimeDefault a todos os componentes em um ambiente específico, adicione a configuração ao elemento envs[]:

envs:
  - name: "my-environment"
    securityContext:
      seccompProfile:
        type: RuntimeDefault
    ...

Configuração do componente

Para aplicar o perfil RuntimeDefault Seccomp a um componente específico (por exemplo, o componente de tempo de execução), adicione a configuração abaixo dele:

runtime:
  securityContext:
    seccompProfile:
      type: RuntimeDefault
...