Protección de la aplicación con Guard
Guard es una solución de seguridad en tiempo de ejecución que IBM Cloud® Code Engine puede utilizar para controlar las solicitudes entrantes y las respuestas salientes de la aplicación. Guard utiliza un conjunto de microreglas aprendido automáticamente por aplicación para controlar las solicitudes de entrada y las respuestas de salida de la aplicación. Como resultado, puede utilizar Guard para identificar anomalías de aplicación y dar soporte a Situational Awareness. La protección también puede bloquear solicitudes o respuestas que no estén en línea con los patrones esperados.
En esta guía de aprendizaje, despliegue una aplicación Hello World y protéjalo con Guard.
Antes de empezar:
- Configure su entorno de CLI de Code Engine.
- Cree y trabaje con un proyecto.
- Familiarícese con el despliegue de aplicaciones utilizando la CLI.
Todos los usuarios de Code Engine están obligados a tener una cuenta de pago por uso. Las guías de aprendizaje pueden incurrir en costes. Utilice el Estimador de costes para generar una estimación de costes basada en el uso previsto. Para obtener más información, consulte Precios deCode Engine.
Desplegar una aplicación guard-learner como un servicio por proyecto
Guard-Learner es un servicio que aprende las microreglas necesarias para cada aplicación protegida por Guard en un proyecto. Para desplegar una aplicación Guard-Learner, créela en el proyecto. Tenga en cuenta que crea la aplicación Guard-Learner sólo una vez por proyecto Code Engine .
- Proteja la aplicación y evite exponerla a posibles delincuentes estableciendo la visibilidad de la aplicación en el nivel de proyecto con la opción
--v project
. Para obtener más información, consulte Opciones de visibilidad para una aplicación Code Engine. - Escale el servicio Guard-Learner para ejecutar de forma continua una única instancia con la opción
--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
Salida de ejemplo
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
Creación y despliegue de una aplicación Hello World protegida
Cree la aplicación Hello World y asígnele la visibilidad project
. En el ejemplo siguiente, puede cambiar el nombre de la aplicación y establecer una imagen y un puerto diferentes.
- Proteja la aplicación y evite exponerla a posibles delincuentes estableciendo la visibilidad de la aplicación en el nivel de proyecto con la opción
--v project
. Para obtener más información, consulte Opciones de visibilidad para una aplicación Code Engine. - Considere la posibilidad de establecer la escala mínima en una sola instancia con la opción
--min 1
.
export SERVICE_NAME="myapp"
ibmcloud ce application create -n ${SERVICE_NAME} -v project -min 1 -p 8080 -i icr.io/codeengine/hello
Salida de ejemplo
Creating application 'myapp'...
[...]
Run 'ibmcloud ce application get -n myapp' to check the application status.
OK
http://myapp.p8abcd4abcd.svc.cluster.local
Búsqueda del espacio de nombres y los URL de servicio
Extraiga información sobre la aplicación desplegada y sobre Guard-Leaner del proyecto.
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}'"
Salida de ejemplo
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'
Exposición de la aplicación Hello World a Internet a través de Guard
Añada una protección Hello World para exponer de forma segura la aplicación Hello World 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
Salida de ejemplo
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
Puede acceder a la aplicación Hello World protegida a través del URL expuesto por Hello World guard.
Notas:
- Despliegue un Guard para cualquier aplicación que desee proteger.
- Proporcione Guard con el espacio de nombres del proyecto y el nombre de aplicación y URL correspondientes que protege.
- Proporcione a Guard la URL de Guard-Learner.
- Establezca
USE_CONFIGMAP=true
para mantener las microreglas en un mapa de configuración denominadoguardian-${SERVICE_NAME}
. - Considere la posibilidad de establecer la escala mínima de la app Guard en una única instancia con la opción
--min 1
.
Gestión de la seguridad de la aplicación Hello World y obtención de reconocimiento situacional
Guard ofrece reconocimiento situacional en la postura de seguridad de la aplicación. Puede encontrar alertas de seguridad en el archivo de registro de Guard, a medida que se producen.
ibmcloud ce application logs -n ${SERVICE_NAME}-guard
Salida de ejemplo
[...]
{"level":"warn","message":"SECURITY ALERT! HttpRequest: Headers: KeyVal: Known Key X-B3-Traceid: Digits: Counter out of Range: 25"}
[...]
Las alertas de seguridad aparecen como avisos en el archivo de registro de guardián y empiezan con la serie SECURITY ALERT!
. La configuración predeterminada de Guard es permitir cualquier solicitud o respuesta y aprender cualquier
patrón nuevo después de notificarlo. Cuando la aplicación está sirviendo solicitudes de forma activa, normalmente tarda unos 30 minutos en que Guard conozca los patrones de las solicitudes y respuestas de la aplicación y cree las microreglas
correspondientes. Después del periodo de aprendizaje inicial, Guard envía alertas sólo cuando se detecta un cambio en el comportamiento.
Tenga en cuenta que en la configuración predeterminada, Guard sigue aprendiendo cualquier comportamiento nuevo y, por lo tanto, evita notificar alertas repetidamente cuando se vuelve a producir el nuevo comportamiento. Los procedimientos de seguridad correctos deben incluir la revisión de cualquier nuevo comportamiento detectado por Guard.
Guard también se puede configurar para operar en otros modos de operación, como por ejemplo:
- Pasar del aprendizaje automático a la gestión manual de microreglas después del periodo de aprendizaje inicial
- Bloquear solicitudes/respuestas cuando no se ajustan a las microreglas
Para obtener más información o para obtener ayuda sobre la resolución de problemas, consulte el canal#code-engine.
Limpiar las aplicaciones de la guía de aprendizaje
Una vez que haya terminado con esta guía de aprendizaje, puede eliminar la aplicación Hello World, Hello World Guard y Guard-Learner, tal como se muestra en el ejemplo siguiente.
ibmcloud ce application delete -n ${SERVICE_NAME}
ibmcloud ce application delete -n ${SERVICE_NAME}-guard
ibmcloud ce application delete -n guard-learner