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

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

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

  1. Run the following command to prepare a policy.yaml file. The policy allows clients with an IP address range of 10.0.0.1/24 to enable IAP on a forwarding rule.
$ 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
  1. Run the following command to enable IAP on a forwarding rule.
gcloud beta network-security authz-policies import AUTHZ_POLICY_NAME \
--source=policy.yaml \
--location=LOCATION \
--project=PROJECT_ID

Replace the following:

  • PROJECT_ID: The Google Cloud project ID.
  • LOCATION: The region that the resource is located in.
  • FORWARDING_RULE_ID: The ID of the forwarding rule resource.
  • AUTHZ_POLICY_NAME: The name of the authorization policy.

API

  1. Run the following command to prepare a policy.json file.
    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
    
  2. Run the following command to enable IAP on a forwarding rule.

    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"
    

    Replace the following:

    • PROJECT_ID: The Google Cloud project ID.
    • LOCATION: The region that the resource is located in.
    • FORWARDING_RULE_ID: The ID of the forwarding rule resource.
    • AUTHZ_POLICY_NAME: The name of the authorization policy.

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 oder folder 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.