Kubernetes SecurityContext(s)

Suporte ao HackTricks

PodSecurityContext

Da documentação:

Ao especificar o contexto de segurança de um Pod, você pode usar vários atributos. Do ponto de vista da segurança defensiva, você deve considerar:

  • Ter runASNonRoot como True

  • Configurar runAsUser

  • Se possível, considere limitar permissões indicando seLinuxOptions e seccompProfile

  • NÃO conceda acesso de grupo privilegiado via runAsGroup e supplementaryGroups

fsGroup inteiro

Um grupo suplementar especial que se aplica a todos os containers em um pod. Alguns tipos de volume permitem que o Kubelet altere a propriedade desse volume para ser de propriedade do pod: 1. O GID proprietário será o FSGroup 2. O bit setgid é definido (novos arquivos criados no volume serão de propriedade do FSGroup) 3. Os bits de permissão são OR'd com rw-rw---- Se não estiver definido, o Kubelet não modificará a propriedade e permissões de nenhum volume

Isso define o comportamento de alteração da propriedade e permissão do volume antes de ser exposto dentro do Pod.

runAsGroup inteiro

O GID para executar o ponto de entrada do processo do container. Usa o padrão de tempo de execução se não estiver definido. Também pode ser definido em SecurityContext.

runAsNonRoot booleano

Indica que o contêiner deve ser executado como um usuário não root. Se verdadeiro, o Kubelet validará a imagem em tempo de execução para garantir que não seja executada como UID 0 (root) e falhará ao iniciar o contêiner se for.

runAsUser inteiro

O UID para executar o ponto de entrada do processo do container. Padrão é o usuário especificado nos metadados da imagem, se não especificado.

seLinuxOptions SELinuxOptions Mais informações sobre seLinux

O contexto SELinux a ser aplicado a todos os containers. Se não especificado, o tempo de execução do contêiner alocará um contexto SELinux aleatório para cada contêiner.

seccompProfile SeccompProfile Mais informações sobre Seccomp

As opções seccomp a serem usadas pelos containers neste pod.

supplementalGroups array de inteiros

Uma lista de grupos aplicados ao primeiro processo executado em cada container, além do GID principal do contêiner.

sysctls Sysctl array Mais informações sobre sysctls

Sysctls mantêm uma lista de sysctls em namespace usados para o pod. Pods com sysctls não suportados (pelo tempo de execução do contêiner) podem falhar ao iniciar.

As configurações específicas do Windows aplicadas a todos os containers. Se não especificado, as opções dentro do SecurityContext de um contêiner serão usadas.

## SecurityContext

Da documentação:

Este contexto é definido dentro das definições de containers. Do ponto de vista da segurança defensiva, você deve considerar:

  • allowPrivilegeEscalation como False

  • Não adicione capabilities sensíveis (e remova as que não precisa)

  • privileged como False

  • Se possível, defina readOnlyFilesystem como True

  • Defina runAsNonRoot como True e defina um runAsUser

  • Se possível, considere limitar as permissões indicando seLinuxOptions e seccompProfile

  • NÃO dê acesso de grupo de privilégio via runAsGroup

Observe que os atributos definidos em ambos SecurityContext e PodSecurityContext, o valor especificado em SecurityContext tem precedência.

AllowPrivilegeEscalation controla se um processo pode obter mais privilégios do que seu processo pai. Esse booleano controla diretamente se a flag no_new_privs será definida no processo do container. AllowPrivilegeEscalation é sempre verdadeiro quando o container é executado como Privileged ou tem CAP_SYS_ADMIN

capabilities Capabilities Mais informações sobre Capabilities

As capacidades a adicionar/remover ao executar containers. Padrão é o conjunto padrão de capacidades.

privileged boolean

Executar o container no modo privilegiado. Processos em containers privilegiados são essencialmente equivalentes ao root no host. Padrão é falso.

procMount string

procMount denota o tipo de montagem proc a ser usado para os containers. O padrão é DefaultProcMount, que usa as configurações padrão do tempo de execução do container para caminhos somente leitura e caminhos mascarados.

Se este container tem um sistema de arquivos raiz somente leitura. O padrão é falso.

runAsGroup integer

O GID para executar o ponto de entrada do processo do container. Usa o padrão do tempo de execução se não definido.

runAsNonRoot boolean

Indica que o container deve ser executado como um usuário não root. Se verdadeiro, o Kubelet validará a imagem em tempo de execução para garantir que não seja executada como UID 0 (root) e falhará ao iniciar o container se for.

runAsUser integer

O UID para executar o ponto de entrada do processo do container. Padrão é o usuário especificado nos metadados da imagem se não especificado.

seLinuxOptions SELinuxOptions Mais informações sobre seLinux

O contexto SELinux a ser aplicado ao container. Se não especificado, o tempo de execução do container alocará um contexto SELinux aleatório para cada container.

As opções seccomp a serem usadas por este container.

As configurações específicas do Windows aplicadas a todos os containers.

Referências

Suporte ao HackTricks

Last updated