Gestione dell'accesso alle risorse protette con IAP

Questa pagina descrive come gestire l'accesso individuale o di gruppo alle risorse protette da Identity-Aware Proxy (IAP) a livello di risorsa.

Panoramica

IAP ti consente di configurare i criteri IAP per le risorse individuali e Cloud Run in un progetto Google Cloud. Più app all'interno di un progetto possono avere criteri di accesso diversi. Sono inclusi i progetti con app Compute Engine, Google Kubernetes Engine e App Engine. Per le app App Engine, a singole versioni e servizi possono essere applicati criteri di accesso diversi.

Per gestire l'accesso a livello di progetto e superiore, utilizza la pagina di amministrazione IAM. Gli elenchi di utenti che hanno accesso (le "entità") a livello di progetto si applicano a tutte le risorse protette con IAP nel progetto.

Prima di iniziare

Prima di iniziare, ti serviranno:

  • Una risorsa protetta con IAP a cui vuoi aggiungere l'accesso individuale o di gruppo.
  • Nomi di utenti o gruppi per cui vuoi aggiungere l'accesso.

Attivare e disattivare gli acquisti in-app

Per attivare e disattivare IAP, sono necessarie alcune autorizzazioni. La tabella seguente mostra l'autorizzazione necessaria per ogni tipo di app.

Tipo di app Autorizzazione richiesta
App Engine appengine.applications.update
Compute Engine, Google Kubernetes Engine o Cloud Run compute.backendServices.update

Queste autorizzazioni vengono concesse da ruoli come Editor del progetto, Amministratore App Engine e Amministratore rete Compute. Sebbene questi ruoli consentano di attivare e disattivare l'IAP, non dispongono delle autorizzazioni necessarie per modificare le policy di accesso.

Inoltre, l'attivazione IAP con la console Google Cloud potrebbe richiedere anche le autorizzazioni clientauthconfig.clients.create e clientauthconfig.clients.getWithSecret. Queste autorizzazioni vengono concesse dal ruolo Editor del progetto.

Per scoprire di più sulla concessione dei ruoli, consulta Concedere, modificare e revocare l'accesso.

Gestione dell'accesso nella console Google Cloud

Per controllare l'accesso a una risorsa protetta da IAP con la console Google Cloud, segui la procedura per aggiungere o rimuovere l'accesso.

Aggiungi accesso

  1. Vai alla pagina Identity-Aware Proxy.
    Vai alla pagina Identity-Aware Proxy

  2. Seleziona la risorsa che vuoi proteggere con IAP. Le seguenti selezioni di risorse proteggono un gruppo di risorse impostato:

    • Tutti i servizi web: tutte le risorse del progetto verranno protette. Tieni presente che non è la stessa cosa che concedere l'accesso a livello di progetto con la pagina di amministrazione IAM. Un utente a cui è stato concesso il ruolo Amministratore dei criteri IAP a livello di risorsa Tutti i servizi web avrà autorizzazioni solo per i criteri IAP.

    • Servizi di backend: tutti i servizi di backend verranno protetti.

  3. Nel riquadro delle informazioni a destra, aggiungi gli indirizzi email dei gruppi o delle persone a cui vuoi concedere un ruolo di Identity and Access Management (IAM) per la risorsa.

  4. Applica i ruoli dei criteri di accesso all'entità selezionandoli tra i seguenti nel menu a discesa Seleziona un ruolo:

    • Proprietario: concede lo stesso accesso di IAP Policy Admin. Utilizza invece il ruolo Amministratore criteri IAP. Questo ruolo consente solo di modificare i criteri e non concede l'accesso all'app.

    • Amministratore criteri IAP: concede i diritti di amministratore sui criteri IAP.

    • Utente applicazione web con protezione IAP: concede l'accesso all'app e ad altre risorse HTTPS che utilizzano IAP.

    • Revisore della sicurezza: concede l'autorizzazione per visualizzare e controllare i criteri IAP.

  5. Al termine dell'aggiunta degli indirizzi email e dell'impostazione dei ruoli, fai clic su Aggiungi.

