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
- Comprendi i concetti relativi ai criteri di autorizzazione.
- Assicurati che per i servizi di backend delle regole di inoltro non sia attivato l'IAP. 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 forwarding.
gcloud
- 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 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
- 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 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