Proteggi la tua applicazione con Guard
Guard è una soluzione di sicurezza di runtime che IBM Cloud® Code Engine puoi utilizzare per gestire le richieste in entrata e le risposte in uscita della tua applicazione. Guard utilizza una serie di microregole apprese automaticamente per applicazione per gestire le richieste in entrata e le risposte in uscita dell'applicazione. Di conseguenza, è possibile utilizzare Guard per identificare le anomalie dell'applicazione e supportare Situational Awareness. Guard può anche bloccare le richieste o le risposte che non sono in linea con i modelli previsti.
In questa esercitazione, distribuisci un'applicazione Hello World e proteggila con Guard.
Prima di cominciare:
- Configura il tuo ambiente CLI Code Engine.
- Creare e utilizzare un progetto.
- Acquisisce familiarità con la distribuzione di applicazioni utilizzando la CLI.
Tutti gli utenti Code Engine devono avere un account Pagamento a consumo. Le esercitazioni potrebbero comportare dei costi. Utilizzare lo stimatore dei costi per generare una stima dei costi basata sull'utilizzo previsto. Per ulteriori informazioni, vedi Prezzi diCode Engine.
Distribuisci un'applicazione guard - learner come servizio per progetto
Guard - Learner è un servizio che impara le microregole necessarie per ogni applicazione protetta da Guard in un progetto. Per distribuire un'applicazione Guard - Learner, crearla nel progetto. Nota che crei l'applicazione Guard - Learner solo una volta per ogni progetto Code Engine .
- Proteggi la tua applicazione ed evita di esporla ai potenziali criminali impostando la visibilità per l'applicazione al livello del progetto con l'opzione
--v project. Per ulteriori informazioni, vedi Opzioni per la visibilità per un'applicazione Code Engine. - Ridimensiona il servizio Guard - Learner per eseguire continuamente una singola istanza con l'opzione
--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
Output di esempio
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
Creazione e distribuzione di un'applicazione Hello World protetta
Crea l'applicazione Hello World e assegnane la visibilità project . Nel seguente esempio, è possibile modificare il nome dell'applicazione e impostare un'altra immagine e porta.
- Proteggi la tua applicazione ed evita di esporla ai potenziali criminali impostando la visibilità per l'applicazione al livello del progetto con l'opzione
--v project. Per ulteriori informazioni, vedi Opzioni per la visibilità per un'applicazione Code Engine. - Considera di impostare la scala minima su una singola istanza con l'opzione
--min 1.
export SERVICE_NAME="myapp"
ibmcloud ce application create -n ${SERVICE_NAME} -v project -min 1 -p 8080 -i icr.io/codeengine/hello
Output di esempio
Creating application 'myapp'...
[...]
Run 'ibmcloud ce application get -n myapp' to check the application status.
OK
http://myapp.p8abcd4abcd.svc.cluster.local
Ricerca dello spazio dei nomi e degli URL del servizio
Estrai informazioni sulla tua applicazione distribuita e sul Guard - Leaner del progetto.
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}'"
Output di esempio
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'
Esporre l'applicazione Hello World a Internet tramite Guard
Aggiungere una guardia Hello World per esporre in modo sicuro l'applicazione 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
Output di esempio
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
Puoi accedere all'applicazione Hello World protetta tramite l'URL esposto da Hello World guard.
Note:
- Distribuire un Guard per qualsiasi applicazione che si desidera proteggere.
- Fornire a Guard lo spazio dei nomi del progetto e il corrispondente nome e URL dell'applicazione che protegge.
- Fornire a Guard l'url del Guard - Learner.
- Impostare
USE_CONFIGMAP=trueper gestire le micro regole in una configmap denominataguardian-${SERVICE_NAME}. - Considera l'impostazione della scala minima dell'applicazione Guard su una singola istanza con l'opzione
--min 1.
Gestione della sicurezza dell'applicazione Hello World e acquisizione della consapevolezza situazionale
Guard offre la consapevolezza situazionale nella postura di sicurezza dell'applicazione. È possibile trovare gli avvisi di protezione nel file di log di Guard, man mano che si verificano.
ibmcloud ce application logs -n ${SERVICE_NAME}-guard
Output di esempio
[...]
{"level":"warn","message":"SECURITY ALERT! HttpRequest: Headers: KeyVal: Known Key X-B3-Traceid: Digits: Counter out of Range: 25"}
[...]
Gli avvisi di sicurezza vengono visualizzati come avvertenze nel file di log guard e iniziano con la stringa SECURITY ALERT!. L'impostazione predefinita di Guard è quella di consentire qualsiasi richiesta o risposta e di apprendere
qualsiasi nuovo modello dopo averlo segnalato. Quando l'applicazione sta attivamente servendo le richieste, in genere ci vogliono circa 30 minuti perché Guard apprenda i modelli delle richieste e delle risposte dell'applicazione e costruisca
le corrispondenti micro - regole. Dopo il periodo di apprendimento iniziale, Guard invia avvisi solo quando viene rilevato un cambiamento nel comportamento.
Si noti che nella configurazione predefinita, Guard continua a imparare qualsiasi nuovo comportamento e quindi evita di segnalare gli avvisi ripetutamente quando il nuovo comportamento si ripresenta. Le procedure di sicurezza corrette devono includere la revisione di qualsiasi nuovo comportamento rilevato da Guard.
Guard può anche essere configurato per operare in altre modalità di funzionamento, come:
- Passaggio dall'apprendimento automatico alla gestione manuale delle micro - regole dopo il periodo di apprendimento iniziale
- Blocca richieste / risposte quando non sono conformi alle microregole
Per ulteriori informazioni o per la guida alla risoluzione dei problemi, consultare #code-engine channel.
Ripulire le applicazioni dell'esercitazione
Una volta terminata questa esercitazione, puoi rimuovere l'applicazione Hello World, Hello World Guard e Guard - Learner come mostrato nel seguente esempio.
ibmcloud ce application delete -n ${SERVICE_NAME}
ibmcloud ce application delete -n ${SERVICE_NAME}-guard
ibmcloud ce application delete -n guard-learner