Questa pagina descrive come gestire l'accesso di singoli o gruppi 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 per le risorse Cloud Run in un progetto Google Cloud . Più app all'interno di un progetto possono avere policy di accesso diverse. Questa funzionalità si applica ai progetti con app Compute Engine, Google Kubernetes Engine e App Engine. Per le app App Engine, è possibile applicare policy di accesso diverse alle singole versioni e ai singoli servizi.Per gestire l'accesso a livello di progetto e superiore, vai alla pagina 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, sarà necessario:
- 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.
Attiva e disattiva 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 |
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.
Gestisci 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.
Aggiungi 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 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 Amministrazione IAM. Un utente a cui è stato concesso il ruolo Amministratore policy IAP a livello di risorsa Tutti i servizi web avrà autorizzazioni solo 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 dal 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.
IAP Policy Admin: concede i diritti di amministratore sulle policy IAP.
IAP-Secured Web App User: concede l'accesso all'app web 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 Informazioni sul lato destro, seleziona la sezione corrispondente al ruolo che vuoi rimuovere da un'entità.
- Nella sezione espansa, accanto al nome di ogni utente o gruppo per cui vuoi rimuovere il ruolo, fai clic su Rimuovi.
- Nella finestra di dialogo Rimuovi entità visualizzata, fai clic su Rimuovi.
Gestisci l'accesso con l'API
IAM fornisce un set standard di metodi per creare e gestire le policy di controllo dell'accesso risorse Google Cloud .
Risorse e autorizzazioni
L'API IAP ti 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 risorse Google Cloud del progetto. L'accesso alle risorse a livello di progetto e di livello superiore viene gestito nella pagina Amministrazione IAM, ma verrà visualizzato nella pagina 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 le policy 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 le proprie autorizzazioni getIamPolicy e setIamPolicy, che concedono la possibilità di gestire le policy di accesso per la risorsa e le relative risorse secondarie.
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 di un'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 e le autorizzazioni necessarie per chiamare l'API IAM.
| Tipo di risorsa | Autorizzazioni |
|---|---|
|
Ogni app web protetta da IAP nel progetto Equivale alla casella di controllo Tutti i servizi web nella pagina 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 equivale alla casella di controllo Servizio di backend nella pagina 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 a livello di regione. Percorso https://iap.googleapis.com/v1/projects/ |
iap.webServices.getIamPolicyiap.webServices.setIamPolicy |
|
Un'app App Engine Questa opzione equivale alla casella di controllo App App Engine nella pagina IAP. Percorso https://iap.googleapis.com/v1/projects/ |
iap.webTypes.getIamPolicyiap.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/ 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 |
|
Una versione del servizio App Engine Compute Engine non supporta il controllo delle versioni. Percorso https://iap.googleapis.com/v1/projects/ |
iap.webServiceVersions.getIamPolicyiap.webServiceVersions.setIamPolicy |
|
Ogni istanza VM protetta da IAP nel progetto Equivale alla casella di controllo Tutte le risorse tunnel nella pagina IAP. Percorso https://iap.googleapis.com/v1/projects/ |
iap.tunnel.getIamPolicyiap.tunnel.setIamPolicy |
|
Una zona con almeno un'istanza VM Corrisponde alla casella di controllo del nome di una zona nella pagina 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 destinazione, ad esempio us-central1Percorso https://iap.googleapis.com/v1/projects/ |
iap.tunnelLocations.getIamPolicyiap.tunnelLocations.setIamPolicy |
|
Un singolo gruppo di destinazioni 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 le autorizzazioni | Descrizione |
|---|---|---|
IAP-Secured Web App User (roles/iap.httpsResourceAccessor) |
iap.webServiceVersions.accessViaIAP |
Concede l'accesso alle risorse App Engine e Compute Engine. |
IAP-Secured Tunnel User (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 di IAP per gestire le policy di accesso IAP delle risorse. |
Gestisci l'accesso con Google Cloud CLI
Puoi anche gestire l'accesso utilizzando Google Cloud CLI.
Nega l'accesso
Le policy di negazione 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 le policy di negazione sono utili, consulta 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 valide solo a livello di risorsa specifica e non per i relativi discendenti. Ad esempio, iap.organizations.getSettings
concede 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 in 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 nell'FQDN iap.googleapis.com e nei 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à di un'organizzazione e ai suoi 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 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 amministrativa | 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 a tutti l'accesso a una risorsa, assegna 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 gli utenti autenticati e non autenticati. L'intestazione firmata per la richiesta non avrà un'attestazionesuboemail.
Se viene concesso l'accesso pubblico, IAP non genererà 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, una policy che consente a chiunque di accedere a una risorsa se il percorso della richiesta inizia con /public/ non è valida.