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:
- Configure o seu ambiente da CLI do Code Engine.
- Criar e trabalhar com um projeto.
- Esteja familiarado com implementando aplicativos usando CLI.
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=truepara manter as micro-regras em um configmap denominadoguardian-${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