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:
- Nível do componente:se aplica a um componente específico (por exemplo,
runtimeoucassandra). - 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. - 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 ...