Rimuovi accesso

  1. Vai alla pagina Identity-Aware Proxy.
    Vai alla pagina Identity-Aware Proxy
  2. Seleziona la risorsa protetta con IAP.
  3. Nel riquadro Informazioni a destra, seleziona la sezione corrispondente al ruolo che vuoi rimuovere da un principale.
  4. Nella sezione espansa, fai clic su Rimuovi accanto al nome di ogni utente o gruppo per cui vuoi rimuovere il ruolo.
  5. Nella finestra di dialogo Rimuovi principale visualizzata, fai clic su Rimuovi.

Gestione dell'accesso con l'API

IAM fornisce un insieme standard di metodi per creare e gestire i criteri di controllo dell'accesso dell'accesso alle risorse Google Cloud.

Risorse e autorizzazioni

L'API IAP ti consente di applicare le autorizzazioni IAM alle singole risorse di un progetto protetto con 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. L'accesso a livello di progetto e superiore viene gestito nella pagina di amministrazione IAM, ma viene visualizzato nella pagina di amministrazione IAP.

Gli utenti devono disporre di determinate autorizzazioni per accedere a un'app protetta da IAP. Per concedere queste autorizzazioni, gli amministratori possono utilizzare un'API per aggiornare i criteri IAM. L'autorizzazione iap.webServiceVersions.accessViaIAP concede all'utente l'accesso a un'app. Se utilizzi IAP per controllare l'accesso ai servizi amministrativi come SSH e RDP, gli utenti avranno bisogno dell'autorizzazione iap.webServiceVersions.accessViaIAP.iap.tunnelInstances.accessViaIAP

Ogni risorsa IAP ha le proprie autorizzazioni getIamPolicy e setIamPolicy che consentono di gestire i criteri di accesso per la risorsa e le relative risorse figlio.

Per chiamare l'API IAM, crea una chiamata con un percorso URL a una risorsa. Di seguito è riportato un esempio di chiamata che recupera il criterio IAM per una versione del servizio app App Engine.

https://iap.googleapis.com/v1/projects/PROJECT_NUMBER/iap_web/
appengine-APP_ID/services/SERVICE_ID/versions/VERSION_ID:getIamPolicy

La tabella seguente elenca i tipi di risorse supportati, nonché le autorizzazioni necessarie per chiamare l'API IAM.

Tipo di risorsa Autorizzazioni
Tutte le app web protette da IAP nel progetto
Corrisponde alla casella di controllo Tutti i servizi web nella pagina di amministrazione di IAP.

Percorso
https://iap.googleapis.com/v1/projects/PROJECT_NUMBER/iap_web
iap.web.getIamPolicy

iap.web.setIamPolicy
Tutti i servizi di backend del progetto
Corrisponde alla casella di controllo Servizio di backend nella pagina di amministrazione di IAP.

Percorsi
Ambito globale:
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/compute

Ambito regionale:
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/compute-REGION_NAME
iap.webTypes.getIamPolicy

iap.webTypes.setIamPolicy
Ogni regola di forwarding nel progetto
Autorizzazioni per tutte le regole di inoltro nel progetto.

Percorsi
Ambito globale:
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/forwarding_rule

Ambito regionale:
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/forwarding_rule-REGION_NAME
iap.webTypes.getIamPolicy

iap.webTypes.setIamPolicy
Un'app App Engine
È la stessa casella di controllo App App Engine nella pagina di amministrazione di IAP.

Percorso
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/appengine-APP_ID
iap.webTypes.getIamPolicy

iap.webTypes.setIamPolicy
Un servizio di backend di Compute Engine
Il percorso del servizio di backend può specificare l'ID del servizio di backend o il nome del servizio di backend.

Percorsi
Ambito globale:
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/compute/services/
BACKEND_SERVICE_ID or BACKEND_SERVICE_NAME

Ambito regionale:
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/compute-REGION_NAME/
services/BACKEND_SERVICE_ID or BACKEND_SERVICE_NAME
iap.webServices.getIamPolicy

iap.webServices.setIamPolicy
Una regola di inoltro di Compute Engine
Autorizzazioni per una regola di forwarding. Il percorso della regola di forwarding può specificare l'ID o il nome della regola di forwarding.

Percorsi
Ambito globale:
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/forwarding_rule/services/
FORWARDING_RULE_ID or FORWARDING_RULE_NAME

Ambito regionale:
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/forwarding_rule-REGION_NAME/
services/FORWARDING_RULE_ID or FORWARDING_RULE_NAME
iap.webServices.getIamPolicy

