Anwendung mit Guard schützen
Guard ist eine Laufzeitsicherheitslösung, mit der Sie IBM Cloud® Code Engine die eingehenden Anforderungen und abgehenden Antworten Ihrer Anwendung steuern können. Guard verwendet eine automatisch erlernte Gruppe von Mikroregeln pro Anwendung, um die eingehenden Anforderungen und abgehenden Antworten der Anwendung zu steuern. Daher können Sie Guard verwenden, um Anwendungsanomalien zu erkennen und Situational Awareness zu unterstützen. Guard kann auch Anforderungen oder Antworten blockieren, die nicht den erwarteten Mustern entsprechen.
Implementieren Sie in diesem Lernprogramm eine Hello World-Anwendung und schützen Sie sie mit Guard.
Vorbereitende Schritte:
- Konfigurieren Sie die Umgebung der Code Engine-Befehlszeilenschnittstelle.
- Erstellen Sie ein Projekt und arbeiten Sie damit.
- Machen Sie sich mit der Implementierung von Anwendungen über die Befehlszeilenschnittstellevertraut.
Alle Code Engine-Benutzer müssen über ein nutzungsabhängiges Konto verfügen. Für Tutorien können Kosten anfallen. Verwenden Sie den Cost Estimator, um einen Kostenvoranschlag auf der Grundlage Ihrer voraussichtlichen Nutzung zu erstellen. Weitere Informationen finden Sie unter Preisstruktur fürCode Engine.
Bereitstellung einer Guard-Learner-Anwendung als projektspezifischen Service
Guard-Learner ist ein Service, der die erforderlichen Mikroregeln für jede Guard-geschützte Anwendung in einem Projekt lernt. Um eine Guard-Learner-Anwendung bereitzustellen, erstellen Sie sie in Ihrem Projekt. Beachten Sie, dass Sie die Guard-Learner-Anwendung nur einmal pro Code Engine -Projekt erstellen.
- Schützen Sie Ihre Anwendung und vermeiden Sie es, sie potenziellen Straftätern zugänglich zu machen, indem Sie die Sichtbarkeit für die App mit der Option
--v projectauf Projektebene festlegen. Weitere Informationen finden Sie unter Optionen für die Sichtbarkeit einer Code Engine -Anwendung. - Skalieren Sie den Guard-Learner-Service so, dass er kontinuierlich eine einzelne Instanz mit der Option
--min 1 --max 1ausführt.
ibmcloud ce application create -n guard-learner -v project --min 1 --max 1 -p 8888 -i ghcr.io/ibm/workload-security-guard/guard-learner
Beispielausgabe
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
Geschützte Hello World-Anwendung erstellen und bereitstellen
Erstellen Sie die Anwendung "Hello World" und ordnen Sie ihr die Sichtbarkeit project zu. Im folgenden Beispiel können Sie den Anwendungsnamen ändern und ein anderes Image und einen anderen Port festlegen.
- Schützen Sie Ihre Anwendung und vermeiden Sie es, sie potenziellen Straftätern zugänglich zu machen, indem Sie die Sichtbarkeit für die App mit der Option
--v projectauf Projektebene festlegen. Weitere Informationen finden Sie unter Optionen für die Sichtbarkeit einer Code Engine -Anwendung. - Ziehen Sie die Einstellung des Mindestmaßstabs auf eine einzelne Instanz mit der Option
--min 1in Betracht.
export SERVICE_NAME="myapp"
ibmcloud ce application create -n ${SERVICE_NAME} -v project -min 1 -p 8080 -i icr.io/codeengine/hello
Beispielausgabe
Creating application 'myapp'...
[...]
Run 'ibmcloud ce application get -n myapp' to check the application status.
OK
http://myapp.p8abcd4abcd.svc.cluster.local
Namensbereich und Service-URLs suchen
Extrahieren Sie Informationen zu Ihrer implementierten Anwendung und zum Guard-Leaner des Projekts.
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}'"
Beispielausgabe
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'
Hello World-Anwendung über Guard im Internet zugänglich machen
Fügen Sie einen Hello World-Wächter hinzu, um die Hello World-Anwendung sicher im Internet zugänglich zu machen.
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
Beispielausgabe
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
Sie können über die URL, die von Hello World zugänglich gemacht wird, auf die geschützte Hello World-Anwendung zugreifen.
Anmerkungen:
- Implementieren Sie einen Guard für jede Anwendung, die Sie schützen möchten.
- Geben Sie Guard mit dem Projektnamensbereich und dem entsprechenden Anwendungsnamen und der URL an, die geschützt werden sollen.
- Geben Sie Guard mit der URL des Guard-Learner an.
- Legen Sie
USE_CONFIGMAP=truefest, um die Mikroregeln in einer Konfigurationszuordnung mit dem Namenguardian-${SERVICE_NAME}zu verwalten. - Ziehen Sie in Betracht, die Mindestskalierung der Guard-App auf eine einzelne Instanz mit der Option
--min 1festzulegen.
Sicherheit der Anwendung "Hello World" verwalten und Situationsbewusstsein gewinnen
Guard bietet Situationsbewusstsein in Bezug auf die Anwendungssicherheit. Sie finden Sicherheitsalerts in der Protokolldatei von Guard, sobald sie auftreten.
ibmcloud ce application logs -n ${SERVICE_NAME}-guard
Beispielausgabe
[...]
{"level":"warn","message":"SECURITY ALERT! HttpRequest: Headers: KeyVal: Known Key X-B3-Traceid: Digits: Counter out of Range: 25"}
[...]
Sicherheitsalerts werden als Warnungen in der Wächterprotokolldatei angezeigt und beginnen mit der Zeichenfolge SECURITY ALERT!. Die Standardkonfiguration von Guard sieht vor, dass alle Anforderungen oder Antworten zugelassen und
neue Muster nach der Berichterstellung berücksichtigt werden. Wenn die Anwendung aktiv Anforderungen bearbeitet, dauert es normalerweise etwa 30 Minuten, bis Guard die Muster der Anwendungsanforderungen und -antworten lernt und entsprechende
Mikroregeln erstellt. Nach dem ersten Lernzeitraum sendet Guard nur Alerts, wenn eine Verhaltensänderung erkannt wird.
Beachten Sie, dass Guard in der Standardkonfiguration weiterhin jedes neue Verhalten lernt und somit verhindert, dass Alerts wiederholt gemeldet werden, wenn das neue Verhalten erneut auftritt. Zu den korrekten Sicherheitsverfahren sollte auch die Überprüfung des von Guard erkannten neuen Verhaltens gehören.
Guard kann auch für den Betrieb in anderen Betriebsarten konfiguriert werden, wie z. B.:
- Umstellung vom automatischen Lernen auf das manuelle Management von Mikroregeln nach der ersten Lernphase
- Anforderungen/Antworten blockieren, wenn sie nicht den Mikroregeln entsprechen
Weitere Informationen oder Hilfe zur Fehlerbehebung finden Sie im Abschnitt #code-Enginekanal.
Lernprogrammanwendungen bereinigen
Nachdem Sie dieses Lernprogramm abgeschlossen haben, können Sie die Anwendung "Hello World", die Anwendung "Hello World Guard" und die Anwendung "Guard-Learner" wie im folgenden Beispiel gezeigt entfernen.
ibmcloud ce application delete -n ${SERVICE_NAME}
ibmcloud ce application delete -n ${SERVICE_NAME}-guard
ibmcloud ce application delete -n guard-learner