Autorisierungsrichtlinien verwenden, um die Autorisierung an IAP und IAM zu delegieren

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

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

  1. 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
  1. 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

  1. 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
    
  2. 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