iap.webServices.setIamPolicy
Un servizio app App Engine

Percorso
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/appengine-APP_ID/
services/APP_SERVICE_ID
iap.webServices.getIamPolicy

iap.webServices.setIamPolicy
An App Engine service version
Compute Engine doesn't support versioning.

Path
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/appengine-APP_ID/
services/APP_SERVICE_ID/versions/VERSION_ID
iap.webServiceVersions.getIamPolicy

iap.webServiceVersions.setIamPolicy
Tutte le istanze VM protette da IAP nel progetto
Corrisponde alla casella di controllo Tutte le risorse del tunnel nella pagina di amministrazione di IAP.

Percorso
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_tunnel
iap.tunnel.getIamPolicy

iap.tunnel.setIamPolicy
Una zona con almeno un'istanza VM
È la stessa casella di controllo del nome di una zona nella pagina di amministrazione di IAP, ad esempio us-central1-c.

Percorso
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_tunnel/zones/ZONE_NAME
iap.tunnelZones.getIamPolicy

iap.tunnelZones.setIamPolicy
Una singola istanza VM

Percorso
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_tunnel/zones/ZONE_NAME
/instances/INSTANCE_ID or INSTANCE_NAME
iap.tunnelInstances.getIamPolicy

iap.tunnelInstances.setIamPolicy
Una regione con almeno un gruppo di destinazione, ad esempio us-central1

Percorso
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_tunnel/locations/REGION_NAME
iap.tunnelLocations.getIamPolicy

iap.tunnelLocations.setIamPolicy
Un singolo gruppo di destinazione

Percorso
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_tunnel/locations/REGION_NAME
/destGroups/GROUP_NAME
iap.tunnelDestGroups.getIamPolicy

iap.tunnelDestGroups.setIamPolicy

Ruoli

La tabella seguente elenca i ruoli IAM IAP con un elenco corrispondente di tutte le autorizzazioni specifiche IAP incluse in ciascun ruolo. Per ulteriori informazioni sui ruoli IAM, consulta Gestire i ruoli e le autorizzazioni.

Ruolo Include le autorizzazioni Descrizione
IAP-secured Web App User (roles/iap.httpsResourceAccessor) iap.webServiceVersions.accessViaIAP Concede l'accesso alle risorse App Engine e Compute Engine.
Utente del tunnel con protezione IAP (roles/iap.tunnelResourceAccessor) iap.tunnelInstances.accessViaIAP
iap.tunnelDestGroups.accessViaIAP
Concede l'accesso alle istanze VM protette da IAP.
IAP Policy Admin (roles/iap.admin) iap.web.getIamPolicy
iap.web.setIamPolicy
iap.webTypes.getIamPolicy
iap.webTypes.setIamPolicy
iap.webServices.getIamPolicy
iap.webServices.setIamPolicy
iap.webServiceVersions.getIamPolicy
iap.webServiceVersions.setIamPolicy
iap.tunnel.getIamPolicy
iap.tunnel.setIamPolicy
iap.tunnelZones.getIamPolicy
iap.tunnelZones.setIamPolicy
iap.tunnelInstances.getIamPolicy
iap.tunnelInstances.setIamPolicy
Concede i diritti amministrativi IAP per gestire i criteri di accesso IAP delle risorse.

Gestione dell'accesso con Google Cloud CLI

Rifiutare l'accesso

I criteri di rifiuto di Identity and Access Management (IAM) ti consentono di impostare sistemi di protezione per gli accessi alle risorse Google Cloud. Per un elenco di scenari in cui i criteri di rifiuto sono utili, consulta use-cases.

Puoi creare criteri di rifiuto e includere tutte le autorizzazioni IAP in questi criteri. Per l'elenco delle autorizzazioni IAP che puoi aggiungere a un criterio di rifiuto, consulta Autorizzazioni supportate nei criteri di rifiuto e cerca iap.googleapis.com. Sebbene i criteri di negazione possano essere applicati a qualsiasi autorizzazione IAP, la loro efficacia è legata a un punto di attacco del criterio di negazione.

