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 verschiedener Arten von Autorisierungsrichtlinien, die an die Weiterleitungsregel eines Load-Balancers angehängt werden.
Autorisierungsrichtlinie zum Ablehnen von Anfragen
In diesem Abschnitt finden Sie ein Beispiel für eine Autorisierungsrichtlinie, die Anfragen basierend auf bestimmten Anfrageattributen ablehnt.
Global
Wenn Sie einen globalen externen Application Load Balancer verwenden, gehen Sie so vor, um eine Autorisierungsrichtlinie zu erstellen und zu importieren, die Anfragen basierend auf IP-Adressbereichen ablehnt:
Erstellen Sie eine YAML-Datei für die Autorisierungsrichtlinie, um bestimmte Anfragen abzulehnen.
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: Ihr Load-Balancing-Schema. Legen Sie für globale externe Application Load Balancer das Schema aufEXTERNAL_MANAGEDfest.PROJECT_ID: die ID Ihres Projekts in Google Cloud .LB_FORWARDING_RULE: der Name der Weiterleitungsregel des Load-Balancers.
Erstellen Sie eine Autorisierungsrichtlinie und importieren Sie die YAML-Datei.
Mit dem folgenden Beispielbefehl importieren Sie die zuvor erstellte Richtliniendatei und erstellen eine Autorisierungsrichtlinie:
gcloud network-security authz-policies import my-authz-policy-deny \ --source=authz-policy-deny.yaml \ --location=global
Regionsübergreifend
Wenn Sie einen regionenübergreifenden internen Application Load Balancer verwenden, folgen Sie dieser Anleitung, um eine Autorisierungsrichtlinie zu erstellen und zu importieren, mit der Anfragen basierend auf Clientzertifikatsprinzipalen abgelehnt werden.
Erstellen Sie eine YAML-Datei für die Autorisierungsrichtlinie, um bestimmte Anfragen abzulehnen.
Im folgenden Beispiel wird eine
authz-policy-deny.yaml-Datei für die WeiterleitungsregelLB_FORWARDING_RULEam Standortglobalerstellt. Die Richtlinie verweigert den Zugriff auf den/api/payments-URL-Pfad für Clients, diewww.example.comin ihren SANs für den DNS-Namen 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/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: Ihr Load-Balancing-Schema. 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 eine Autorisierungsrichtlinie und importieren Sie die YAML-Datei.
Mit dem folgenden Beispielbefehl importieren Sie die zuvor erstellte Richtliniendatei und erstellen eine Autorisierungsrichtlinie:
gcloud network-security authz-policies import my-authz-policy-deny \ --source=authz-policy-deny.yaml \ --location=global
Regional
Wenn Sie einen regionalen externen Application Load Balancer oder einen regionalen internen Application Load Balancer verwenden, gehen Sie so vor, um eine Autorisierungsrichtlinie zu erstellen und zu importieren, die Anfragen basierend auf Clientzertifikat-Principals ablehnt.
Erstellen Sie eine YAML-Datei für die Autorisierungsrichtlinie, um bestimmte Anfragen abzulehnen.
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: Ihr 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 eine Autorisierungsrichtlinie und importieren Sie die YAML-Datei.
Mit dem folgenden Beispielbefehl importieren Sie die zuvor erstellte Richtliniendatei und erstellen eine Autorisierungsrichtlinie in der Region
LOCATION: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 und zu importieren:
Erstellen Sie eine YAML-Datei für die Autorisierungsrichtlinie, um bestimmte Anfragen zuzulassen.
Im folgenden Beispiel wird eine
authz-policy-allow.yaml-Datei für die WeiterleitungsregelLB_FORWARDING_RULEam Standortglobalerstellt. 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/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: Ihr 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 eine Autorisierungsrichtlinie und importieren Sie die YAML-Datei.
Mit dem folgenden Beispielbefehl importieren Sie die zuvor erstellte Richtliniendatei und erstellen eine Autorisierungsrichtlinie:
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:
Erstellen Sie eine YAML-Datei für die Autorisierungsrichtlinie, um bestimmte Anfragen zuzulassen.
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: Ihr Load-Balancing-Schema. Wenn Sie einen regionalen externen Application Load Balancer verwenden, legen Sie das Schema aufEXTERNAL_MANAGEDfest. Wenn Sie einen regionalen internen Application Load Balancer verwenden, legen Sie 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 eine Autorisierungsrichtlinie und importieren Sie die YAML-Datei.
Mit dem folgenden Beispielbefehl importieren Sie die zuvor erstellte Richtliniendatei und erstellen eine Autorisierungsrichtlinie in der Region
LOCATION: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
Erstellen Sie eine YAML-Datei für die Autorisierungsrichtlinie, um bestimmte Anfragen abzulehnen.
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: Ihr Load-Balancing-Schema. Legen Sie für einen regionalen internen 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 eine Autorisierungsrichtlinie und importieren Sie die YAML-Datei.
Mit dem folgenden Beispielbefehl importieren Sie die zuvor erstellte Richtliniendatei und erstellen eine Autorisierungsrichtlinie in der angegebenen Region Google Cloud .
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
Erstellen Sie eine YAML-Datei für die Autorisierungsrichtlinie, um bestimmte Anfragen zuzulassen.
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 einen regionalen internen 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 eine Autorisierungsrichtlinie und importieren Sie die YAML-Datei.
Mit dem folgenden Beispielbefehl importieren Sie die zuvor erstellte Richtliniendatei und erstellen eine Autorisierungsrichtlinie in der angegebenen RegionGoogle Cloud :
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: Ihr 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-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 regionalen Backend-Dienst-Ressourcen-URI 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 regionalen Backend-Dienst-Ressourcen-URI 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 Anfragevorlage
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: Ihr 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 EOFSie können IAP auch so konfigurieren, dass es im Probelaufmodus ausgeführt wird. So können Sie eine Autorisierungsrichtlinie mit Live-Produktionstraffic testen, ohne sie zu erzwingen. So können Sie Ihre Richtlinie überprüfen und das Risiko minimieren, dass der Traffic aufgrund von Konfigurationsfehlern unterbrochen wird.
cat >authz-extension.yaml <<EOF name: my-authz-ext loadBalancingScheme: LB_SCHEME service: iap.googleapis.com failOpen: false metadata:' iamEnforcementMode: DRY_RUN ' 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 der ALLOW- noch der DENY-Richtlinie entspricht, wird sie von der DENY-Richtlinie zugelassen und als allowed_as_no_deny_policies_matched_request protokolliert. Die ALLOW-Richtlinie lehnt 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 DENY-Richtlinie
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 im Log kein
proxyStatus-Feld vorhanden. 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" }