Utilizza i criteri di autorizzazione per delegare l'autorizzazione a IAP e IAM

Questa pagina descrive come utilizzare i criteri di autorizzazione per designare Identity-Aware Proxy (IAP) come motore di autorizzazione personalizzato in un criterio di autorizzazione per i bilanciatori del carico delle applicazioni.

Per delegare l'autorizzazione a IAP e Identity and Access Management (IAM), autorizzi il traffico a una regola di forwarding in base alle identità IAM o degli utenti finali per i bilanciatori del carico gestiti. In questo modo puoi applicare controllo dell'accesso basato su IAP per i tuoi servizi di backend.

Prima di iniziare

Crea il criterio di autorizzazione e abilita IAP

Per creare una policy di autorizzazione, crea un file di policy che definisca la destinazione e le regole, quindi attiva IAP nella regola di forwarding. Puoi scegliere di applicare IAP solo a richieste specifiche definendo le condizioni nella sezione httpRules del file delle norme. Se la sezione httpRules viene omessa, IAP viene applicato a tutte le richieste.

gcloud

  1. Esegui questo comando per preparare un file policy.yaml. Il criterio consente ai client con un intervallo di indirizzi IP di 10.0.0.1/24 di attivare IAP su una regola di forwarding.
$ 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. Esegui questo comando per abilitare IAP in una regola di forwarding.
gcloud beta network-security authz-policies import AUTHZ_POLICY_NAME \
--source=policy.yaml \
--location=LOCATION \
--project=PROJECT_ID

Sostituisci quanto segue:

  • PROJECT_ID: L' Google Cloud ID progetto.
  • LOCATION: la regione in cui si trova la risorsa.
  • FORWARDING_RULE_ID: l'ID della risorsa della regola di forwarding.
  • AUTHZ_POLICY_NAME: il nome della policy di autorizzazione.

API

  1. Esegui questo comando per preparare un file policy.json.
    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. Esegui questo comando per abilitare IAP in una regola di forwarding.

    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"
    

    Sostituisci quanto segue:

    • PROJECT_ID: L' Google Cloud ID progetto.
    • LOCATION: la regione in cui si trova la risorsa.
    • FORWARDING_RULE_ID: l'ID della risorsa della regola di forwarding.
    • AUTHZ_POLICY_NAME: il nome della policy di autorizzazione.

Applica le autorizzazioni alle risorse

Puoi utilizzare l'API IAP per applicare le autorizzazioni IAM alle singole risorse in un progetto protetto da IAP. Le autorizzazioni IAM concesse a un determinato livello si applicano a tutti i livelli sottostanti. Ad esempio, un'autorizzazione concessa a livello di progetto si applica a tutte le Google Cloud risorse del progetto.

Di seguito sono riportati alcuni esempi di comandi per configurare le autorizzazioni. Per ulteriori informazioni, vedi gcloud alpha iap web set-iam-policy.

gcloud

Nei comandi di esempio, sostituisci POLICY_FILE con il percorso di un file in formato YAML che contiene una policy valida. Di seguito è riportato un esempio di file YAML:

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

Aggiorna l'autorizzazione per chi può accedere alla risorsa della regola di forwarding

gcloud alpha iap web set-iam-policy POLICY_FILE [--organization=ORGANIZATION \
--folder=FOLDER --project=/PROJECT_ID \
--resource-type=RESOURCE_TYPE --service=SERVICE]

Configura l'autorizzazione a livello di organizzazione

gcloud alpha iap web set-iam-policy POLICY_FILE --organization=ORGANIZATION

Configurare l'autorizzazione a livello di cartella

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

Configura l'autorizzazione a livello di progetto

gcloud alpha iap web set-iam-policy POLICY_FILE --project=PROJECT_ID --resource-type=iap_web

Configura l'autorizzazione per tutte le regole di forwarding globali in un progetto

gcloud alpha iap web set-iam-policy POLICY_FILE --project=PROJECT_ID --resource-type=forwarding_rule

Configura l'autorizzazione per tutte le regole di forwarding in un progetto in una regione

gcloud alpha iap web set-iam-policy POLICY_FILE --project=PROJECT_ID \
--resource-type=forwarding_rule --region=REGION

Configura l'autorizzazione per una regola di forwarding globale specifica in un progetto

gcloud alpha iap web set-iam-policy POLICY_FILE --project=PROJECT_ID \
--resource-type=forwarding_rule --service=SERVICE

Configura l'autorizzazione per una regola di forwarding specifica in un progetto in una regione

gcloud alpha iap web set-iam-policy POLICY_FILE --project=PROJECT_ID \
--resource-type=forwarding_rule --service=SERVICE --region=REGION

Sostituisci quanto segue:

  • POLICY_FILE: il percorso di un file YAML che contiene una policy valida.
  • ORGANIZATION: l'ID della tua organizzazione.
  • FOLDER: la cartella che contiene l'applicazione.
  • PROJECT_ID: L' Google Cloud ID progetto.
  • RESOURCE_TYPE: il tipo di risorsa IAP. Il tipo di risorsa deve essere app-engine, iap_web, compute, organization o folder.
  • SERVICE: l'ID o il nome della regola di inoltro.
  • REGION: la regione in cui si trova la risorsa.

API

Configura l'autorizzazione a livello di organizzazione

organization/ORGANIZATION

Configurare l'autorizzazione a livello di cartella

folders/FOLDER

Configura l'autorizzazione a livello di progetto

projects/PROJECT_ID

Configura l'autorizzazione per tutte le regole di forwarding globali in un progetto

projects/PROJECT_ID/forwarding_rule

Configura l'autorizzazione per tutte le regole di forwarding in un progetto in una regione

projects/PROJECT_ID/iap_web/forwarding_rule-REGION

Configura l'autorizzazione per una regola di forwarding globale specifica in un progetto

projects/PROJECT_ID/iap_web/forwarding_rule/services/SERVICE

Configura l'autorizzazione per una regola di forwarding specifica in un progetto in una regione

projects/PROJECT_ID/iap_web/forwarding_rule-REGION/services/SERVICE

Impostare il criterio di autorizzazione

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"

Per policy.json, puoi creare il file JSON eseguendo il seguente comando. Aggiorna i valori in base alle esigenze.

cat << EOF > policy.json
{
  "bindings": {
     "members": "user:example@example.com",
     "role": "roles/iap.httpsResourceAccessor",
   }
}
EOF

Sostituisci quanto segue:

  • ORGANIZATION: l'ID della tua organizzazione.
  • FOLDER: la cartella che contiene l'applicazione.
  • PROJECT_ID: L' Google Cloud ID progetto.
  • REGION: la regione in cui si trova la risorsa.
  • SERVICE: l'ID o il nome della regola di inoltro.