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 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, è possibile applicare criteri di accesso diversi a singole versioni e servizi.
Per gestire l'accesso a livello di progetto e superiore, utilizza la pagina IAM Admin. 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, ti serviranno:
- Una risorsa protetta con 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 IAP con la console Google Cloud
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 console Google Cloud
Per controllare l'accesso a una risorsa protetta da IAP con la consoleGoogle Cloud , segui la procedura per aggiungere o rimuovere l'accesso.
Aggiungere l'accesso
Vai alla pagina Identity-Aware Proxy.
Vai alla pagina Identity-Aware ProxySeleziona la risorsa che vuoi proteggere con IAP. Le seguenti selezioni di risorse proteggono un gruppo fisso di risorse:
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.
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.
Applica i ruoli della policy di accesso all'entità selezionando uno dei seguenti ruoli nel menu a discesa Seleziona un ruolo:
Proprietario: concede lo stesso accesso di IAP Policy Admin. Utilizza invece il ruolo Amministratore norme 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 le policy IAP.
Al termine dell'aggiunta degli indirizzi email e dell'impostazione dei ruoli, fai clic su Aggiungi.
Rimuovi accesso
- Vai alla pagina Identity-Aware Proxy.
Vai alla pagina Identity-Aware Proxy - Seleziona la risorsa protetta con IAP.
- Nel riquadro informativo a destra, seleziona la sezione corrispondente al ruolo che vuoi rimuovere da un'entità.
- Nella sezione espansa, accanto a ogni nome di utente o gruppo per cui vuoi rimuovere il ruolo, fai clic su Rimuovi.
- 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 la creazione e la gestione di criteri di controllo dell'accesso risorse. Google Cloud
Risorse e autorizzazioni
L'API IAP consente di 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 sottostanti. Ad esempio, un'autorizzazione concessa a livello di progetto si applica a tutte Google Cloud le 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 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.tunnelInstances.accessViaIAP.
Ogni risorsa IAP ha la propria autorizzazione getIamPolicy e setIamPolicy
che concede la possibilità di gestire i criteri di accesso per quella 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 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 richieste per chiamare l'API IAM.
| Tipo di risorsa | Autorizzazioni |
|---|---|
| Ogni app web protetta da IAP nel progetto Questa opzione equivale 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.getIamPolicyiap.web.setIamPolicy |
| Ogni servizio di backend nel progetto Questa opzione è uguale alla casella di controllo Servizio di backend nella pagina di amministrazione di IAP. Percorsi Ambito globale: https://iap.googleapis.com/v1/projects/ Ambito regionale: https://iap.googleapis.com/v1/projects/ |
iap.webTypes.getIamPolicyiap.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/ Ambito regionale: https://iap.googleapis.com/v1/projects/ |
iap.webTypes.getIamPolicyiap.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/ |
iap.webTypes.getIamPolicyiap.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/ |
iap.webServices.getIamPolicyiap.webServices.setIamPolicy |
| Un'app App Engine Questa opzione corrisponde alla casella di controllo App App Engine nella pagina di amministrazione di IAP. Percorso https://iap.googleapis.com/v1/projects/ |
iap.webTypes.getIamPolicyiap.webTypes.setIamPolicy |
| Un servizio di backend di Compute Engine Il percorso del servizio di backend può specificare l'ID servizio di backend o il nome del servizio di backend. Percorsi Ambito globale: https://iap.googleapis.com/v1/projects/ Ambito regionale: https://iap.googleapis.com/v1/projects/ |
iap.webServices.getIamPolicyiap.webServices.setIamPolicy |
| Una regola di forwarding 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/ Ambito regionale: https://iap.googleapis.com/v1/projects/ |
iap.webServices.getIamPolicyiap.webServices.setIamPolicy |
| Un servizio app App Engine Percorso https://iap.googleapis.com/v1/projects/ |
iap.webServices.getIamPolicyiap.webServices.setIamPolicy |
| An App Engine service version Compute Engine doesn't support versioning. Path https://iap.googleapis.com/v1/projects/ |
iap.webServiceVersions.getIamPolicyiap.webServiceVersions.setIamPolicy |
| Ogni istanza VM protetta da IAP nel progetto Questa opzione corrisponde alla casella di controllo Tutte le risorse tunnel nella pagina di amministrazione IAP. Percorso https://iap.googleapis.com/v1/projects/ |
iap.tunnel.getIamPolicyiap.tunnel.setIamPolicy |
| Una zona con almeno un'istanza VM Questo è uguale a una casella di controllo del nome della zona nella pagina di amministrazione di IAP, ad esempio us-central1-c. Percorso https://iap.googleapis.com/v1/projects/ |
iap.tunnelZones.getIamPolicyiap.tunnelZones.setIamPolicy |
| Una singola istanza VM Percorso https://iap.googleapis.com/v1/projects/ |
iap.tunnelInstances.getIamPolicyiap.tunnelInstances.setIamPolicy |
Una regione con almeno un gruppo di destinazioni, ad esempio us-central1 Percorso https://iap.googleapis.com/v1/projects/ |
iap.tunnelLocations.getIamPolicyiap.tunnelLocations.setIamPolicy |
| Un singolo gruppo di destinazione Percorso https://iap.googleapis.com/v1/projects/ |
iap.tunnelDestGroups.getIamPolicyiap.tunnelDestGroups.setIamPolicy |
Ruoli
La tabella seguente elenca i ruoli IAM di IAP con un elenco corrispondente di tutte le autorizzazioni specifiche di IAP incluse in ogni ruolo. Per saperne di più sui ruoli IAM, consulta Gestione di ruoli e autorizzazioni.
| Ruolo | Include 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.accessViaIAPiap.tunnelDestGroups.accessViaIAP |
Concede l'accesso alle istanze VM protette da IAP. |
IAP Policy Admin (roles/iap.admin) |
iap.web.getIamPolicyiap.web.setIamPolicyiap.webTypes.getIamPolicyiap.webTypes.setIamPolicyiap.webServices.getIamPolicyiap.webServices.setIamPolicyiap.webServiceVersions.getIamPolicyiap.webServiceVersions.setIamPolicyiap.tunnel.getIamPolicyiap.tunnel.setIamPolicyiap.tunnelZones.getIamPolicyiap.tunnelZones.setIamPolicyiap.tunnelInstances.getIamPolicyiap.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.
Rifiuta l'accesso
I criteri di negazione di Identity and Access Management (IAM) ti consentono di impostare sistemi di protezione per l'accesso alle risorse Google Cloud . Per un elenco di scenari in cui le policy di negazione sono utili, consulta casi d'uso.
Puoi creare criteri di negazione e includere tutte le autorizzazioni IAP in
questi criteri. Per l'elenco delle autorizzazioni IAP che puoi aggiungere
a una policy di rifiuto, consulta Autorizzazioni supportate nelle policy 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 collegamento dei criteri di negazione.
Alcune autorizzazioni IAP sono efficaci solo a livello di risorsa specifico e non sui relativi discendenti. Ad esempio,iap.organizations.getSettings
consente l'accesso a getSettings a livello di organizzazione e non ai
discendenti 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 discendenti.
Per un elenco completo di queste autorizzazioni granulari, consulta
Autorizzazioni supportate nelle policy di negazione.
Tutte le autorizzazioni nel 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 policy di negazione IAM per negare l'accesso all'API getSettings a un principal 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 del 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 negazione IAM senza dover specificare tutte le autorizzazioni granulari.
| Azione amministrativa | Autorizzazione nella policy di negazione |
|---|---|
| Nega autorizzazioni IAP specifiche per 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 una delle seguenti entità:
allAuthenticatedUsers: chiunque sia autenticato con un Account Google o un account di servizio.allUsers: Chiunque abbia accesso a internet, inclusi utenti autenticati e non autenticati. L'intestazione firmata per la richiesta non avrà unsubo unemailrivendicazione.
Se viene concesso l'accesso pubblico, IAP non genera log Cloud Audit Logs per la richiesta.
Al momento, i binding 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.