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
Comprendi i concetti relativi alle policy di autorizzazione.
Assicurati che i servizi di backend delle regole di forwarding non abbiano IAP abilitato. Se IAP è abilitato, ricevi un errore quando invii la configurazione.
Crea la policy di autorizzazione e abilita IAP
Per creare una policy di autorizzazione, devi creare un file delle policy che definisca la destinazione e le regole, quindi abilitare IAP sulla regola di forwarding. Puoi scegliere di applicare IAP solo a richieste specifiche definendo le condizioni nella sezione httpRules del file della policy. Se la sezione httpRules viene omessa, IAP viene applicato a tutte le richieste.
gcloud
Esegui il comando seguente per preparare un file
policy.yaml. La policy consente ai client con un intervallo di indirizzi IP di10.0.0.0/24di 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 EOFEsegui questo comando per attivare IAP su 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'ID progetto Google Cloud .
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
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": [ { "from": { "sources": { "ipBlocks": [ { "prefix": "10.0.0.0", "length": 24 } ] } } } ], "customProvider": { "cloudIap": {} } } EOFEsegui questo comando per attivare IAP su 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'ID progetto Google Cloud .
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 risorse Google Cloud 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 formattato in YAML che contiene una policy valida. Di seguito è riportato un file YAML di esempio:
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
Configura 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 la tua applicazione.
PROJECT_ID: l'ID progetto Google Cloud .
RESOURCE_TYPE: il tipo di risorsa IAP. Il tipo di risorsa deve essere
app-engine,iap_web,compute,organizationofolder.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
Configura 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 la policy 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 tue 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 la tua applicazione.
PROJECT_ID: l'ID progetto Google Cloud .
REGION: la regione in cui si trova la risorsa.
SERVICE: l'ID o il nome della regola di forwarding.