Alcune autorizzazioni IAP sono efficaci solo a livello di risorsa specifica e non sui relativi discendenti. Ad esempio,iap.organizations.getSettings dà accesso a getSettings a livello di organizzazione e non ai suoi discendenti. Ciò significa che gli amministratori devono elencare esplicitamente tutte le autorizzazioni granulari pertinenti quando creano i criteri di rifiuto per negare l'accesso in un punto di attacco e nei relativi discendenti.

Per un elenco completo di queste autorizzazioni granulari, consulta Autorizzazioni supportate nei criteri di rifiuto. Tutte le autorizzazioni sotto il FQDN iap.googleapis.com e i tipi di risorse iap.organizations, iap.folders, iap.projects, iap.web, iap.webTypes, iap.webServices, iap.webServicesVersions sono autorizzazioni granulari.

Di seguito è riportato un esempio di criterio di rifiuto IAM per negare l'accesso all'API getSettings a un principale di un'organizzazione e ai relativi discendenti.

{
  "name": "policies/cloudresourcemanager.googleapis.com%2Forganizations%2F253519172624/denypolicies/testpolicyid",
  "uid": "06ccd2eb-d2a5-5dd1-a746-eaf4c6g3f816",
  "kind": "DenyPolicy",
  "displayName": "Only project admins can delete projects.",
  "etag": "MTc1MTkzMjY0MjUyMTExODMxMDQ=",
  "createTime": "2021-09-07T23:15:35.258319Z",
  "updateTime": "2021-09-07T23:15:35.258319Z",
  "rules": [
    {
      "denyRule": {
        "deniedPrincipals": [
          "principalSet://goog/public:all"
        ],
        "deniedPermissions": [
          "iap.googleapis.com/iap.organizations.getSettings",
          "iap.googleapis.com/iap.folders.getSettings",
          "iap.googleapis.com/iap.projects.getSettings",
          "iap.googleapis.com/iap.web.getSettings",
          "iap.googleapis.com/iap.webTypes.getSettings",
          "iap.googleapis.com/iap.webServices.getSettings",
          "iap.googleapis.com/iap.webServicesVersions.getSettings",
        ],
      }
    }
  ]
}

Anziché specificare tutte le autorizzazioni granulari, di seguito è riportato un esempio di criterio di negazione IAM con una sola autorizzazione: *.getSettings.

{
  "name": "policies/cloudresourcemanager.googleapis.com%2Forganizations%2F253519172624/denypolicies/testpolicyid",
  "uid": "06ccd2eb-d2a5-5dd1-a746-eaf4c6g3f816",
  "kind": "DenyPolicy",
  "displayName": "Only project admins can delete projects.",
  "etag": "MTc1MTkzMjY0MjUyMTExODMxMDQ=",
  "createTime": "2021-09-07T23:15:35.258319Z",
  "updateTime": "2021-09-07T23:15:35.258319Z",
  "rules": [
    {
      "denyRule": {
        "deniedPrincipals": [
          "principalSet://goog/public:all"
        ],
        "deniedPermissions": [
          "iap.googleapis.com/*.getSettings",
        ],
      }
    }
  ]
}

Di seguito sono riportati alcuni modi più semplici per creare una policy di rifiuto IAM senza dover specificare tutte le autorizzazioni granulari.

Azione amministratore Autorizzazione nel criterio di negazione
Negare autorizzazioni IAP specifiche su tutti i tipi di risorse IAP *.updateSettings
*.getSettings
*.setIamPolicy
*.getIamPolicy
Negare tutte le autorizzazioni IAP per un tipo di risorsa specifico iap.organizations.*
iap.folders.*
iap.projects.*
iap.web.*
iap.webTypes.*
iap.webServices.*
iap.webServicesVersions.*

Accesso pubblico

Per concedere l'accesso a una risorsa a tutti, assegna un ruolo a uno dei seguenti agenti:

  • allAuthenticatedUsers: chiunque si autentichi con un Account Google o un account di servizio.
  • allUsers: chiunque si trovi su internet, inclusi gli utenti autenticati e non autenticati. L'intestazione firmata per la richiesta non avrà un claim sub o email.

Se l'accesso pubblico viene concesso, IAP non genera log di Cloud Audit Logs per la richiesta.

Al momento, alle associazioni che concedono l'accesso pubblico non può essere associata una condizione. Ad esempio, un criterio che consente a chiunque di accedere a una risorsa se il percorso della richiesta inizia con /public/ non è valido.