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
- Comprendere i concetti delle norme 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.
- Abilita l'API Network Services.
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
- Esegui questo comando per preparare un file
policy.yaml. La policy consente ai client con un intervallo di indirizzi IP10.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
EOF
- 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
- 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 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,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
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.