Verificações de Conformidade Personalizadas

Criando Scripts Personalizados para Verificações de Conformidade

Scripts personalizados podem ser executados em contêineres e hosts para uso em verificações de conformidade e outras avaliações. A verificação de conformidade personalizada é um script bash que pode ser executado em qualquer contêiner para validar uma condição e relatar o resultado na seção de conformidade do contêiner ou nó.

A capacidade de criar scripts personalizados é desativada por padrão para proteger contra uso indevido. Isso pode ser ativado definindo a variável de ambiente CUSTOM_CHECK_CONTROL no Controlador e no Aplicador. Os valores são "desativar" (padrão, não permitido), "estrito" (apenas papel de administrador) ou "flexível" (papéis de administrador, conformidade e política de tempo de execução).

Scripts personalizados devem ser usados com extrema cautela. O script personalizado pode executar qualquer executável no namespace do contêiner com privilégio de contêiner. Executáveis podem ser muito destrutivos, como rm, format, fdisk etc. Essa cautela se aplica também a hosts/nós. Scripts de verificação personalizados em hosts podem ser ainda mais destrutivos se puderem acessar o nó mestre no cluster.

  • Um script personalizado é controlado pela permissão da política de runtime com RBAC de namespace; os usuários devem configurar corretamente os papéis de usuário do Kubernetes.

  • Scripts personalizados são executados com o mesmo privilégio que o contêiner em execução.

  • O resultado da conformidade é removido uma vez que um script personalizado é excluído.

  • Verificações de Conformidade Personalizadas precisam seguir um formato para relatar o resultado corretamente no relatório de conformidade para o contêiner ou nó.

    • O script começa com a declaração 'if' para verificar alguma condição.

    • A verificação personalizada é aprovada se o código de saída for 0

    • A verificação personalizada falha se o código de saída for 1

Script de exemplo para verificar se o contêiner tem uma conta root sem senha.

if [ $(cat /etc/shadow | grep  'root:::0:::::') ]; then
     DESCRIPTION="CVE-2019-5021 fails."
     echo $DESCRIPTION;
     exit 1;
else
     echo "CVE-2019-5021 pass";
     exit 0;
fi

Script de exemplo para verificar o arquivo dirty cow no contêiner.

if [ $(find . / | grep -w 'cow') ]; then
     DESCRIPTION="dirty cow seen in the container"
    echo $DESCRIPTION;
    exit 1;
else
    echo "no dirty cow found pass";
    exit 0;
fi

Outras Observações

  • Os scripts têm um tempo limite de 1 minuto para serem concluídos, caso contrário, são encerrados e relatados como um erro no resultado de conformidade.

  • O script pode ser executado em todos os 3 modos de operação: Descobrir, Monitorar e Proteger.

Criando um script de verificação personalizada

  • Selecione o grupo de serviço (criado pelo usuário ou aprendido automaticamente) do Grupo de Política →.

  • Clique na aba de verificação personalizada.

  • Digite o nome do script. Espaços não são permitidos.

  • Copie e cole o script na seção de script.

  • Clique no botão ADICIONAR para adicionar o script.

  • Vários scripts podem ser criados e gerenciados pela opção fornecida no canto direito.

  • Os scripts são executados nos contêineres cobertos pelo grupo de serviços assim que o script é criado, bem como quando o script é atualizado.

  • Visualize o resultado do script de ativos → contêiner → conformidade, ou ativos → nós → conformidade.

Amostras

Criando um script de verificação personalizada no grupo de demonstração composto por 3 contêineres.

ComplianceDemo

Mostrando os resultados de conformidade para o contêiner nginx, que possui um arquivo dirty cow, portanto, um aviso é relatado.

ConformidadeNginx

Mostrando o resultado de conformidade para o contêiner nodejs, que não possui um arquivo dirty cow, portanto, uma aprovação é relatada pelo script.

ComplianceNodejs

Mostrando o resultado de conformidade para o contêiner nginx para uma verificação personalizada que teve um tempo limite.

ConformidadeTimeout

Criando uma regra de resposta para o relatório de conformidade

As regras de resposta podem ser criadas na Política → Regras de Resposta que são baseadas nos resultados das verificações de conformidade personalizadas. Os resultados fazem parte da categoria conformidade, e respostas podem ser criadas para todos os eventos de um determinado nível.

  • Escolha a categoria conformidade

  • Digite o nome do grupo de serviço na opção de grupo e escolha o grupo desejado na opção de seleção automática

  • Digite o nível e escolha o nível: Aviso na opção de seleção automática

  • Ative as ações desejadas Quarentena, webhook e/ou suprimir log

  • Ative o botão de status

  • Clique no botão Adicionar para adicionar a regra de resposta

O próximo evento de conformidade com resultado de aviso acionará a ação da regra de resposta correspondente.

ComplianceResponse

Crie uma regra de resposta para o relatório de conformidade e o script de verificação personalizada pelo nome:

  • Escolha a categoria conformidade

  • Digite o nome do grupo de serviço na opção de grupo e escolha o grupo desejado nas opções suspensas, ou deixe o nome do grupo em branco para aplicar a todos

  • Digite 'n' e escolha o nome do script de verificação personalizada no menu suspenso de opções

  • Ative as ações desejadas Quarentena, webhook e/ou suprimir log

  • Ative o botão de status

  • Clique no botão Adicionar para adicionar a regra de resposta

O próximo evento de conformidade com aviso acionará a ação da regra de resposta correspondente.

ComplianceResponse