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-Backends einrichten.
Informationen zum Erstellen eines regionalen internen Application Load Balancers finden Sie unter Regionalen internen Application Load Balancer mit VM-Instanzgruppen-Backends einrichten.
- Informationen zum Erstellen eines regionenübergreifenden internen Application Load Balancers finden Sie unter Regionenübergreifenden internen Application Load Balancer mit VM-Instanzgruppen-Backends 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 Balancern angehängt sind.
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
In diesem Abschnitt finden Sie 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, die Anfragen aus bestimmten IP-Adressbereichen ablehnt.
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 gcloud network-security authz-policies import-Befehl 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 der RegionGoogle Cloud 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 .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 gcloud network-security authz-policies import-Befehl importieren.
gcloud network-security authz-policies import my-authz-policy-deny \ --source=authz-policy-deny.yaml \ --location=LOCATION
Anfragen basierend auf Clientzertifikat-Principals ablehnen
In diesem Abschnitt finden Sie ein Beispiel für eine Autorisierungsrichtlinie, die Anfragen basierend auf Clientzertifikat-Hauptkonten ablehnt.
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, diewww.example.comin den DNS-Namen-SANs ihres Clientzertifikats haben, 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 gcloud network-security authz-policies import-Befehl 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 der RegionGoogle Cloud erstellt. Die Richtlinie verweigert Clients, diewww.example.comin den SANs des DNS-Namens ihres Clientzertifikats haben, 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/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 gcloud network-security authz-policies import-Befehl importieren.
gcloud 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, führen Sie die folgenden Schritte aus, 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 gcloud network-security authz-policies import-Befehl importieren.
gcloud network-security authz-policies import my-authz-policy-allow \ --source=authz-policy-allow.yaml \ --location=global
Regional
Wenn Sie einen regionalen externen Application Load Balancer oder einen regionalen internen Application Load Balancer verwenden, führen Sie die folgenden Schritte aus, 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 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/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 gcloud network-security authz-policies import-Befehl importieren.
gcloud 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 getan haben:
ein Dienstkonto erstellt und an eine Google Cloud -Ressource angehängt haben.
ein sicheres Tag erstellt und es als Schlüssel/Wert-Paar an eine Google Cloud -Ressource angehängt haben. Wenn Sie ein Tag erstellen, setzen Sie das Flag
--purposeaufGCE_FIREWALL. 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.comzum Erreichen des Pfads/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 gcloud network-security authz-policies import-Befehl importieren.
gcloud 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 Balancers 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 gcloud network-security authz-policies import-Befehl importieren.
gcloud 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 Diensterweiterungen an die folgenden Dienste delegiert:
- Nutzerverwalteter Dienst
- Von Google verwalteter Dienst
Autorisierungsentscheidung an einen vom Nutzer verwalteten Dienst delegieren
Sie können eine Autorisierungsrichtlinie konfigurieren, um die Autorisierungsentscheidung über Diensterweiterungen, insbesondere eine Autorisierungserweiterung, an einen nutzerverwalteten Dienst zu delegieren.
Bei globalen und regionenübergreifenden Load Balancern kann die Autorisierungserweiterung auf einem nutzerverwalteten Google Cloud -Backend-Dienst ausgeführt werden.
Bei regionalen Load Balancern kann die Autorisierungserweiterung sowohl auf einem nutzerverwalteten Google Cloud -Backend-Dienst als auch auf einem FQDN-basierten Dienst ausgeführt werden.
In diesem Beispiel wird davon ausgegangen, dass Sie einen nutzerverwalteten Google Cloud -Backend-Dienst mit dem Namen authz-service erstellt haben, der auch als Callout-Backend-Dienst bezeichnet wird.
Weitere Informationen zum Erstellen eines solchen Dienstes finden Sie unter Nutzerverwalteten 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 Protokoll ext_authz 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, führen Sie die folgenden Schritte aus, um die Autorisierungsentscheidung an einen nutzerverwalteten 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 der 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 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, führen Sie die folgenden Schritte aus, 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:- ein Ressourcen-URI eines regionalen Backend-Dienstes im Format
https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/backendServices/authz-service. - Ein voll qualifizierter Domainname (z. B.
mycustomauthz.extension.net), der von Cloud DNS aufgelöst werden kann.
- ein Ressourcen-URI eines regionalen Backend-Dienstes im Format
Erstellen Sie die Autorisierungserweiterung, indem Sie die YAML-Datei der 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 Backend-Dienst für den Callout 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 für die 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=LOCATIONErsetzen Sie LOCATION durch die Google Cloud-Region, 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 dieser Beispielkonfiguration verweist die Autorisierungsrichtlinie auf eine Autorisierungserweiterung, die wiederum auf Model Armor verweist.
Wenn Sie einen regionalen externen Application Load Balancer oder einen regionalen internen Application Load Balancer verwenden, führen Sie die folgenden Schritte aus, um die Autorisierungsentscheidung an Model Armor zu delegieren.
Regional
Definieren Sie die Autorisierungserweiterung in einer YAML-Datei. Die Autorisierungserweiterung verweist auf Anfrage- und Antwortvorlagen von Model Armor.
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 der Autorisierungserweiterung mit dem Befehl
gcloud service-extensions authz-extensions importimportieren.gcloud 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 für die 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=LOCATION
Ersetzen Sie LOCATION durch die Google Cloud-Region, 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 gemäß 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 Application Load Balancer oder einen regionalen internen Application Load Balancer verwenden, führen Sie die folgenden Schritte aus, 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 der 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 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 für die 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=LOCATIONErsetzen Sie LOCATION durch die Google Cloud-Region, in der der Load Balancer konfiguriert ist.
Logs für Autorisierungsrichtlinien in Cloud Logging verstehen
In den folgenden Abschnitten erfahren Sie, wie Autorisierungsrichtlinien protokolliert werden, wenn eine Anfrage zugelassen oder abgelehnt wird.
Die Anfrage entspricht weder der ALLOW- noch der DENY-Richtlinie
Wenn eine Anfrage weder mit den ALLOW- noch mit den DENY-Richtlinien übereinstimmt, wird die Anfrage von der DENY-Richtlinie zugelassen und als allowed_as_no_deny_policies_matched_request protokolliert. Die ALLOW-Richtlinie lehnt die Anfrage dagegen 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 „DENY“
Wenn eine Anfrage mit der DENY-Richtlinie übereinstimmt, 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 mit der DENY-Richtlinie, aber mit der ALLOW-Richtlinie übereinstimmt, wird die Anfrage zugelassen. Im Protokoll 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 im Log kein
statusDetailsenthalten. Die Richtlinie, die die Anfrage zugelassen hat, wird ebenfalls 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
proxyStatusim Log nicht vorhanden. Die Richtlinie, die die Anfrage zugelassen hat, wird ebenfalls 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" }