Gestione dell'accesso alle risorse protette da IAP

In questa pagina viene descritto come gestire l'accesso individuale o di gruppo a Risorse protette da Identity-Aware Proxy (IAP) a livello di risorsa.

Panoramica

IAP consente di configurare criteri IAP per 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 di App Engine, i singoli servizi e versioni possono possono essere applicati criteri di accesso diversi.

Per gestire l'accesso a livello di progetto e di livello superiore, utilizza l'amministratore IAM . Elenchi di utenti che hanno accesso (le "entità") a livello di progetto si applicano a tutte le risorse protette da IAP del progetto.

Prima di iniziare

Prima di iniziare, ti serviranno:

  • Una risorsa protetta da IAP a cui vuoi aggiungere singole o accesso di gruppo.
  • Nomi degli utenti o dei gruppi per cui vuoi aggiungere l'accesso.

Attivazione e disattivazione di IAP

Per attivare e disattivare gli acquisti in-app, 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 quali Editor di progetto, Amministratore App Engine, e amministratore di rete Compute. Sebbene questi ruoli consentano IAP, non dispone delle autorizzazioni necessarie modificare i criteri di accesso.

Inoltre, l'attivazione di IAP con la console Google Cloud potrebbe richiedere anche clientauthconfig.clients.create e Autorizzazioni clientauthconfig.clients.getWithSecret. Queste autorizzazioni sono concesso dal ruolo Editor di progetto.

Per scoprire di più sulla concessione dei ruoli, consulta l'articolo Concessione, modifica e revoca dell'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 prestabilito di risorse:

    • Tutti i servizi web: tutte le risorse del progetto verranno protette. Tieni presente che 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 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 saranno 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 del criterio di accesso all'entità selezionando uno dei ruoli seguenti nel menu a discesa Seleziona un ruolo:

    • Proprietario: concede lo stesso accesso dell'Amministratore criteri IAP. 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 sicurezza: concede l'autorizzazione per visualizzare e controllare i criteri IAP.

  5. Quando hai finito di aggiungere indirizzi email e di impostare 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 delle informazioni a destra, seleziona la sezione corrispondente al ruolo da rimuovere da un'entità.
  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 amministratore visualizzata, fai clic su Rimuovi.

Gestione dell'accesso con l'API

IAM offre un set standard di metodi creazione e gestione dei criteri di controllo dell'accesso sulle risorse Google Cloud.

Risorse e autorizzazioni

L'API IAP consente di applicare alle singole risorse in un progetto protetto da IAP. Le autorizzazioni IAM concesse a un determinato livello si applicano a tutti i livelli sottostante. Ad esempio, un'autorizzazione concessa a livello di progetto si applica a tutte le risorse Google Cloud del progetto. Accesso per le istanze a livello di progetto di cui sopra è gestita pagina di amministrazione IAM, ma verrà visualizzato in 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. La L'autorizzazione iap.webServiceVersions.accessViaIAP concede all'utente l'accesso a un'app. Se stai utilizzando IAP per controllare l'accesso ai servizi amministrativi ad esempio SSH e RDP, gli utenti dovranno usare iap.tunnelInstances.accessViaIAP autorizzazione.

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 un risorsa. Di seguito è riportato un esempio di chiamata che recupera i dati IAM criterio per una versione del servizio dell'app di 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 con IAP nel progetto
Corrisponde alla 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
Un servizio di backend
Corrisponde alla 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
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
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 con IAP nel progetto
Corrisponde alla casella di controllo Tutte le risorse del 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 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 su IAM vedi Gestione di ruoli e autorizzazioni.

Ruolo Include autorizzazioni Descrizione
Utente applicazione web con protezione IAP (roles/iap.httpsResourceAccessor) iap.webServiceVersions.accessViaIAP Concede l'accesso alle risorse di 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.
Amministratore criteri 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 i criteri di accesso IAP delle risorse.

Gestione dell'accesso con Google Cloud CLI

Nega 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 negazione sono utili, vedi use-cases.

Puoi creare criteri di negazione e includere tutte le autorizzazioni IAP in tali norme. Per l'elenco delle autorizzazioni IAP che puoi aggiungere a un criterio di negazione, vedi Autorizzazioni supportate nei criteri di negazione. e cerca iap.googleapis.com. Sebbene sia possibile applicare criteri di negazione autorizzazioni IAP, la loro efficacia è legata a un criterio di negazione punto di collegamento.

Alcune autorizzazioni IAP sono efficaci solo per la loro risorsa specifica e non sui relativi discendenti. Ad esempio,iap.organizations.getSettings consente l'accesso a getSettings a livello di organizzazione e non discendenti dell'organizzazione. Ciò significa che gli amministratori devono elencare esplicitamente tutti autorizzazioni granulari pertinenti durante la creazione di criteri di negazione per negare l'accesso punto di collegamento e i relativi discendenti.

Per un elenco completo di tali autorizzazioni granulari, consulta Autorizzazioni supportate nei criteri di negazione. Tutte le autorizzazioni in FQDN iap.googleapis.com e i tipi di risorsa 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 negazione IAM per negare l'accesso all'API getSettings a un'entità in 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",
        ],
      }
    }
  ]
}

Invece di specificare tutte le autorizzazioni granulari, di seguito è riportato un esempio il 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 un criterio di negazione IAM senza specificare tutte le autorizzazioni granulari.

Azione amministratore Autorizzazione nel criterio 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, 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 i file autenticati e per gli utenti 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, le associazioni che concedono l'accesso pubblico non possono avere una condizione associate. Ad esempio, una norma che consente a chiunque accesso a una risorsa se il percorso di richiesta inizia con /public/ non è valido.