Auf dieser Seite wird beschrieben, wie Sie Autorisierungsrichtlinien verwenden, um Identity-Aware Proxy (IAP) als benutzerdefinierte Autorisierungs-Engine in einer Autorisierungsrichtlinie für Application Load Balancer festzulegen.
Wenn Sie die Autorisierung an IAP und Identity and Access Management (IAM) delegieren möchten, autorisieren Sie den Traffic für eine Weiterleitungsregel basierend auf IAM- oder Endnutzeridentitäten für verwaltete Load Balancer. So können Sie die IAP-basierte Zugriffssteuerung für Ihre Backend-Dienste erzwingen.
Hinweise
- Autorisierungsrichtlinien – Konzepte
- Achten Sie darauf, dass für die Back-End-Dienste der Weiterleitungsregeln IAP nicht aktiviert ist. Wenn IAP aktiviert ist, erhalten Sie beim Einreichen der Konfiguration eine Fehlermeldung.
- Aktivieren Sie die Network Services API.
Autorisierungsrichtlinie erstellen und IAP aktivieren
Wenn Sie eine Autorisierungsrichtlinie erstellen möchten, erstellen Sie eine Richtliniendatei, in der das Ziel und die Regeln definiert sind, und aktivieren Sie dann IAP für die Weiterleitungsregel. Sie können IAP nur auf bestimmte Anfragen anwenden, indem Sie im Abschnitt httpRules
Ihrer Richtliniendatei Bedingungen definieren. Wenn der Abschnitt httpRules
weggelassen wird, wird IAP für alle Anfragen erzwungen.
gcloud
- Führen Sie den folgenden Befehl aus, um eine
policy.yaml
-Datei vorzubereiten. Die Richtlinie erlaubt es Clients mit einem IP-Adressbereich von10.0.0.1/24
, IAP für eine Weiterleitungsregel zu aktivieren.
$ cat << EOF > policy.yaml
action: CUSTOM
description: authz policy with Cloud IAP
name: AUTHZ_POLICY_NAME
httpRules:
- from:
sources:
- ipBlocks:
- prefix: "10.0.0.1"
length: 24
customProvider:
cloudIap: {}
target:
loadBalancingScheme: EXTERNAL_MANAGED
resources:
- https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/FORWARDING_RULE_ID
EOF
- Führen Sie den folgenden Befehl aus, um IAP für eine Weiterleitungsregel zu aktivieren.
gcloud beta network-security authz-policies import AUTHZ_POLICY_NAME \ --source=policy.yaml \ --location=LOCATION \ --project=PROJECT_ID
Ersetzen Sie Folgendes:
- PROJECT_ID: Die Google Cloud -Projekt-ID.
- LOCATION: Die Region, in der sich die Ressource befindet.
- FORWARDING_RULE_ID: Die ID der Weiterleitungsregelressource.
- AUTHZ_POLICY_NAME: Der Name der Autorisierungsrichtlinie.
API
- Führen Sie den folgenden Befehl aus, um eine
policy.json
-Datei vorzubereiten.cat << EOF > policy.json { "name": "AUTHZ_POLICY_NAME", "target": { "loadBalancingScheme": "INTERNAL_MANAGED", "resources": [ "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/FORWARDING_RULE_ID" ], }, "action": "CUSTOM", "httpRules": [ { "from": { "sources": { "ipBlocks": [ { "prefix": "10.0.0.1", "length": 24 } ] } } } ], "customProvider": { "cloudIap": {} } } EOF
Führen Sie den folgenden Befehl aus, um IAP für eine Weiterleitungsregel zu aktivieren.
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d @policy.json \ "https://networksecurity.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/authzPolicies"
Ersetzen Sie Folgendes:
- PROJECT_ID: Die Google Cloud -Projekt-ID.
- LOCATION: Die Region, in der sich die Ressource befindet.
- FORWARDING_RULE_ID: Die ID der Weiterleitungsregelressource.
- AUTHZ_POLICY_NAME: Der Name der Autorisierungsrichtlinie.
Berechtigungen auf Ressourcen anwenden
Mit der IAP API können Sie einzelnen Ressourcen in einem IAP-gesicherten Projekt Cloud IAM-Berechtigungen zuweisen. IAM-Berechtigungen auf einer bestimmten Ebene sind für alle Ebenen gültig, die dieser untergeordnet sind. Beispielsweise gilt eine auf Projektebene erteilte Berechtigung für alle Google Cloud -Ressourcen im Projekt.
Im Folgenden finden Sie einige Beispielbefehle zum Konfigurieren von Berechtigungen. Weitere Informationen finden Sie unter gcloud alpha iap web set-iam-policy
.
gcloud
Ersetzen Sie in den Beispielbefehlen POLICY_FILE durch den Pfad zu einer YAML-Datei, die eine gültige Richtlinie enthält. Hier sehen Sie eine Beispiel-YAML-Datei:
bindings:
members: user:example@example.com
role: roles/iap.httpsResourceAccessor
Berechtigung für den Zugriff auf die Weiterleitungsregelressource aktualisieren
gcloud alpha iap web set-iam-policy POLICY_FILE [--organization=ORGANIZATION \ --folder=FOLDER --project=PROJECT_ID \ --resource-type=RESOURCE_TYPE --service=SERVICE]
Berechtigung auf Organisationsebene konfigurieren
gcloud alpha iap web set-iam-policy POLICY_FILE --organization=ORGANIZATION
Berechtigungen auf Ordnerebene konfigurieren
gcloud alpha iap web set-iam-policy POLICY_FILE --folder=FOLDER
Berechtigungen auf Projektebene konfigurieren
gcloud alpha iap web set-iam-policy POLICY_FILE --project=PROJECT_ID --resource-type=iap_web
Berechtigungen für alle globalen Weiterleitungsregeln in einem Projekt konfigurieren
gcloud alpha iap web set-iam-policy POLICY_FILE --project=PROJECT_ID --resource-type=forwarding_rule
Berechtigungen für alle Weiterleitungsregeln in einem Projekt in einer Region konfigurieren
gcloud alpha iap web set-iam-policy POLICY_FILE --project=PROJECT_ID \ --resource-type=forwarding_rule --region=REGION
Berechtigung für eine bestimmte globale Weiterleitungsregel in einem Projekt konfigurieren
gcloud alpha iap web set-iam-policy POLICY_FILE --project=PROJECT_ID \ --resource-type=forwarding_rule --service=SERVICE
Berechtigung für eine bestimmte Weiterleitungsregel in einem Projekt in einer Region konfigurieren
gcloud alpha iap web set-iam-policy POLICY_FILE --project=PROJECT_ID \ --resource-type=forwarding_rule --service=SERVICE --region=REGION
Ersetzen Sie Folgendes:
- POLICY_FILE: Der Pfad zu einer YAML-Datei, die eine gültige Richtlinie enthält.
- ORGANIZATION: Die ID Ihrer Organisation.
- FOLDER: Der Ordner, der Ihre Anwendung enthält.
- PROJECT_ID: Die Google Cloud Projekt-ID.
- RESOURCE_TYPE: Der IAP-Ressourcentyp. Der Ressourcentyp muss
app-engine
,iap_web
,compute
,organization
oderfolder
sein. - SERVICE: Die ID oder der Name der Weiterleitungsregel.
- REGION: Die Region, in der sich die Ressource befindet.
API
Berechtigung auf Organisationsebene konfigurieren
organization/ORGANIZATION
Berechtigungen auf Ordnerebene konfigurieren
folders/FOLDER
Berechtigungen auf Projektebene konfigurieren
projects/PROJECT_ID
Berechtigungen für alle globalen Weiterleitungsregeln in einem Projekt konfigurieren
projects/PROJECT_ID/forwarding_rule
Berechtigungen für alle Weiterleitungsregeln in einem Projekt in einer Region konfigurieren
projects/PROJECT_ID/iap_web/forwarding_rule-REGION
Berechtigung für eine bestimmte globale Weiterleitungsregel in einem Projekt konfigurieren
projects/PROJECT_ID/iap_web/forwarding_rule/services/SERVICE
Berechtigung für eine bestimmte Weiterleitungsregel in einem Projekt in einer Region konfigurieren
projects/PROJECT_ID/iap_web/forwarding_rule-REGION/services/SERVICE
Autorisierungsrichtlinie festlegen
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d @policy.json \ "https://iap.googleapis.com/v1/RESOURCE_NAME:setIamPolicy"
Für policy.json
können Sie die JSON-Datei mit dem folgenden Befehl erstellen. Aktualisieren Sie die Werte nach Bedarf.
cat << EOF > policy.json { "bindings": { "members": "user:example@example.com", "role": "roles/iap.httpsResourceAccessor", } } EOF
Ersetzen Sie Folgendes:
- ORGANIZATION: Die ID Ihrer Organisation.
- FOLDER: Der Ordner, der Ihre Anwendung enthält.
- PROJECT_ID: Die Google Cloud Projekt-ID.
- REGION: Die Region, in der sich die Ressource befindet.
- SERVICE: Die ID oder der Name der Weiterleitungsregel.