Best Practices für die Sicherheit in Cloud Run for Anthos

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:

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 eine allow-nothing-Richtlinie im Ziel-Namespace. Indem Sie Folgendes erstellen, können Sie beispielsweise den gesamten Traffic zu allen Diensten im Namespace default 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