Gestire l'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

Puoi utilizzare IAP per configurare le policy IAP per le singole risorse e le risorse Cloud Run in un Google Cloud progetto. Più app all'interno di un progetto possono avere policy di accesso diverse. Sono inclusi i progetti con app Compute Engine, Google Kubernetes Engine e App Engine. Per le app App Engine, è possibile applicare policy di accesso diverse a singole versioni e servizi.

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 da IAP nel progetto.

Prima di iniziare

Prima di iniziare, devi disporre di quanto segue:

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

Attivare e disattivare IAP

Per attivare e disattivare IAP, sono necessarie determinate 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 progetto, Amministratore App Engine e Amministratore rete Compute. Sebbene questi ruoli consentano di attivare e disattivare IAP, non dispongono delle autorizzazioni necessarie per modificare le policy di accesso.

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

Per saperne di più sulla concessione dei ruoli, consulta Concessione, modifica e revoca dell'accesso.

Gestire l'accesso nella Google Cloud console

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

Aggiungere l'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 questa operazione non equivale a concedere l'accesso a livello di progetto con la pagina di amministrazione IAM. Un utente a cui è stato concesso il ruolo Amministratore policy IAP a livello di risorsa Tutti i servizi web avrà solo le autorizzazioni per le policy IAP.

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

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

  4. Applica i ruoli delle policy di accesso all'entità selezionando uno dei seguenti ruoli nel menu a discesa Seleziona un ruolo:

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

    • Amministratore policy IAP: concede i diritti di amministratore sulle policy IAP.

    • Utente app 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 le policy IAP.

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

Rimuovere l'accesso

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

Gestire l'accesso con l'API

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

Risorse e autorizzazioni

L'API IAP consente di 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. L'accesso a livello di progetto e superiore viene gestito nella pagina di amministrazione IAM, ma verrà visualizzato nella pagina di amministrazione IAP.

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

Ogni risorsa IAP ha le proprie autorizzazioni getIamPolicy e setIamPolicy che consentono di gestire le policy di accesso per la risorsa e i relativi elementi secondari.

Per chiamare l'API IAM, crea una chiamata con un percorso dell'URL a una risorsa. Di seguito è riportato un esempio di chiamata che recupera la policy 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 richieste per chiamare l'API IAM.

Tipo di risorsa Autorizzazioni
Ogni app web protetta da IAP nel progetto
È la stessa della casella di controllo Tutti i servizi web nella pagina di amministrazione IAP.

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

iap.web.setIamPolicy
Ogni servizio di backend nel progetto
È la stessa della casella di controllo Servizio di backend nella pagina di amministrazione 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 forwarding 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
Una regione per ogni servizio Cloud Run nel progetto
Autorizzazioni per tutti i servizi Cloud Run in una regione del progetto.

Percorso
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/cloud_run-REGION_NAME
iap.webTypes.getIamPolicy

iap.webTypes.setIamPolicy
Un servizio Cloud Run
Autorizzazioni per un servizio Cloud Run. Tutti i servizi Cloud Run sono regionali.

Percorso
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/cloud_run-REGION_NAME/services/SERVICE_NAME
iap.webServices.getIamPolicy

iap.webServices.setIamPolicy
Un'app App Engine
È la stessa della casella di controllo App Engine nella pagina di amministrazione 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 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 forwarding 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
Ogni istanza VM protetta da IAP nel progetto
È la stessa della casella di controllo Tutte le risorse tunnel nella pagina di amministrazione 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 della casella di controllo del nome della zona nella pagina di amministrazione 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 di IAP incluse in ogni ruolo. Per saperne di più sui ruoli IAM , consulta Gestire ruoli e autorizzazioni.

Ruolo Include autorizzazioni Descrizione
Utente app web con protezione IAP (roles/iap.httpsResourceAccessor) iap.webServiceVersions.accessViaIAP Concede l'accesso alle risorse App Engine e Compute Engine.
Utente tunnel con protezione IAP (roles/iap.tunnelResourceAccessor) iap.tunnelInstances.accessViaIAP
iap.tunnelDestGroups.accessViaIAP
Concede l'accesso alle istanze VM protette da IAP.
Amministratore policy IAP (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 le policy di accesso IAP delle risorse.

Gestire l'accesso con Google Cloud CLI

Puoi anche gestire l'accesso utilizzando Google Cloud CLI.

Rifiutare l'accesso

Le policy di negazione Identity and Access Management (IAM) consentono di impostare sistemi di protezione per l'accesso alle Google Cloud risorse. Per un elenco di scenari in cui le policy di negazione sono utili, consulta i casi d'uso.

Puoi creare policy di negazione e includere tutte le autorizzazioni IAP in queste policy. Per l'elenco delle autorizzazioni IAP che puoi aggiungere a una policy di negazione, consulta Autorizzazioni supportate nelle policy di negazione e cerca iap.googleapis.com. Sebbene le policy di negazione possano essere applicate a qualsiasi autorizzazione IAP, la loro efficacia è legata a un punto di collegamento della policy di negazione .

Alcune autorizzazioni IAP sono efficaci solo a livello di risorsa specifico e non sui relativi elementi secondari. Ad esempio,iap.organizations.getSettings concede l'accesso a getSettings a livello di organizzazione e non agli elementi secondari dell' organizzazione. Ciò significa che gli amministratori devono elencare esplicitamente tutte le autorizzazioni granulari pertinenti quando creano policy di negazione per negare l'accesso a un punto di collegamento e ai relativi elementi secondari.

Per un elenco completo di queste autorizzazioni granulari, consulta Autorizzazioni supportate nelle policy di negazione. Tutte le autorizzazioni nel nome di dominio completo 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 policy di negazione IAM per negare l'accesso all'API getSettings a un'entità in un'organizzazione e nei relativi elementi secondari.

{
  "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 policy 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 negazione IAM senza dover specificare tutte le autorizzazioni granulari.

Azione amministratore Autorizzazione nella policy di negazione
Nega autorizzazioni IAP specifiche su tutti i tipi di risorse IAP *.updateSettings
*.getSettings
*.setIamPolicy
*.getIamPolicy
Nega 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, concedi un ruolo a una delle seguenti entità:

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

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

Al momento, le associazioni che concedono l'accesso pubblico non possono avere una condizione associata. Ad esempio, una policy che consente a chiunque di accedere a una risorsa se il percorso della richiesta inizia con /public/ non è valida.