Cloud Run for Anthos basiert auf Istio für eingehenden Traffic. Daher können Sie Istio an Ihre Anforderungen anpassen und konfigurieren. Dies bedeutet auch, dass Cloud Run for Anthos von bekannten Problemen oder Sicherheitslücken in Istio betroffen sein kann.
Diese Seite wurde erstellt, damit Sie Cloud Run for Anthos mithilfe bekannter Best Practices konfigurieren und bekannte Probleme beheben können, um zu vermeiden, dass Ihre Ressourcen versehentlich Sicherheitslücken ausgesetzt werden.
Weitere Best practices-Anleitungen und Ressourcen:
- Best Practices für die Sicherheit von Google Cloud
- Anleitung für die Anthos-Sicherheit
- Best Practices für die Istio-Sicherheit
Bekannte Sicherheitslücken
Pfade in AuthorizationPolicies
konfigurieren
Sicherheitslücke:
Beschreibung:
Sie können die AuthorizationPolicies von Istio für die Zugriffssteuerung verwenden, indem Sie die Pfade zu Ihren Cloud Run for Anthos-Diensten verwenden. Aufgrund von CVE-2021-31920 sind Sie möglicherweise anfällig für Pfadverwechslungsangriffe, wenn Sie die pfadbasierte Zugriffssteuerung konfigurieren.
Beispielsweise haben Sie auf der Seite yourservice.com/admin
einen Dienst, für den Sie den Zugriff so konfiguriert haben, Anfragen an den Pfad /admin
zuzulassen. Wenn Sie den Zugriff auf //admin
nicht explizit verweigern, kann die Pfadsicherheitslücke in AuthorizationPolicy
nicht den Zugriff für Anfragen verhindern, die den fehlerhaften //admin
-Pfad verwenden. Da Ihr Dienst möglicherweise zwischen diesen Pfaden nicht unterscheidet, wird bei der Anfrage an einen fehlerhaften Pfad unbeabsichtigter Zugriff gewährt.
Hintergrund
Das standardmäßige Istio-Gateway für eingehenden Traffic, das von Cloud Run for Anthos genutzt wird, benötigt eine Standard-URL-Musternormalisierung und verwendet die Option normalize_path
für Envoy-Proxys, die mit RFC 3986 übereinstimmt.
Es gibt leider mehrere bekannte Anfrage-URL-Muster, die nicht durch die standardmäßigen URL-Musternormalisierungs-Standards normalisiert werden. Im folgenden Abschnitt erfahren Sie, wie Sie die Sicherheitslücke entschärfen können.
Risikominderung:
Es gibt zwei mögliche Methoden, die Sie implementieren können, damit Sie heute nicht anfällig für Pfadverwechslungsangriffe sind:
Empfohlene Option: Alle Zugriffe standardmäßig verweigern
Konfigurieren Sie Istio so, dass ein Standard-Ablehnungsmuster für
AuthorizationPolicy
-Richtlinien verwendet wird. Im Allgemeinen verbessern Sie damit die Sicherheitsstruktur Ihres Clusters. Wenn Sie ein Autorisierungsmuster mit Standard-Ablehnung konfigurieren, werden alle Anfragen an Ihre Dienste standardmäßig abgelehnt. Außerdem können Sie damit alle Bedingungen explizit definieren, über die eine Anfrage Zugriff erhalten soll.Die Verwendung dieses Musters kann dazu führen, dass bestimmte Anfragen unerwartet abgelehnt werden, wenn eine bestimmte Bedingung nicht zugelassen wird. Dies kann zu einer Beeinträchtigung der Nutzererfahrung, einem Dienstausfall oder zu einer Nichteinhaltung Ihres SLO oder SLA führen. Der Kompromiss bei der expliziten Definition des gesamten Zugriffs wird normalerweise gegenüber einem Sicherheitsvorfall aufgrund eines unbeabsichtigten Zugriffs bevorzugt.
Beispiel:
Erstellen Sie eine
AuthorizationPolicy
, um das Standard-Ablehnungsmuster zu verwenden. Definieren Sie dazu eineallow-nothing
-Richtlinie im Ziel-Namespace. Indem Sie Folgendes erstellen, können Sie beispielsweise den gesamten Traffic zu allen Diensten im Namespacedefault
ablehnen:apiVersion: security.istio.io/v1beta1 kind: AuthorizationPolicy metadata: name: allow-nothing namespace: default spec: {}
Weitere Informationen zum Definieren einer
AuthorizationPolicy
-Typrichtlinie finden Sie unter Istio-Autorisierung für HTTP-Traffic.Alternative Option: Alle problematischen URL-Varianten für Ihren Dienst explizit ablehnen
Wenn Sie vermeiden möchten, ein Standard-Ablehnungsmuster zu implementieren, müssen Sie sichergehen, dass Ihr Back-End-Dienst alle problematischen Pfade ablehnen kann. Abhängig von Ihrer Sprache, Ihrem Framework und anderen Faktoren bei der Implementierung Ihres Dienstes müssen Sie alle URL-Pfade, die vom Istio-Gateway für eingehenden Traffic nicht normalisiert werden, explizit ablehnen. Dazu gehören:
- Mehrere Schrägstriche oder umgekehrte Schrägstriche:
//
,\\
- Maskierte Sequenzen mit Schrägstrichen oder umgekehrten Schrägstrichen:
%2F
,%2f
,%5C
,%5c
- Mehrere Schrägstriche oder umgekehrte Schrägstriche: