Como garantir sua aplicação com Guarda

Guarda é uma solução de segurança em tempo de execução que IBM Cloud® Code Engine você pode usar para governar as solicitações recebidas e as respostas de saída de sua aplicação. Guarda usa um conjunto autoaprendido auto de aplicação de micro-regras para reger os pedidos recebidos e respostas de saída. Como resultado, você pode usar a Guarda para identificar anomalias de aplicativos e apoiar o Situational Awareness. Guarda também pode bloquear pedidos ou respostas que não estejam de acordo com os padrões esperados.

Neste tutorial, implantar um aplicativo Hello World e protegê-lo com Guarda.

Antes de Iniciar:

Todos os usuários do Code Engine são obrigados a ter uma conta pré-paga. Os tutoriais podem gerar custos adicionais. Use o Estimador de custos para gerar uma estimativa de custo com base em seu uso planejado. Para obter mais informações, consulte Code Engine precificação.

Implementar um aplicativo de guarda-aprendizado como um serviço por projeto

Guarda-Learner é um serviço que aprende as micro-regras necessárias para cada aplicação protegida por Guarda em um projeto. Para implementar um aplicativo Guarda-Learner, crie-o em seu projeto. Note que você cria o aplicativo Guarda-Learner apenas uma vez por Code Engine projeto.

  • Proteja sua aplicação e evite expô-lo a potenciais infratores, configurando a visibilidade para o app ao nível do projeto com a opção --v project . Para mais informações, consulte Opções de visibilidade para um aplicativo Code Engine.
  • Escale o serviço Guarda-Learner para executar continuamente uma única instância com a opção --min 1 --max 1 .
ibmcloud ce application create -n guard-learner -v project --min 1 --max 1 -p 8888 -i ghcr.io/ibm/workload-security-guard/guard-learner

Saída de exemplo

Creating application 'guard-learner'...
[...]
Run 'ibmcloud ce application get -n guard-learner' to check the application status.
OK

http://guard-learner.p8abcd4abcd.svc.cluster.local

Criando e implantando um aplicativo Hello World protegido

Crie o aplicativo Hello World e atribua-o a project visibilidade. No exemplo a seguir, é possível alterar o nome do aplicativo e configurar uma imagem e porta diferentes.

  • Proteja sua aplicação e evite expô-lo a potenciais infratores, configurando a visibilidade para o app ao nível do projeto com a opção --v project . Para mais informações, consulte Opções de visibilidade para um aplicativo Code Engine.
  • Considere configurar a escala mínima para uma única instância com a opção --min 1 .
export SERVICE_NAME="myapp"
ibmcloud ce application create -n ${SERVICE_NAME} -v project -min 1 -p 8080 -i icr.io/codeengine/hello

Saída de exemplo

Creating application 'myapp'...
[...]
Run 'ibmcloud ce application get -n myapp' to check the application status.
OK

http://myapp.p8abcd4abcd.svc.cluster.local

Como localizar o namespace e as URLs de serviço

Extraia informações sobre o seu aplicativo implementado e sobre a Guarda-Leão do projeto.

export NAMESPACE=`ibmcloud ce project current -o json|jq -r .kube_config_context`
export GUARD_URL=`ibmcloud ce application get -n guard-learner -o url`
export SERVICE_URL=`ibmcloud ce application get -n ${SERVICE_NAME} -o url`

echo "The protected service name '${SERVICE_NAME}' namespace '${NAMESPACE}' url '${SERVICE_URL}'"
echo "The guard learner url is '${GUARD_URL}'"

Saída de exemplo

The protected service name 'myapp' namespace 'p8abcd4abcd' url 'http://myapp.p8abcd4abcd.svc.cluster.local'
The guard learner url is 'http://guard-learner.p8abcd4abcd.svc.cluster.local'

Expondo o aplicativo Hello World para a internet através da Guarda

Inclua um guarda Hello World para expor de forma segura o aplicativo Hello World para a internet.

ibmcloud ce application create -n ${SERVICE_NAME}-guard --min 1 -p 22000 \
        -e GUARD_URL=${GUARD_URL} \
        -e SERVICE_URL=${SERVICE_URL} \
        -e SERVICE_NAME=${SERVICE_NAME} \
        -e NAMESPACE=${NAMESPACE} \
        -i ghcr.io/ibm/workload-security-guard/guard-rproxy

Saída de exemplo

Creating application 'myapp-guard'...
[...]
Run 'ibmcloud ce application get -n myapp-guard' to check the application status.
OK

https://myapp-guard.p8abcd4abcd.us-south.codeengine.appdomain.cloud

Você pode acessar o aplicativo Hello World protegido através da URL que é exposta pela guarda Hello World.

Notas:

  • Implemente um Guarda para qualquer aplicativo que você deseja proteger.
  • Forneça Guarda com o espaço de nomes do projeto e o nome do aplicativo correspondente e url que ele protege.
  • Forneça Guarda com a url da Guarda-Learner.
  • Configure USE_CONFIGMAP=true para manter as micro-regras em um configmap denominado guardian-${SERVICE_NAME} .
  • Considere configurar a escala mínima do app da Guarda para uma única instância com a opção --min 1 .

Gerenciando a segurança do aplicativo Hello World e ganhando consciência situacional

Guarda oferece consciência situacional para a postura de segurança do aplicativo. Você pode encontrar alertas de segurança no arquivo de log da Guarda, como eles ocorrem.

ibmcloud ce application logs -n ${SERVICE_NAME}-guard

Saída de exemplo

[...]
{"level":"warn","message":"SECURITY ALERT! HttpRequest: Headers: KeyVal: Known Key X-B3-Traceid: Digits: Counter out of Range: 25"}  
[...]

Alertas de segurança aparecem como avisos no arquivo de log da guarda e iniciam com a string SECURITY ALERT!. A configuração padrão da Guarda é permitir qualquer solicitação ou resposta e aprender qualquer novo padrão depois de informá-lo. Quando o aplicativo está atendendo ativamente pedidos, ele geralmente leva cerca de 30 min minutos para a Guarda aprender os padrões dos pedidos e respostas do aplicativo e construir micro-regras correspondentes. Após o período inicial de aprendizagem, a Guarda envia alertas apenas quando uma mudança de comportamento é detectada.

Note que na configuração padrão, a Guarda continua a aprender qualquer novo comportamento e, por isso, evita relatar alertas repetidamente quando o novo comportamento reocorrer. Os procedimentos de segurança corretos devem incluir a revisão de qualquer novo comportamento detectado pela Guarda.

Guarda também pode ser configurado para operar em outros modos de operação, tais como:

  • Mova-se da aprendizagem automática para a gestão de micro-regras manuais após o período inicial de aprendizagem
  • Bloquear solicitações / respostas quando elas não estiverem em conformidade com as micro-regras

Para obter mais informações ou para a ajuda de problemas, consulte o #code-canal do motor.

Limpe os aplicativos do tutorial

Depois que você terminar com este tutorial, você pode remover o aplicativo Hello World, o Hello World Guard e o Guarda-Learner como mostrado no exemplo a seguir.

ibmcloud ce application delete -n ${SERVICE_NAME}
ibmcloud ce application delete -n ${SERVICE_NAME}-guard
ibmcloud ce application delete -n guard-learner