Auf dieser Seite wird beschrieben, wie Sie mit Autorisierungsrichtlinien Identity-Aware Proxy (IAP) als benutzerdefinierte Autorisierungs-Engine in einer Autorisierungsrichtlinie für Application Load Balancer festlegen.
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 eine IAP-basierte Zugriffssteuerung für Ihre Backend-Dienste erzwingen.
Hinweise
- Informationen zu den Konzepten von Autorisierungsrichtlinien
- Achten Sie darauf, dass für die Back-End-Dienste der Weiterleitungsregeln kein IAP aktiviert ist. Wenn IAP aktiviert ist, erhalten Sie beim Einreichen Ihrer 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 werden, und aktivieren Sie dann IAP für die Weiterleitungsregel.
gcloud
- Führen Sie den folgenden Befehl aus, um eine
policy.yaml
-Datei vorzubereiten.
$ cat << EOF > policy.yaml
action: CUSTOM
description: authz policy with Cloud IAP
name: AUTHZ_POLICY_NAME
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": [], "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 @settings.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 IAM-Berechtigungen zuweisen. IAM-Berechtigungen auf einer bestimmten Ebene gelten für alle Ebenen, die dieser untergeordnet sind. Beispielsweise gilt eine auf Projektebene gewährte 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 Datei im YAML-Format, die eine gültige Richtlinie enthält. Hier ist eine Beispiel-YAML-Datei:
policy:
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
Berechtigung auf Projektebene konfigurieren
gcloud alpha iap web set-iam-policy POLICY_FILE --project=PROJECT_ID --resource-type=iap_web
Berechtigung 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
Berechtigung 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
API
Berechtigung auf Organisationsebene konfigurieren
organization/ORGANIZATION
Berechtigungen auf Ordnerebene konfigurieren
folders/FOLDER
Berechtigung auf Projektebene konfigurieren
projects/PROJECT_ID
Berechtigung für alle globalen Weiterleitungsregeln in einem Projekt konfigurieren
projects/PROJECT_ID/forwarding_rule
Berechtigung 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 { "policy": { "bindings": { "members": "user:example@example.com", "role": "roles/iap.httpsResourceAccessor", } } } EOF