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 gli Application Load Balancer.

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 attiva IAP

Per creare un criterio di autorizzazione, devi creare un file di criteri che definisce il target e le regole, quindi attivare IAP nella regola di forwarding.

gcloud

  1. Esegui il comando seguente per preparare un file policy.yaml.
$ 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. Esegui il comando seguente per abilitare l'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'ID progetto Google Cloud.
  • LOCATION: la regione in cui si trova la risorsa.
  • FORWARDING_RULE_ID: l'ID della risorsa regola di forwarding.
  • AUTHZ_POLICY_NAME: il nome del criterio di autorizzazione.

API

  1. Esegui il comando seguente 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": [],
    "customProvider": {
    "cloudIap": {}
    }
    }
    EOF
    
  2. Esegui il comando seguente per abilitare l'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 @settings.json \
    "https://networksecurity.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/authzPolicies"
    

    Sostituisci quanto segue:

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

Applicare le autorizzazioni alle risorse

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

Di seguito sono riportati alcuni esempi di comandi per la configurazione delle autorizzazioni. Per ulteriori informazioni, consulta gcloud alpha iap web set-iam-policy.

gcloud

Nei comandi di esempio, sostituisci POLICY_FILE con il percorso di un file in formato YAML contenente un criterio valido. Di seguito è riportato un esempio di file YAML:

policy:
  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]

Configurare 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

Configurare l'autorizzazione a livello di progetto

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

Configurare l'autorizzazione per tutte le regole di inoltro globali in un progetto

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

Configurare l'autorizzazione per tutte le regole di inoltro in un progetto in una regione

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

Configurare 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

Configurare 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

API

Configurare l'autorizzazione a livello di organizzazione

organization/ORGANIZATION

Configurare l'autorizzazione a livello di cartella

folders/FOLDER

Configurare l'autorizzazione a livello di progetto

projects/PROJECT_ID

Configurare l'autorizzazione per tutte le regole di inoltro globali in un progetto

projects/PROJECT_ID/forwarding_rule

Configurare l'autorizzazione per tutte le regole di inoltro in un progetto in una regione

projects/PROJECT_ID/iap_web/forwarding_rule-REGION

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

projects/PROJECT_ID/iap_web/forwarding_rule/services/SERVICE

Configurare 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
{
  "policy": {
      "bindings": {
            "members": "user:example@example.com",
            "role": "roles/iap.httpsResourceAccessor",
        }
    }
}
EOF