Openshift - SCC

Reading time: 2 minutes

O autor original desta página é Guillaume

Definição

No contexto do OpenShift, SCC significa Security Context Constraints. Security Context Constraints são políticas que controlam permissões para pods em execução em clusters OpenShift. Elas definem os parâmetros de segurança sob os quais um pod pode ser executado, incluindo quais ações ele pode realizar e quais recursos pode acessar.

SCCs ajudam administradores a impor políticas de segurança em todo o cluster, garantindo que os pods estejam sendo executados com permissões apropriadas e aderindo aos padrões de segurança organizacionais. Essas restrições podem especificar vários aspectos da segurança do pod, como:

  1. Capacidades do Linux: Limitando as capacidades disponíveis para contêineres, como a capacidade de realizar ações privilegiadas.
  2. Contexto SELinux: Aplicando contextos SELinux para contêineres, que definem como os processos interagem com recursos no sistema.
  3. Sistema de arquivos raiz somente leitura: Impedindo que contêineres modifiquem arquivos em certos diretórios.
  4. Diretórios e volumes de host permitidos: Especificando quais diretórios e volumes de host um pod pode montar.
  5. Executar como UID/GID: Especificando os IDs de usuário e grupo sob os quais o processo do contêiner é executado.
  6. Políticas de rede: Controlando o acesso à rede para pods, como restringir o tráfego de saída.

Ao configurar SCCs, os administradores podem garantir que os pods estejam sendo executados com o nível apropriado de isolamento de segurança e controles de acesso, reduzindo o risco de vulnerabilidades de segurança ou acesso não autorizado dentro do cluster.

Basicamente, toda vez que um pedido de implantação de pod é solicitado, um processo de admissão é executado da seguinte forma:

Esta camada de segurança adicional, por padrão, proíbe a criação de pods privilegiados, a montagem do sistema de arquivos do host ou a definição de quaisquer atributos que possam levar à escalada de privilégios.

Pod Escape Privileges

Listar SCC

Para listar todos os SCC com o Openshift Client:

bash
$ oc get scc #List all the SCCs

$ oc auth can-i --list | grep securitycontextconstraints #Which scc user can use

$ oc describe scc $SCC #Check SCC definitions

Todos os usuários têm acesso ao SCC padrão "restricted" e "restricted-v2", que são os SCCs mais rigorosos.

Usar SCC

O SCC usado para um pod é definido dentro de uma anotação:

bash
$ oc get pod MYPOD -o yaml | grep scc
openshift.io/scc: privileged

Quando um usuário tem acesso a múltiplos SCCs, o sistema utilizará aquele que se alinha com os valores do contexto de segurança. Caso contrário, um erro de acesso proibido será acionado.

bash
$ oc apply -f evilpod.yaml #Deploy a privileged pod
Error from server (Forbidden): error when creating "evilpod.yaml": pods "evilpod" is forbidden: unable to validate against any security context constrain

Bypass de SCC

OpenShift - SCC bypass

Referências