Auf dieser Seite erfahren Sie, wie Sie Autorisierungsrichtlinien für Application Load Balancer einrichten.
Hinweis
- Machen Sie sich mit der Übersicht über Autorisierungsrichtlinien vertraut.
-
- Network Security API
- Network Services API
Load-Balancer einrichten
Wenn Sie noch keinen Load-Balancer erstellt haben, finden Sie auf den folgenden Seiten Informationen zum Einrichten des gewünschten Application Load Balancers:
- Informationen zum Erstellen eines globalen externen Application Load Balancers finden Sie unter Globalen externen Application Load Balancer mit VM-Instanzgruppen-Backends einrichten.
Informationen zum Erstellen eines regionalen externen Application Load Balancers finden Sie unter Regionalen externen Application Load Balancer mit VM-Instanzgruppen-Back-Ends einrichten.
Informationen zum Erstellen eines regionalen internen Application Load Balancers finden Sie unter Regionalen internen Application Load Balancer mit VM-Instanzgruppen-Back-Ends einrichten.
- Informationen zum Erstellen eines regionenübergreifenden internen Application Load Balancers finden Sie unter Regionenübergreifenden internen Application Load Balancer mit VM-Instanzgruppen-Back-Ends einrichten.
Autorisierungsrichtlinie erstellen
Wenn Sie eine Autorisierungsrichtlinie erstellen möchten, erstellen Sie eine YAML-Datei, in der das Ziel und die Regeln definiert sind, und importieren Sie die Datei dann mit dem Befehl gcloud network-security authz-policies.
In diesem Abschnitt finden Sie eine Anleitung zum Erstellen von Autorisierungsrichtlinien, die an die Weiterleitungsregel von Application Load Balancers angehängt werden.
Weitere Informationen zum Erstellen einer Autorisierungsrichtlinie für ein Agent Gateway, das die Autorisierung mithilfe von Service Extensions delegiert, finden Sie unter Autorisierung mit Service Extensions delegieren.
Weitere Informationen zum Erstellen einer Autorisierungsrichtlinie für einen Secure Web Proxy finden Sie unter Autorisierungsrichtlinien für Secure Web Proxy einrichten.
Autorisierungsrichtlinie zum Ablehnen von Anfragen
Dieser Abschnitt enthält Beispiele für Autorisierungsrichtlinien, die Anfragen basierend auf bestimmten Anfrageattributen ablehnen.
Anfragen basierend auf IP-Adressbereichen ablehnen
In diesem Abschnitt finden Sie ein Beispiel für eine Autorisierungsrichtlinie, mit der Anfragen abgelehnt werden, die aus bestimmten IP-Adressbereichen stammen.
Global und regionsübergreifend
Definieren Sie die Autorisierungsrichtlinie in einer YAML-Datei.
Im folgenden Beispiel wird eine
authz-policy-deny.yaml-Datei für die WeiterleitungsregelLB_FORWARDING_RULEam Standortglobalerstellt. Die Richtlinie verweigert Clients mit IP-Adressen im Bereich10.0.0.0/24den Zugriff auf den URL-Pfad/api/payments.cat >authz-policy-deny.yaml <<EOF name: my-authz-policy-deny target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/forwardingRules/LB_FORWARDING_RULE" httpRules: - from: sources: - ipBlocks: - prefix: "10.0.0.0" length: "24" - to: operations: - paths: - prefix: "/api/payments" action: DENY EOFErsetzen Sie Folgendes:
LB_SCHEME: Das Load-Balancing-Schema. Legen Sie für globale externe Application Load Balancer das Schema aufEXTERNAL_MANAGEDfest. Legen Sie für regionenübergreifende interne Application Load Balancer das Schema aufINTERNAL_MANAGEDfest.PROJECT_ID: die ID Ihres Projekts in Google Cloud .LB_FORWARDING_RULE: der Name der Weiterleitungsregel des Load-Balancers.
Erstellen Sie die Autorisierungsrichtlinie, indem Sie die YAML-Datei der Autorisierungsrichtlinie mit dem Befehl gcloud network-security authz-policies import importieren.
gcloud network-security authz-policies import my-authz-policy-deny \ --source=authz-policy-deny.yaml \ --location=global
Regional
Definieren Sie die Autorisierungsrichtlinie in einer YAML-Datei.
Im folgenden Beispiel wird eine
authz-policy-deny.yaml-Datei für die WeiterleitungsregelLB_FORWARDING_RULEin einerGoogle Cloud -Region erstellt. Die Richtlinie verweigert Clients mit IP-Adressen im Bereich10.0.0.0/24den Zugriff auf den URL-Pfad/api/payments.cat >authz-policy-deny.yaml <<EOF name: my-authz-policy-deny target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/LB_FORWARDING_RULE" httpRules: - from: sources: - ipBlocks: - prefix: "10.0.0.0" length: "24" - to: operations: - paths: - prefix: "/api/payments" action: DENY EOFErsetzen Sie Folgendes:
LB_SCHEME: Das Load-Balancing-Schema. Legen Sie für regionale externe Application Load Balancer das Schema aufEXTERNAL_MANAGEDfest. Legen Sie für regionale interne Application Load Balancer das Schema aufINTERNAL_MANAGEDfest.PROJECT_ID: die ID Ihres Projekts in Google Cloud .LB_FORWARDING_RULE: der Name der Weiterleitungsregel des Load-Balancers.
Erstellen Sie die Autorisierungsrichtlinie, indem Sie die YAML-Datei der Autorisierungsrichtlinie mit dem Befehl gcloud network-security authz-policies import importieren.
gcloud network-security authz-policies import my-authz-policy-deny \ --source=authz-policy-deny.yaml \ --location=global
Anfragen auf Grundlage von Clientzertifikatsprinzipalen ablehnen
In diesem Abschnitt finden Sie ein Beispiel für eine Autorisierungsrichtlinie, mit der Anfragen basierend auf Clientzertifikathauptkonten abgelehnt werden.
Global und regionsübergreifend
Definieren Sie die Autorisierungsrichtlinie in einer YAML-Datei.
Im folgenden Beispiel wird eine
authz-policy-deny.yaml-Datei für die WeiterleitungsregelLB_FORWARDING_RULEam Standortglobalerstellt.Die Richtlinie verweigert Clients mitwww.example.comin ihren SANs für DNS-Namen des Clientzertifikats den Zugriff auf den URL-Pfad/api/payments.cat >authz-policy-deny.yaml <<EOF name: my-authz-policy-deny target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/forwardingRules/LB_FORWARDING_RULE" httpRules: - from: sources: - principals: - principalSelector: CLIENT_CERT_DNS_NAME_SAN principal: exact: "www.example.com" to: operations: - paths: - prefix: "/api/payments" action: DENY EOFErsetzen Sie Folgendes:
LB_SCHEME: Das Load-Balancing-Schema. Legen Sie für globale externe Application Load Balancer das Schema aufEXTERNAL_MANAGEDfest. Legen Sie für regionenübergreifende interne Application Load Balancer das Schema aufINTERNAL_MANAGEDfest.PROJECT_ID: die ID Ihres Projekts in Google Cloud .LB_FORWARDING_RULE: der Name der Weiterleitungsregel des Load Balancers.
Erstellen Sie die Autorisierungsrichtlinie, indem Sie die YAML-Datei der Autorisierungsrichtlinie mit dem Befehl gcloud network-security authz-policies import importieren.
gcloud network-security authz-policies import my-authz-policy-deny \ --source=authz-policy-deny.yaml \ --location=global
Regional
Definieren Sie die Autorisierungsrichtlinie in einer YAML-Datei.
Im folgenden Beispiel wird eine
authz-policy-deny.yaml-Datei für die WeiterleitungsregelLB_FORWARDING_RULEin einerGoogle Cloud -Region erstellt. Die Richtlinie verweigert den Zugriff auf den/api/payments-URL-Pfad für Clients, diewww.example.comin ihren DNS-Namen-SANs des Clientzertifikats haben.cat >authz-policy-deny.yaml <<EOF name: my-authz-policy-deny target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/LB_FORWARDING_RULE" policyProfile: REQUEST_AUTHZ httpRules: - from: sources: - principals: - principalSelector: CLIENT_CERT_DNS_NAME_SAN principal: exact: "www.example.com" to: operations: - paths: - prefix: "/api/payments" action: DENY EOFErsetzen Sie Folgendes:
LB_SCHEME: Das Load-Balancing-Schema. Legen Sie für regionale externe Application Load Balancer das Schema aufEXTERNAL_MANAGEDfest. Legen Sie für regionale interne Application Load Balancer das Schema aufINTERNAL_MANAGEDfest.PROJECT_ID: die ID Ihres Projekts in Google Cloud .LOCATION: Ihre Google Cloud Region.LB_FORWARDING_RULE: der Name der Weiterleitungsregel des Load Balancers.
Erstellen Sie die Autorisierungsrichtlinie, indem Sie die YAML-Datei der Autorisierungsrichtlinie mit dem Befehl gcloud network-security authz-policies import importieren.
gcloud beta network-security authz-policies import my-authz-policy-deny \ --source=authz-policy-deny.yaml \ --location=LOCATION
Autorisierungsrichtlinie zum Zulassen von Anfragen
In diesem Abschnitt finden Sie ein Beispiel für eine Autorisierungsrichtlinie, die Anfragen aus bestimmten IP-Adressbereichen zulässt.
Global und regionsübergreifend
Wenn Sie einen globalen externen Application Load Balancer oder einen regionenübergreifenden internen Application Load Balancer verwenden, gehen Sie so vor, um eine Autorisierungsrichtlinie zu erstellen:
Definieren Sie die Autorisierungsrichtlinie in einer YAML-Datei.
Im folgenden Beispiel wird eine
authz-policy-allow.yaml-Datei für die WeiterleitungsregelLB_FORWARDING_RULEam Standortglobalerstellt. Die Richtlinie ermöglicht Clients mit IP-Adressen im Bereich10.0.0.0/24den Zugriff auf den URL-Pfad/api/payments.cat >authz-policy-allow.yaml <<EOF name: my-authz-policy-allow target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/forwardingRules/LB_FORWARDING_RULE" httpRules: - from: sources: - ipBlocks: - prefix: "10.0.0.0" length: "24" to: operations: - paths: - exact: "/api/payments" action: ALLOW EOFErsetzen Sie Folgendes:
LB_SCHEME: Das Load-Balancing-Schema. Legen Sie für globale externe Application Load Balancer das Schema aufEXTERNAL_MANAGEDfest. Legen Sie für regionenübergreifende interne Application Load Balancer das Schema aufINTERNAL_MANAGEDfest.PROJECT_ID: die ID Ihres Projekts in Google Cloud .LB_FORWARDING_RULE: der Name der Weiterleitungsregel des Load Balancers.
Erstellen Sie die Autorisierungsrichtlinie, indem Sie die YAML-Datei der Autorisierungsrichtlinie mit dem Befehl gcloud network-security authz-policies import importieren.
gcloud network-security authz-policies import my-authz-policy-allow \ --source=authz-policy-allow.yaml \ --location=global
Regional
Wenn Sie einen regionalen externen oder internen Application Load Balancer verwenden, gehen Sie so vor, um eine Autorisierungsrichtlinie zu erstellen und zu importieren:
Definieren Sie die Autorisierungsrichtlinie in einer YAML-Datei.
Im folgenden Beispiel wird eine
authz-policy-allow.yaml-Datei für die WeiterleitungsregelLB_FORWARDING_RULEin einer bestimmten Google Cloud Region erstellt. Die Richtlinie erlaubt Clients mit IP-Adressen im Bereich10.0.0.0/24den Zugriff auf den URL-Pfad/api/payments.cat >authz-policy-allow.yaml <<EOF name: my-authz-policy-allow target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/LB_FORWARDING_RULE" policyProfile: REQUEST_AUTHZ httpRules: - from: sources: - ipBlocks: - prefix: "10.0.0.0" length: "24" to: operations: - paths: - exact: "/api/payments" action: ALLOW EOFErsetzen Sie Folgendes:
LB_SCHEME: Das Load-Balancing-Schema. Legen Sie für regionale externe Application Load Balancer das Schema aufEXTERNAL_MANAGEDfest. Legen Sie für regionale interne Application Load Balancer das Schema aufINTERNAL_MANAGEDfest.PROJECT_ID: die ID Ihres Projekts in Google Cloud .LOCATION: Ihre Google Cloud Region.LB_FORWARDING_RULE: der Name der Weiterleitungsregel des Load Balancers.
Erstellen Sie die Autorisierungsrichtlinie, indem Sie die YAML-Datei der Autorisierungsrichtlinie mit dem Befehl gcloud network-security authz-policies import importieren.
gcloud beta network-security authz-policies import my-authz-policy-allow \ --source=authz-policy-allow.yaml \ --location=LOCATION
Autorisierungsrichtlinie basierend auf Dienstkonten oder Tags
Sie können eine Autorisierungsrichtlinie basierend auf Dienstkonten oder sicheren Tags anwenden, die an verschiedene Google Cloud Ressourcen angeh��ngt sind.
In diesem Beispiel wird davon ausgegangen, dass Sie Folgendes bereits erledigt haben:
Sie haben ein Dienstkonto erstellt und an eine Google Cloud -Ressource angehängt.
Sie haben ein sicheres Tag erstellt und es als Schlüssel/Wert-Paar an eine Google Cloud -Ressource angehängt. Wenn Sie ein Tag erstellen, legen Sie das Flag
--purposeaufGCE_FIREWALLfest. Für Autorisierungsrichtlinien ist der ZweckGCE_FIREWALLerforderlich, um das Tag anzuwenden.
Dienstkonto
Definieren Sie die Autorisierungsrichtlinie in einer YAML-Datei.
Im folgenden Beispiel wird eine
authz-policy-deny.yaml-Datei für die WeiterleitungsregelLB_FORWARDING_RULEeines regionalen internen Application Load Balancers erstellt. Die Richtlinie ist so konfiguriert, dass Anfragen von einer Google Cloud -Ressource, z. B. einer Compute Engine-VM, mit dem Dienstkontomy-sa-123@PROJECT_ID.iam.gserviceaccount.comfür den Pfad/api/paymentsabgelehnt werden.cat >authz-policy-deny.yaml <<EOF name: my-authz-policy-deny target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/LB_FORWARDING_RULE" policyProfile: REQUEST_AUTHZ httpRules: - from: sources: - resources: - iamServiceAccount: exact: "my-sa-123@PROJECT_ID.iam.gserviceaccount.com" to: operations: - paths: - prefix: "/api/payments" action: DENY EOFErsetzen Sie Folgendes:
LB_SCHEME: Das Load-Balancing-Schema. Legen Sie für regionale interne Application Load Balancer und regionenübergreifende interne Application Load Balancer das Schema aufINTERNAL_MANAGEDfest.PROJECT_ID: die ID Ihres Projekts in Google Cloud .LOCATION: Ihre Google Cloud Region.LB_FORWARDING_RULE: der Name der Weiterleitungsregel des Load Balancers.
Erstellen Sie die Autorisierungsrichtlinie, indem Sie die YAML-Datei der Autorisierungsrichtlinie mit dem Befehl gcloud network-security authz-policies import importieren.
gcloud beta network-security authz-policies import my-authz-policy-deny \ --source=authz-policy-deny.yaml \ --location=LOCATIONErsetzen Sie
LOCATIONdurch Ihre Google Cloud Region.
Tag
Definieren Sie die Autorisierungsrichtlinie in einer YAML-Datei.
Im folgenden Beispiel wird eine
authz-policy-allow.yaml-Datei für die WeiterleitungsregelLB_FORWARDING_RULEeines regionalen internen Application Load Balancer erstellt. Die Richtlinie lässt nur Anfragen zu, die von einer Google Cloud -Ressource wie einer Compute Engine-VM mit dem sicheren Tag-WertTAG_VALUE_PERMANENT_IDstammen, um auf den URL-Pfad/api/paymentszuzugreifen.cat >authz-policy-allow.yaml <<EOF name: my-authz-policy-allow target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/LB_FORWARDING_RULE" policyProfile: REQUEST_AUTHZ httpRules: - from: sources: resources: - tagValueIdSet: - ids: "TAG_VALUE_PERMANENT_ID" to: operations: - paths: - exact: "/api/payments" action: ALLOW EOFErsetzen Sie Folgendes:
LB_SCHEME: Das Load-Balancing-Schema. Legen Sie für regionale interne Application Load Balancer und regionenübergreifende interne Application Load Balancer das Schema aufINTERNAL_MANAGEDfest.PROJECT_ID: die ID Ihres Projekts in Google Cloud .LOCATION: Ihre Google Cloud Region.LB_FORWARDING_RULE: der Name der Weiterleitungsregel des Load-Balancers.TAG_VALUE_PERMANENT_ID: die permanente ID eines Tag-Werts.
Erstellen Sie die Autorisierungsrichtlinie, indem Sie die YAML-Datei der Autorisierungsrichtlinie mit dem Befehl gcloud network-security authz-policies import importieren.
gcloud beta network-security authz-policies import my-authz-policy-allow \ --source=authz-policy-allow.yaml \ --location=LOCATIONErsetzen Sie Folgendes:
LOCATION: Ihre Google Cloud Region.
Autorisierungsrichtlinie zum Delegieren von Autorisierungsentscheidungen
In den Beispielen in diesem Abschnitt wird eine Autorisierungsrichtlinie erstellt, die Autorisierungsentscheidungen über Service Extensions an die folgenden Dienste delegiert:
- Nutzerverwalteter Dienst
- Von Google verwalteter Dienst
Autorisierungsentscheidung an einen vom Nutzer verwalteten Dienst delegieren
Sie können eine Autorisierungsrichtlinie so konfigurieren, dass die Autorisierungsentscheidung über Service Extensions, insbesondere eine Autorisierungserweiterung, an einen vom Nutzer verwalteten Dienst delegiert wird.
Bei globalen und regionenübergreifenden Load Balancern kann die Autorisierungserweiterung in einem nutzerverwalteten Google Cloud Backend-Dienst ausgeführt werden.
Bei regionalen Load Balancern kann die Autorisierungserweiterung sowohl für einen vom Nutzer verwalteten Google Cloud Backend-Dienst als auch für einen FQDN-basierten Dienst ausgeführt werden.
Bei dieser Beispielkonfiguration wird davon ausgegangen, dass Sie einen vom Nutzer verwalteten Google Cloud Backend-Dienst (auch als Callout-Backend-Dienst bezeichnet) mit dem Namen authz-service erstellt haben.
Weitere Informationen zum Erstellen eines solchen Dienstes finden Sie unter Vom Nutzer verwalteten Callout-Backend-Dienst konfigurieren.
Bei einem FQDN-basierten Dienst wird in diesem Beispiel davon ausgegangen, dass der benutzerdefinierte Dienst in Ihrer eigenen VPC bereitgestellt wird, das ext_authz-Protokoll unterstützt und über den voll qualifizierten Domainnamen mycustomauthz.internal.net zugänglich ist.
Global und regionsübergreifend
Wenn Sie einen globalen externen Application Load Balancer oder einen regionenübergreifenden internen Application Load Balancer verwenden, folgen Sie dieser Anleitung, um die Autorisierungsentscheidung an einen vom Nutzer verwalteten Dienst zu delegieren.
Definieren Sie die Autorisierungserweiterung in einer YAML-Datei. Die Autorisierungserweiterung wird in einem Backend-Dienst (
authz-service) ausgeführt und unterstützt dasext_authz-Protokoll.cat >authz-extension.yaml <<EOF name: my-authz-ext authority: ext11.com loadBalancingScheme: LB_SCHEME service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/authz-service forwardHeaders: - Authorization failOpen: false timeout: "0.1s" wireFormat: EXT_AUTHZ_GRPC EOFErstellen Sie die Autorisierungserweiterung, indem Sie die YAML-Datei für die Autorisierungserweiterung mit dem Befehl
gcloud service-extensions authz-extensions importimportieren.gcloud service-extensions authz-extensions import my-authz-ext \ --source=authz-extension.yaml \ --location=globalErsetzen Sie Folgendes:
LB_SCHEME: Das Load-Balancing-Schema. Legen Sie für globale externe Application Load Balancer das Schema aufEXTERNAL_MANAGEDfest. Legen Sie für regionenübergreifende interne Application Load Balancer das Schema aufINTERNAL_MANAGEDfest.PROJECT_ID: die ID Ihres Projekts in Google Cloud .
Definieren Sie die Autorisierungsrichtlinie in einer YAML-Datei. Die Autorisierungsrichtlinie delegiert die Autorisierung an die Autorisierungserweiterung im Feld
customProvider.Die Richtlinie ruft die Autorisierungserweiterung
my-authz-extfür den gesamten Traffic zum URL-Pfadexample.com/api/paymentsauf, wenn die Anfrage einen nicht leerenAuthorization-Header enthält.cat >authz-policy-custom.yaml <<EOF name: my-authz-policy-custom target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/forwardingRules/LB_FORWARDING_RULE" httpRules: - to: operations: - hosts: - exact: "example.com" - paths: - exact: "/api/payments" when: 'request.headers["Authorization"] != ""' action: CUSTOM customProvider: authzExtension: resources: - "projects/PROJECT_ID/locations/global/authzExtensions/my-authz-ext" EOFErsetzen Sie Folgendes:
LB_SCHEME: Das Load-Balancing-Schema. Legen Sie für globale externe Application Load Balancer das Schema aufEXTERNAL_MANAGEDfest. Legen Sie für regionenübergreifende interne Application Load Balancers das Schema aufINTERNAL_MANAGEDfest.PROJECT_ID: die ID Ihres Projekts in Google Cloud .LB_FORWARDING_RULE: der Name der Weiterleitungsregel des Load Balancers.
Erstellen Sie die Autorisierungsrichtlinie, indem Sie die YAML-Datei der Autorisierungsrichtlinie mit dem Befehl
gcloud network-security authz-policies importimportieren.gcloud network-security authz-policies import my-authz-policy-custom \ --source=authz-policy-custom.yaml \ --location=global
Regional
Wenn Sie einen regionalen externen Application Load Balancer oder einen regionalen internen Application Load Balancer verwenden, folgen Sie dieser Anleitung, um die Autorisierungsentscheidung an einen vom Nutzer verwalteten Dienst zu delegieren.
Definieren Sie die Autorisierungserweiterung in einer YAML-Datei. Die Autorisierungserweiterung kann auf einem Backend-Dienst oder einem FQDN-basierten Dienst ausgeführt werden.
cat >authz-extension.yaml <<EOF name: my-authz-ext authority: ext11.com loadBalancingScheme: LB_SCHEME service: BACKEND_SERVICE_URI_OR_FQDN forwardHeaders: - Authorization failOpen: false timeout: "0.1s" wireFormat: EXT_AUTHZ_GRPC EOFErsetzen Sie Folgendes:
LB_SCHEME: Das Load-Balancing-Schema. Legen Sie für regionale externe Application Load Balancer das Schema aufEXTERNAL_MANAGEDfest. Legen Sie für regionale interne Application Load Balancer das Schema aufINTERNAL_MANAGEDfest.BACKEND_SERVICE_URI_OR_FQDN: Der Dienst kann einer der folgenden sein:- einen URI für eine regionale Backend-Dienstressource im Format
https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/backendServices/authz-service. - ein vollqualifizierter Domainname (z. B.
mycustomauthz.extension.net), der von Cloud DNS aufgelöst werden kann.
- einen URI für eine regionale Backend-Dienstressource im Format
Erstellen Sie die Autorisierungserweiterung, indem Sie die YAML-Datei für die Autorisierungserweiterung mit dem Befehl
gcloud service-extensions authz-extensions importimportieren.gcloud service-extensions authz-extensions import my-authz-ext \ --source=authz-extension.yaml \ --location=LOCATIONErsetzen Sie LOCATION durch die Google Cloud-Region, in der der Callout-Backend-Dienst konfiguriert ist.
Definieren Sie die Autorisierungsrichtlinie in einer YAML-Datei. Die Autorisierungsrichtlinie delegiert die Autorisierung an die Autorisierungserweiterung im Feld
customProvider.Die Richtlinie ruft die Autorisierungserweiterung
my-authz-extfür den gesamten Traffic zum URL-Pfadexample.com/api/paymentsauf, wenn die Anfrage einen nicht leerenAuthorization-Header enthält.cat >authz-policy-custom.yaml <<EOF name: my-authz-policy-custom target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/LB_FORWARDING_RULE" policyProfile: REQUEST_AUTHZ httpRules: - to: operations: - paths: - exact: "/api/payments" when: 'request.headers["Authorization"] != ""' action: CUSTOM customProvider: authzExtension: resources: - "projects/PROJECT_ID/locations/LOCATION/authzExtensions/my-authz-ext" EOFErsetzen Sie Folgendes:
LB_SCHEME: Das Load-Balancing-Schema. Legen Sie für regionale externe Application Load Balancer das Schema aufEXTERNAL_MANAGEDfest. Legen Sie für regionale interne Application Load Balancer das Schema aufINTERNAL_MANAGEDfest.PROJECT_ID: die ID Ihres Projekts in Google Cloud .LOCATION: die Google Cloud Region.LB_FORWARDING_RULE: der Name der Weiterleitungsregel des Load-Balancers.
Erstellen Sie die Autorisierungsrichtlinie, indem Sie die YAML-Datei der Autorisierungsrichtlinie mit dem Befehl
gcloud network-security authz-policies importimportieren.gcloud beta network-security authz-policies import my-authz-policy-custom \ --source=authz-policy-custom.yaml \ --location=LOCATIONErsetzen Sie LOCATION durch die Google CloudRegion, in der der Load-Balancer konfiguriert ist.
Weitere Informationen zu Autorisierungserweiterungen finden Sie unter Autorisierungserweiterung konfigurieren.
Autorisierungsentscheidung an Model Armor delegieren
Sie können eine Autorisierungsrichtlinie konfigurieren, um die Autorisierungsentscheidung an Model Armor zu delegieren.
Erstellen Sie zuerst eine Model Armor-Vorlage. In diesem Beispiel verweist die Autorisierungsrichtlinie auf eine Autorisierungserweiterung, die wiederum auf Model Armor verweist.
Wenn Sie einen regionalen externen oder einen regionalen internen Application Load Balancer verwenden, folgen Sie dieser Anleitung, um die Autorisierungsentscheidung an Model Armor zu delegieren.
Regional
Definieren Sie die Autorisierungserweiterung in einer YAML-Datei. Die Autorisierungserweiterung verweist auf Model Armor-Anfrage- und Antwortvorlagen.
cat >authz-extension.yaml <<EOF name: my-authz-extension loadBalancingScheme: INTERNAL_MANAGED service: modelarmor.LOCATION.rep.googleapis.com metadata: model_armor_settings: '[ { "response_template_id": "projects/PROJECT_ID/locations/LOCATION/templates/RESPONSE_TEMPLATE_ID", "request_template_id": "projects/PROJECT_ID/locations/LOCATION/templates/REQUEST_TEMPLATE_ID" } ]' failOpen: true EOFErsetzen Sie Folgendes:
- LOCATION: der Standort der Vorlage
- PROJECT_ID: die ID des Projekts, zu dem die Vorlage gehört
- RESPONSE_TEMPLATE_ID: ID der Antwortvorlage
- REQUEST_TEMPLATE_ID: die ID der Anforderungsvorlage
Erstellen Sie die Autorisierungserweiterung, indem Sie die YAML-Datei für die Autorisierungserweiterung mit dem Befehl
gcloud beta service-extensions authz-extensions importimportieren.gcloud beta service-extensions authz-extensions import my-authz-ext \ --source=authz-extension.yaml \ --location=LOCATION
Ersetzen Sie LOCATION durch die Google Cloud-Region, in der sich der Load-Balancer befindet.
Definieren Sie die Autorisierungsrichtlinie in einer YAML-Datei. Die Autorisierungsrichtlinie delegiert die Autorisierung an die Autorisierungserweiterung im Feld
customProvider.Der Wert von
policyProfileistCONTENT_AUTHZ.cat >authz-policy-custom.yaml <<EOF name: my-authz-policy-custom target: loadBalancingScheme: INTERNAL_MANAGED resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/LB_FORWARDING_RULE" policyProfile: CONTENT_AUTHZ action: CUSTOM customProvider: authzExtension: resources: - "projects/PROJECT_ID/locations/LOCATION/authzExtensions/my-authz-ext" EOFErsetzen Sie Folgendes:
PROJECT_ID: die ID Ihres Projekts in Google Cloud .LOCATION: die Google Cloud Region.LB_FORWARDING_RULE: der Name der Weiterleitungsregel des Load-Balancers.
Erstellen Sie die Autorisierungsrichtlinie, indem Sie die YAML-Datei der Autorisierungsrichtlinie mit dem Befehl
gcloud beta network-security authz-policies importimportieren.gcloud beta network-security authz-policies import my-authz-policy-custom \ --source=authz-policy-custom.yaml \ --location=LOCATION
Ersetzen Sie LOCATION durch die Google CloudRegion, in der der Load-Balancer konfiguriert ist.
Autorisierungsentscheidung an Identity-Aware Proxy delegieren
Bei globalen externen Application Load Balancern und regionenübergreifenden internen Application Load Balancern können Sie die Autorisierungsentscheidung nicht über eine Autorisierungserweiterung an IAP delegieren. Bei diesen Load Balancern können Sie die Autorisierungsentscheidung über das Feld customProvider in der Autorisierungsrichtlinienressource an IAP delegieren.
Für regionale externe Application Load Balancer und regionale interne Application Load Balancer können Sie eine Autorisierungsrichtlinie konfigurieren, um die Autorisierungsentscheidung über eine Autorisierungserweiterung an IAP zu delegieren.
Global und regionsübergreifend
Im folgenden Beispiel werden alle Autorisierungsentscheidungen für alle Anfragen, die aus dem IP-Adressblock 10.0.0.0/24 stammen, an IAP delegiert. Wenn Anfragen von einer IP-Adresse außerhalb von 10.0.0.0/24 stammen, entsprechen sie nicht dieser Richtlinie und werden von IAP nicht anhand dieser spezifischen Regel ausgewertet.
Definieren Sie die Autorisierungsrichtlinie in einer YAML-Datei. Die Autorisierungsrichtlinie delegiert die Autorisierung über das Feld
customProvideran IAP.cat >authz-policy-iap.yaml <<EOF name: my-authz-policy-custom target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/forwardingRules/LB_FORWARDING_RULE" httpRules: - from: sources: - ipBlock: - prefix: "10.0.0.0" length: 24 action: CUSTOM customProvider: cloudIap: {} EOFErsetzen Sie Folgendes:
LB_SCHEME: Das Load-Balancing-Schema. Legen Sie für globale externe Application Load Balancer das Schema aufEXTERNAL_MANAGEDfest. Legen Sie für regionenübergreifende interne Application Load Balancer das Schema aufINTERNAL_MANAGEDfest.PROJECT_ID: die ID Ihres Projekts in Google Cloud .LB_FORWARDING_RULE: der Name der Weiterleitungsregel des Load Balancers.
Erstellen Sie die Autorisierungsrichtlinie, indem Sie die YAML-Datei der Autorisierungsrichtlinie mit dem Befehl
gcloud network-security authz-policies importimportieren.gcloud network-security authz-policies import my-authz-policy-custom \ --source=authz-policy-iap.yaml \ --location=global
Regional
Wenn Sie einen regionalen externen oder internen Application Load Balancer verwenden, folgen Sie dieser Anleitung, um die Autorisierungsentscheidung mithilfe einer Autorisierungserweiterung an IAP zu delegieren.
Definieren Sie die Autorisierungserweiterung in einer YAML-Datei. Die Autorisierungserweiterung verweist auf IAP.
cat >authz-extension.yaml <<EOF name: my-authz-ext loadBalancingScheme: LB_SCHEME service: iap.googleapis.com failOpen: false EOFErsetzen Sie Folgendes:
- LB_SCHEME: Das Load-Balancing-Schema.
Legen Sie für regionale externe Application Load Balancer das Schema auf
EXTERNAL_MANAGEDfest. Legen Sie für regionale interne Application Load Balancer das Schema aufINTERNAL_MANAGEDfest.
- LB_SCHEME: Das Load-Balancing-Schema.
Legen Sie für regionale externe Application Load Balancer das Schema auf
Erstellen Sie die Autorisierungserweiterung, indem Sie die YAML-Datei für die Autorisierungserweiterung mit dem Befehl
gcloud service-extensions authz-extensions importimportieren.gcloud service-extensions authz-extensions import my-authz-ext \ --source=authz-extension.yaml \ --location=LOCATIONErsetzen Sie LOCATION durch die Google CloudRegion, in der die Autorisierungserweiterung konfiguriert ist.
Definieren Sie die Autorisierungsrichtlinie in einer YAML-Datei. Die Autorisierungsrichtlinie delegiert die Autorisierung an die Autorisierungserweiterung im Feld
customProvider.cat >authz-policy-custom.yaml <<EOF name: my-authz-policy-custom target: loadBalancingScheme: LB_SCHEME resources: - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/LB_FORWARDING_RULE" policyProfile: REQUEST_AUTHZ action: CUSTOM customProvider: authzExtension: resources: - "projects/PROJECT_ID/locations/LOCATION/authzExtensions/my-authz-ext" EOFErsetzen Sie Folgendes:
LB_SCHEME: Das Load-Balancing-Schema. Legen Sie für regionale externe Application Load Balancer das Schema aufEXTERNAL_MANAGEDfest. Legen Sie für regionale interne Application Load Balancer das Schema aufINTERNAL_MANAGEDfest.PROJECT_ID: die ID Ihres Projekts in Google Cloud .LOCATION: die Google Cloud Region.LB_FORWARDING_RULE: der Name der Weiterleitungsregel des Load Balancers.
Erstellen Sie die Autorisierungsrichtlinie, indem Sie die YAML-Datei der Autorisierungsrichtlinie mit dem Befehl
gcloud network-security authz-policies importimportieren.gcloud beta network-security authz-policies import my-authz-policy-custom \ --source=authz-policy-custom.yaml \ --location=LOCATIONErsetzen Sie LOCATION durch die Google CloudRegion, in der der Load-Balancer konfiguriert ist.
Logs für Autorisierungsrichtlinien in Cloud Logging
In den folgenden Abschnitten erfahren Sie, wie Autorisierungsrichtlinien protokolliert werden, wenn eine Anfrage zugelassen oder abgelehnt wird.
Die Anfrage entspricht weder der Richtlinie für ALLOW noch der Richtlinie für DENY
Wenn eine Anfrage weder mit der ALLOW- noch mit der DENY-Richtlinie übereinstimmt, wird sie von der DENY-Richtlinie zugelassen und als allowed_as_no_deny_policies_matched_request protokolliert. Umgekehrt lehnt die ALLOW-Richtlinie die Anfrage ab und protokolliert sie als denied_as_no_allow_policies_matched_request. Da eine der Richtlinien die Anfrage ablehnt, wird die Anfrage abgelehnt.
Wenn Sie einen globalen externen Application Load Balancer verwenden, wird
statusDetailsim Log aufdenied_by_authz_policygesetzt. Sehen Sie sich folgendes Beispiel an:{ httpRequest: {8} insertId: "example-id" jsonPayload: { @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" authzPolicyInfo: { policies: [ 0: { details: "allowed_as_no_deny_policies_matched_request" result: "ALLOWED" } 1: { details: "denied_as_no_allow_policies_matched_request" result: "DENIED" } ] result: "DENIED" } backendTargetProjectNumber: "projects/12345567" remoteIp: "00.100.11.104" statusDetails: "denied_by_authz_policy" } logName: "projects/example-project/logs/requests" receiveTimestamp: "2024-08-28T15:33:56.046651035Z" resource: {2} severity: "WARNING" spanId: "3e1a09a8e5e3e14d" timestamp: "2024-08-28T15:33:55.355042Z" trace: "projects/example-project/traces/8c8b3dbf9a19c85954d0fa2d958ca509" }Wenn Sie einen regionalen internen Application Load Balancer, einen regionalen externen Application Load Balancer oder einen regionenübergreifenden internen Application Load Balancer verwenden, wird
proxyStatusim Log auferror=\"http_request_error\"; details=\"denied_by_authz_policy\"gesetzt. Sehen Sie sich folgendes Beispiel an:{ httpRequest: {8} insertId: "example-id" jsonPayload: { @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" authzPolicyInfo: { policies: [ 0: { details: "allowed_as_no_deny_policies_matched_request" result: "ALLOWED" } 1: { details: "denied_as_no_allow_policies_matched_request" result: "DENIED" } ] result: "DENIED" } backendTargetProjectNumber: "projects/12345567" remoteIp: "00.100.11.104" proxyStatus: "error=\"http_request_error\"; details=\"denied_by_authz_policy\"" } logName: "projects/example-project/logs/requests" receiveTimestamp: "2024-08-28T15:33:56.046651035Z" resource: {2} severity: "WARNING" spanId: "3e1a09a8e5e3e14d" timestamp: "2024-08-28T15:33:55.355042Z" trace: "projects/example-project/traces/8c8b3dbf9a19c85954d0fa2d958ca509" }
Anfrage entspricht der Richtlinie für DENY
Wenn eine Anfrage der DENY-Richtlinie entspricht, wird sie abgelehnt und die Richtlinie, die die Anfrage abgelehnt hat, wird protokolliert.
Wenn Sie einen globalen externen Application Load Balancer verwenden, wird
statusDetailsim Log aufdenied_by_authz_policygesetzt und der Name der Richtlinie, die die Anfrage abgelehnt hat, wird inpoliciesprotokolliert. Sehen Sie sich folgendes Beispiel an:{ httpRequest: {8} insertId: "example-id" jsonPayload: { @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" authzPolicyInfo: { policies: [ 0: { details: "name: "projects/12345567/locations/global/authzPolicies/deny-authz-policy-test"" result: "DENIED" } ] result: "DENIED" } backendTargetProjectNumber: "projects/12345567" cacheDecision: [2] remoteIp: "00.100.11.104" statusDetails: "denied_by_authz_policy" } logName: "projects/example-project/logs/requests" receiveTimestamp: "2024-08-28T15:33:56.046651035Z" resource: {2} severity: "WARNING" spanId: "3e1a09a8e5e3e14d" timestamp: "2024-08-28T15:33:55.355042Z" trace: "projects/example-project/traces/8c8b3dbf9a19c85954d0fa2d958ca509" }Wenn Sie einen regionalen internen Application Load Balancer, einen regionalen externen Application Load Balancer oder einen regionenübergreifenden internen Application Load Balancer verwenden, wird
proxyStatusauferror=\"http_request_error\"; details=\"denied_by_authz_policy\"gesetzt und der Name der Richtlinie wird inpoliciesprotokolliert. Sehen Sie sich folgendes Beispiel an:{ httpRequest: {8} insertId: "example-id" jsonPayload: { @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" authzPolicyInfo: { policies: [ 0: { details: "name: "projects/12345567/locations/$REGION/authzPolicies/deny-authz-policy-test"" result: "DENIED" } ] result: "DENIED" } backendTargetProjectNumber: "projects/12345567" remoteIp: "00.100.11.104" proxyStatus: "error=\"http_request_error\"; details=\"denied_by_authz_policy\"" } logName: "projects/example-project/logs/requests" receiveTimestamp: "2024-08-28T15:33:56.046651035Z" resource: {2} severity: "WARNING" spanId: "3e1a09a8e5e3e14d" timestamp: "2024-08-28T15:33:55.355042Z" trace: "projects/example-project/traces/8c8b3dbf9a19c85954d0fa2d958ca509" }
Die Anfrage entspricht nicht der DENY-Richtlinie, aber der ALLOW-Richtlinie.
Wenn eine Anfrage nicht der DENY-Richtlinie, aber der ALLOW-Richtlinie entspricht, wird sie zugelassen. Im Log wird diese Aktion als allowed_as_no_deny_policies_matched_request für die Richtlinie DENY protokolliert. Die Richtlinie, die die Anfrage zugelassen hat, wird ebenfalls protokolliert.
Wenn Sie einen globalen externen Application Load Balancer verwenden, ist
statusDetailsnicht im Log enthalten. Die Richtlinie, die die Anfrage zugelassen hat, wird auch inpoliciesprotokolliert. Sehen Sie sich folgendes Beispiel an:{ httpRequest: {8} insertId: "example-id" jsonPayload: { @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" authzPolicyInfo: { policies: [ 0: { details: "allowed_as_no_deny_policies_matched_request" result: "ALLOWED" } 1: { details: "name: "projects/12345567/locations/global/authzPolicies/allow-authz-policy-test"" result: "ALLOWED" } ] result: "ALLOWED" } backendTargetProjectNumber: "projects/12345567" cacheDecision: [2] remoteIp: "00.100.11.104" } logName: "projects/example-project/logs/requests" receiveTimestamp: "2024-08-28T15:33:56.046651035Z" resource: {2} severity: "WARNING" spanId: "3e1a09a8e5e3e14d" timestamp: "2024-08-28T15:33:55.355042Z" trace: "projects/example-project/traces/8c8b3dbf9a19c85954d0fa2d958ca509" }Wenn Sie einen regionalen internen Application Load Balancer, einen regionalen externen Application Load Balancer oder einen regionenübergreifenden internen Application Load Balancer verwenden, ist das Feld
proxyStatusnicht im Log enthalten. Die Richtlinie, die die Anfrage zugelassen hat, wird auch inpoliciesprotokolliert. Sehen Sie sich folgendes Beispiel an:{ httpRequest: {8} insertId: "example-id" jsonPayload: { @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" authzPolicyInfo: { policies: [ 0: { details: "allowed_as_no_deny_policies_matched_request" result: "ALLOWED" } 1: { details: "name: "projects/12345567/locations/$REGION/authzPolicies/allow-authz-policy-test"" result: "ALLOWED" } ] result: "ALLOWED" } backendTargetProjectNumber: "projects/12345567" cacheDecision: [2] remoteIp: "00.100.11.104" } logName: "projects/example-project/logs/requests" receiveTimestamp: "2024-08-28T15:33:56.046651035Z" resource: {2} severity: "WARNING" spanId: "3e1a09a8e5e3e14d" timestamp: "2024-08-28T15:33:55.355042Z" trace: "projects/example-project/traces/8c8b3dbf9a19c85954d0fa2d958ca509" }