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
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
Isso define o comportamento de mudança de propriedade e permissão do volume antes de ser exposto dentro do Pod.
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.
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.
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.
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.
As opções seccomp a serem usadas pelos contêineres neste pod.
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 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
As capacidades a serem adicionadas/removidas ao executar contêineres. Padrão para o conjunto padrão de capacidades.
Executar contêiner em modo privilegiado. Processos em contêineres privilegiados são essencialmente equivalentes ao root no host. Padrão é falso.
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.
Se este contêiner tem um sistema de arquivos raiz somente leitura. O padrão é falso.
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.
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.
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.
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.
inteiro
string
inteiro
booleano
inteiro
Mais informações sobre seLinux
Mais informações sobre Seccomp
array de inteiros
array Mais informações sobre
booleano
Mais informações sobre Capabilities
booleano
string
booleano
inteiro
booleano
inteiro
Mais informações sobre seLinux
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)