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 inoltro in base alle identità IAM o degli utenti finali per i bilanciatori di carico gestiti. In questo modo, puoi applicare il controllo dell'accesso basato su IAP per i tuoi servizi di backend.
Prima di iniziare
- Comprendi i concetti relativi ai criteri di autorizzazione.
- Assicurati che i servizi di backend delle regole di inoltro non abbiano l'IAP abilitato. Se l'IAP è attivato, ricevi un messaggio di errore quando invii la configurazione.
- Attiva l'API Network Services.
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 inoltro.
- 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
- Esegui il comando seguente per abilitare l'IAP in una regola di inoltro.
gcloud beta network-security authz-policies importAUTHZ_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 regola di inoltro.
- AUTHZ_POLICY_NAME: il nome del criterio di autorizzazione.
- 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 Esegui il comando seguente per abilitare l'IAP in una regola di inoltro.
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 regola di inoltro.
- 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 Google Cloud risorse 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
.
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:
bindings:
members: user:example@example.com
role: roles/iap.httpsResourceAccessor
Aggiorna l'autorizzazione per chi può accedere alla risorsa della regola di inoltro
gcloud alpha iap web set-iam-policyPOLICY_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-policyPOLICY_FILE --organization=ORGANIZATION
Configurare l'autorizzazione a livello di cartella
gcloud alpha iap web set-iam-policyPOLICY_FILE --folder=FOLDER
Configurare l'autorizzazione a livello di progetto
gcloud alpha iap web set-iam-policyPOLICY_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-policyPOLICY_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-policyPOLICY_FILE --project=PROJECT_ID \ --resource-type=forwarding_rule --region=REGION
Configurare l'autorizzazione per una regola di inoltro globale specifica in un progetto
gcloud alpha iap web set-iam-policyPOLICY_FILE --project=PROJECT_ID \ --resource-type=forwarding_rule --service=SERVICE
Configurare l'autorizzazione per una regola di inoltro specifica in un progetto in una regione
gcloud alpha iap web set-iam-policyPOLICY_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 un criterio valido.
- ORGANIZATION: l'ID della tua organizzazione.
- FOLDER: la cartella contenente l'applicazione.
- PROJECT_ID: l'ID Google Cloud 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.
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 inoltro globale specifica in un progetto
projects/PROJECT_ID /iap_web/forwarding_rule/services/SERVICE
Configurare l'autorizzazione per una regola di inoltro 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 contenente l'applicazione.
- PROJECT_ID: l'ID Google Cloud progetto.
- REGION: la regione in cui si trova la risorsa.
- SERVICE: l'ID o il nome della regola di inoltro.