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
- Comprendere i concetti delle norme di autorizzazione.
- Assicurati che i servizi di backend delle regole di forwarding non abbiano IAP abilitato. Se gli acquisti in-app sono attivati, ricevi un errore quando invii la configurazione.
- Abilita l'API Network Services.
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
- Esegui questo comando per preparare un file
policy.yaml
. Il criterio consente ai client con un intervallo di indirizzi IP di10.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
- 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
- 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
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
ofolder
. - 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.