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:

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 project auf 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 1 ausfü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 project auf 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 1 in 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=true fest, um die Mikroregeln in einer Konfigurationszuordnung mit dem Namen guardian-${SERVICE_NAME} zu verwalten.
  • Ziehen Sie in Betracht, die Mindestskalierung der Guard-App auf eine einzelne Instanz mit der Option --min 1 festzulegen.

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