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
Konfigurieren Sie die Autorisierungserweiterung.
Definieren Sie die Erweiterung in einer YAML-Datei, die sie dem Backend-Dienst
authz-servicezuordnet. 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 EOFErsetzen Sie
PROJECT_IDdurch 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 oderext_authzauch in der Vorschau unterstützt. Wenn die OptionwireFormataufEXT_AUTHZ_GRPCfestgelegt ist, verwendet der Callout dasext_authz-Protokoll. Wenn die Option nicht angegeben ist, verwendet der Callout dasext_proc-Protokoll.Importieren Sie die Autorisierungserweiterung. Verwenden Sie den Befehl
gcloud service-extensions authz-extensions importmit den folgenden Beispielwerten.gcloud service-extensions authz-extensions import my-authz-ext \ --source=authz-extension.yaml \ --location=us-east1Wenn Sie das Protokoll auf
ext_authzfestlegen möchten, verwenden Sie stattdessen dengcloud beta service-extensions authz-extensions import-Befehl.
Konfigurieren Sie eine Autorisierungsrichtlinie mit der Erweiterung.
Definieren Sie eine Autorisierungsrichtlinie, die die Erweiterung
my-authz-extmit der Weiterleitungsregelfr1verknüpft. Verwenden Sie die angegebenen Beispielwerte. Die AktionCUSTOMgibt 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" EOFImportieren Sie die Autorisierungsrichtlinie in das Projekt. Verwenden Sie den Befehl
gcloud network-security authz-policies importmit 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
- Beispiele für
ext_authz- undext_proc-Server in Python und Go finden Sie im GitHub-Repository für Service Extensions. - Routenerweiterung konfigurieren
- Traffic-Erweiterung konfigurieren
- Erweiterungen verwalten