Kubernetes SecurityContext(s)
Last updated
Last updated
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
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 ao grupo de privilegiados via runAsGroup e supplementaryGroups
fsGroup inteiro
Um grupo suplementar especial que se aplica a todos os contêineres em um pod. Alguns tipos de volume permitem que o Kubelet mude 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 definido, o Kubelet não modificará a propriedade e permissões de nenhum volume
fsGroupChangePolicy string
Isso define o comportamento de mudança de 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 contêiner. Usa o padrão de tempo de execução se não definido.
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 o for.
runAsUser inteiro
O UID para executar o ponto de entrada do processo do contêiner. Padrão para 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 contêineres. 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 contêineres neste pod.
supplementalGroups array de inteiros
Uma lista de grupos aplicados ao primeiro processo executado em cada contêiner, além do GID primário do contêiner.
Sysctls mantém uma lista de sysctls namespaced 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 contêineres. Se não especificado, as opções dentro do SecurityContext de um contêiner serão usadas.
Este contexto é definido dentro das definições de contêineres. Do ponto de vista da segurança defensiva, você deve considerar:
allowPrivilegeEscalation como False
Não adicione capacidades sensíveis (e remova as que você 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 permissões indicando seLinuxOptions e seccompProfile
NÃO conceda acesso ao grupo de privilegiados via runAsGroup.
Observe que os atributos definidos em SecurityContext e PodSecurityContext, o valor especificado em SecurityContext tem precedência.
allowPrivilegeEscalation booleano
AllowPrivilegeEscalation controla se um processo pode ganhar mais privilégios do que seu processo pai. Este booleano controla diretamente se a flag no_new_privs será definida no processo do contêiner. AllowPrivilegeEscalation é verdadeiro sempre que o contêiner é executado como Privileged ou tem CAP_SYS_ADMIN
capabilities Capabilities Mais informações sobre Capabilities
As capacidades a serem adicionadas/removidas ao executar contêineres. Padrão para o conjunto padrão de capacidades.
privileged booleano
Executar contêiner em modo privilegiado. Processos em contêineres 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 contêineres. O padrão é DefaultProcMount, que usa os padrões de tempo de execução do contêiner para caminhos somente leitura e caminhos mascarados.
readOnlyRootFilesystem booleano
Se este contêiner tem um sistema de arquivos raiz somente leitura. O padrão é falso.
runAsGroup inteiro
O GID para executar o ponto de entrada do processo do contêiner. Usa o padrão de tempo de execução se não definido.
runAsNonRoot booleano
Indica que o contêiner deve executar 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 o for.
runAsUser inteiro
O UID para executar o ponto de entrada do processo do contêiner. Padrão para 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 contêiner. Se não especificado, o tempo de execução do contêiner alocará um contexto SELinux aleatório para cada contêiner.
As opções seccomp a serem usadas por este contêiner.
As configurações específicas do Windows aplicadas a todos os contêineres.
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)