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

Questa pagina descrive come utilizzare le policy di autorizzazione per designare Identity-Aware Proxy (IAP) come motore di autorizzazione personalizzato in una policy 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 la policy 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 l'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. La policy consente ai client con un intervallo di indirizzi IP 10.0.0.0/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.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. Esegui questo comando per abilitare IAP in una regola di forwarding.
gcloud 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.0",
                "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/v1/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 a 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 la configurazione delle autorizzazioni. Per saperne di più, vedi gcloud 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 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 iap web set-iam-policy POLICY_FILE --organization=ORGANIZATION

Configurare l'autorizzazione a livello di cartella

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

Configura l'autorizzazione a livello di progetto

gcloud 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 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 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 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 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 forwarding.
  • 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

Imposta 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 forwarding.