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 Traffic zu einer Weiterleitungsregel basierend auf IAM- oder Endnutzeridentitäten für verwaltete Load Balancer. So können Sie die IAP-basierte Zugriffssteuerung für Ihre Back-End-Dienste erzwingen.

Hinweis

Autorisierungsrichtlinie erstellen und IAP aktivieren

Zum Erstellen einer Autorisierungsrichtlinie erstellen Sie eine Richtliniendatei, in der das Ziel und die Regeln definiert sind, und aktivieren 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.0/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.0"
          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 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.0",
                "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/v1/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 IAM-Berechtigungen zuweisen. IAM-Berechtigungen, die auf einer bestimmten Ebene gewährt werden, gelten für alle darunter liegenden Ebenen. Eine auf Projektebene gewährte Berechtigung gilt beispielsweise für alle Ressourcen im Projekt. Google Cloud

Im Folgenden finden Sie einige Beispielbefehle zum Konfigurieren von Berechtigungen. Weitere Informationen finden Sie unter gcloud 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 ist ein Beispiel für eine YAML-Datei:

bindings:
  members: user:example@example.com
  role: roles/iap.httpsResourceAccessor

Berechtigung für den Zugriff auf die Weiterleitungsregelressource aktualisieren

gcloud 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 iap web set-iam-policy POLICY_FILE --organization=ORGANIZATION

Berechtigung auf Ordnerebene konfigurieren

gcloud iap web set-iam-policy POLICY_FILE --folder=FOLDER

Berechtigung auf Projektebene konfigurieren

gcloud 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 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 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 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 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 Weiterleitungsregel-ID oder der Name.
  • REGION: Die Region, in der sich die Ressource befindet.

API

Berechtigung auf Organisationsebene konfigurieren

organization/ORGANIZATION

Berechtigung 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
{
  "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 Weiterleitungsregel-ID oder der Name.