Autorisierungserweiterung konfigurieren

Mit Service Extensions können Application Load Balancer Callouts an Backend-Dienste senden, um benutzerdefinierte Verarbeitung in den Verarbeitungspfad einzufügen. Autorisierungserweiterungen werden im Anfrageverarbeitungspfad ausgeführt, wenn der Load Balancer Anfrageheader empfängt und nachdem der Backend-Dienst über die URL-Zuordnung ausgewählt wurde. Auf dieser Seite wird beschrieben, wie Sie Autorisierungserweiterungen so konfigurieren, dass eine benutzerdefinierte Autorisierungs-Engine verwendet wird, die in einer Autorisierungsrichtlinie definiert ist.

Eine Übersicht über Application Load Balancer-Erweiterungen finden Sie unter Übersicht über Cloud Load Balancing-Erweiterungen.

Einführung

Mit Cloud Load Balancing können Sie Autorisierungsrichtlinien konfigurieren, mit denen die Zugriffssteuerung für Traffic, der in Load Balancer gelangt, erzwungen wird. Manchmal lassen sich komplexe Autorisierungsentscheidungen nicht ohne Weiteres mit einer Autorisierungsrichtlinie ausdrücken.

Sie können Autorisierungsrichtlinien mit Autorisierungserweiterungen konfigurieren, um Autorisierungsentscheidungen an benutzerdefinierte Autorisierungs-Engines zu delegieren. Im Datenpfad werden Autorisierungserweiterungen nach Routenerweiterungen, aber vor Traffic-Erweiterungen ausgeführt. Bei jeder Autorisierungsanfrage leitet der Load Balancer die Anfrageheader an die Erweiterung weiter. Je nach Antwort des Anbieters leitet der Load-Balancer-Proxy die Anfrage entweder weiter oder lehnt sie ab.

Informationen zu den Limits für Application Load Balancer-Erweiterungen finden Sie auf der Seite Kontingente und Limits.

Hinweise

Erstellen Sie die erforderlichen Ressourcen, wie unter Callout-Backend-Dienst konfigurieren beschrieben.

Autorisierungserweiterung konfigurieren

Im folgenden Beispiel wird gezeigt, wie Sie eine Autorisierungserweiterung, my-authz-ext, mit einer Autorisierungsrichtlinie konfigurieren, um Autorisierungsentscheidungen für einen regionalen internen Application Load Balancer in us-east1 zu delegieren.

gcloud

  1. Konfigurieren Sie die Autorisierungserweiterung.

    1. Definieren Sie die Erweiterung in einer YAML-Datei, die sie dem Backend-Dienst authz-service zuordnet. Verwenden Sie die angegebenen Beispielwerte.

      cat >authz-extension.yaml <<EOF
          name: my-authz-ext
          authority: ext11.com
          loadBalancingScheme: INTERNAL_MANAGED
          service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/authz-service
          forwardHeaders:
            - Authorization
          failOpen: false
          timeout: "0.1s"
          wireFormat: EXT_AUTHZ_GRPC
      EOF
      

      Ersetzen Sie PROJECT_ID durch die Projekt-ID.

      Standardmäßig verwenden alle Service Extensions-Callouts das Envoy External Processing- oder ext_proc-Protokoll. Bei Autorisierungsaufrufen wird das optimal geeignete Protokoll für die externe Autorisierung oder ext_authz auch in der Vorschau unterstützt. Wenn die Option wireFormat auf EXT_AUTHZ_GRPC festgelegt ist, verwendet der Callout das ext_authz-Protokoll. Wenn die Option nicht angegeben ist, verwendet der Callout das ext_proc-Protokoll.

    2. Importieren Sie die Autorisierungserweiterung. Verwenden Sie den Befehl gcloud service-extensions authz-extensions import mit den folgenden Beispielwerten.

      gcloud service-extensions authz-extensions import my-authz-ext \
          --source=authz-extension.yaml \
          --location=us-east1
      

      Wenn Sie das Protokoll auf ext_authz festlegen möchten, verwenden Sie stattdessen den gcloud beta service-extensions authz-extensions import-Befehl.

  2. Konfigurieren Sie eine Autorisierungsrichtlinie mit der Erweiterung.

    1. Definieren Sie eine Autorisierungsrichtlinie, die die Erweiterung my-authz-ext mit der Weiterleitungsregel fr1 verknüpft. Verwenden Sie die angegebenen Beispielwerte. Die Aktion CUSTOM gibt an, dass eine Erweiterung verwendet wird.

      cat >authz-policy.yaml <<EOF
          name: my-authz-policy
          target:
            loadBalancingScheme: INTERNAL_MANAGED
            resources:
              - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-east1/forwardingRules/fr1"
          action: CUSTOM
          customProvider:
            authzExtension:
              resources:
                - "projects/PROJECT_ID/locations/us-east1/authzExtensions/my-authz-ext"
      EOF
      
    2. Importieren Sie die Autorisierungsrichtlinie in das Projekt. Verwenden Sie den Befehl gcloud network-security authz-policies import mit den folgenden Beispielwerten.

      gcloud network-security authz-policies import my-authz-policy \
          --source=authz-policy.yaml \
          --location=us-east1
      

Einschränkungen für Autorisierungserweiterungen

Im Folgenden finden Sie einige Einschränkungen von Autorisierungserweiterungen:

  • Eine Autorisierungsrichtlinie kann nur eine Autorisierungserweiterung haben.
  • Eine Weiterleitungsregel kann mit mehreren Autorisierungsrichtlinien verwendet werden, von denen nur eine eine benutzerdefinierte Autorisierungsrichtlinie sein kann.

Einschränkungen, die für alle Erweiterungen gelten, finden Sie unter Einschränkungen für Erweiterungen.

Nächste Schritte