Kubernetes SecurityContext(s)

Reading time: 9 minutes

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks

PodSecurityContext

Dos documentos:

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 privilegio via runAsGroup e supplementaryGroups

| Parùmetro | Descrição | |

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. Pode tambĂ©m 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 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
Sysctl array
Mais informaçÔes sobre sysctls

| 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. | |

windowsOptions
WindowsSecurityContextOptions

| 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. |

SecurityContext

Dos documentos:

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 privilegio via runAsGroup.

Observe que os atributos definidos em ambos 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 Ă© sempre verdadeiro quando 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.

seccompProfile
SeccompProfile

As opçÔes seccomp a serem usadas por este contĂȘiner.

windowsOptions
WindowsSecurityContextOptions

As configuraçÔes especĂ­ficas do Windows aplicadas a todos os contĂȘineres.

ReferĂȘncias

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks