Kubernetes SecurityContext(s)
PodSecurityContext
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 |
fsGroupChangePolicy string | 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 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 |
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 boolean | 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. |
readOnlyRootFilesystem boolean | 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
Last updated