Utilizzo di IAM per autorizzare l'accesso
Puoi utilizzare Identity and Access Management (IAM) per autorizzare le identità a eseguire azioni amministrative sulle funzioni, come la creazione, l'aggiornamento e l'eliminazione delle stesse. Aggiungi le entità (le identità che vuoi abilitare, in genere un indirizzo email per l'account di servizio o un utente) alla funzione, quindi concedi a queste entità i ruoli IAM appropriati. Questi ruoli includono le autorizzazioni che definiscono le azioni consentite.
Abilitazione dell'accesso a una funzione
Puoi controllare le azioni per una funzione concedendo o limitando i ruoli a singole identità tramite IAM.
Aggiunta di entità e concessione di ruoli
Console
Vai alla console Google Cloud:
Fai clic sulla casella di controllo accanto alla funzione che ti interessa.
Fai clic su Autorizzazioni nella parte superiore dello schermo. Viene visualizzato il riquadro Autorizzazioni.
Fai clic su Aggiungi entità.
Nel campo Nuove entità, inserisci una o più identità che devono accedere alla tua funzione. Si tratta in genere dell'email di un account utente o di servizio.
Seleziona uno o più ruoli dal menu a discesa Seleziona un ruolo. I ruoli selezionati vengono visualizzati nel riquadro con una breve descrizione delle autorizzazioni concesse.
Fai clic su Salva.
Google Cloud
Utilizza il comando gcloud functions add-iam-policy-binding
:
gcloud functions add-iam-policy-binding FUNCTION_NAME \ --member=PRINCIPAL_ID \ --role=ROLE
dove FUNCTION_NAME
è il nome della funzione,
PRINCIPAL_ID
è l'identificatore dell'entità, in genere un'email e
ROLE
è il ruolo.
Per un elenco delle origini che possono fornire un PRINCIPAL_ID
, consulta la pagina dei concetti IAM.
Per un elenco dei valori accettati per ROLE
, consulta la pagina di riferimento dei ruoli IAM di Cloud Functions.
Rimozione dei ruoli dalle entità
Console
Vai alla console Google Cloud:
Fai clic sulla casella di controllo accanto alla funzione che ti interessa.
Fai clic su Autorizzazioni nella parte superiore dello schermo. Viene visualizzato il riquadro Autorizzazioni.
Cerca l'entità che vuoi rimuovere. Guarda in tutti i ruoli che sono stati concessi al preside.
Quando trovi l'entità nel ruolo che vuoi eliminare, fai clic sull'icona del cestino accanto. Se vuoi rimuovere completamente l'accesso del entità, esegui questa operazione per ogni ruolo concesso all'entità.
Google Cloud
Utilizza il comando gcloud functions remove-iam-policy-binding
:
gcloud functions remove-iam-policy-binding FUNCTION_NAME \ --member=PRINCIPAL_ID \ --role=ROLE
dove FUNCTION_NAME
è il nome della funzione,
PRINCIPAL_ID
è l'indirizzo email che identifica
l'account di servizio, preceduto da serviceAccount:
e ROLE
è il ruolo.
Per un elenco delle fonti accettabili per PRINCIPAL_ID
, consulta
la pagina dei concetti IAM.
Per un elenco dei possibili valori per ROLE
, consulta la pagina di riferimento dei ruoli IAM di Cloud Functions.
Se all'entità sono stati concessi più ruoli, assicurati di specificare quello da rimuovere.
Aggiunta o rimozione collettiva delle entità
Console
Vai alla console Google Cloud:
Fai clic sulle caselle di controllo accanto alle funzioni a cui vuoi concedere o limitare l'accesso.
Fai clic su Autorizzazioni nella parte superiore dello schermo. Viene visualizzato il riquadro Autorizzazioni.
Se vuoi aggiungere entità:
Fai clic su Aggiungi entità.
In Nuove entità, inserisci più identità che devono accedere alla tua funzione.
Seleziona uno o più ruoli dal menu a discesa Seleziona un ruolo. I ruoli selezionati vengono visualizzati nel riquadro con una breve descrizione delle autorizzazioni concesse.
Fai clic su Salva.
Se vuoi rimuovere le entità:
Cerca l'entità che vuoi rimuovere o espandi un ruolo di cui dispone.
Quando trovi l'entità che vuoi eliminare, fai clic sull'icona del cestino accanto. Se vuoi rimuovere completamente l'accesso del entità, esegui questa operazione per ogni ruolo concesso all'entità.
Google Cloud
Crea un criterio IAM denominato, ad esempio policy.json
:
{ "bindings": [ { "role": ROLE, "members": [ PRINCIPAL_ID ] } ] }
Utilizza il comando gcloud functions set-iam-policy
:
gcloud functions set-iam-policy FUNCTION_NAME policy.json
Per un elenco delle fonti accettabili per PRINCIPAL_ID
, consulta
la pagina dei concetti IAM.
Per un elenco dei valori accettati per ROLE
, consulta la pagina di riferimento dei ruoli IAM di Cloud Functions.
Visualizzazione delle entità
Console
Vai alla console Google Cloud:
Fai clic sul nome della funzione che ti interessa.
Seleziona la scheda Autorizzazioni. Viene visualizzato il riquadro Autorizzazioni.
Assicurati che la scheda Entità sia selezionata.
Google Cloud
Utilizza il comando gcloud functions get-iam-policy
:
gcloud functions get-iam-policy FUNCTION_NAME
Consentire la chiamata a funzione HTTP non autenticata
A partire dal 15 gennaio 2020, le funzioni HTTP senza Consenti chiamate non autenticate attivano l'accesso solo agli utenti finali e agli account di servizio che non dispongono delle autorizzazioni appropriate.
Per consentire chiamate non autenticate devi specificarlo in corrispondenza o dopo l'implementazione.
Utilizza una variante speciale dell'approccio descritta sopra per concedere ai chiamanti non autenticati la possibilità di richiamare una funzione HTTP.
Al momento del deployment
Console
Seleziona Consenti chiamate non autenticate nella sezione Autenticazione del riquadro Configurazione.
Google Cloud
Il comando gcloud functions deploy
include una richiesta per aiutarti a configurare le autorizzazioni di chiamata durante la creazione della funzione. Può anche includere il flag --allow-unauthenticated
:
gcloud functions deploy FUNCTION_NAME \ --trigger-http \ --allow-unauthenticated \ ...
I deployment successivi della stessa funzione non ne modificano lo stato, anche se non utilizzi questo flag.
Dopo il deployment
Cloud Functions (1a generazione):
Per consentire la chiamata non autenticata di una funzione, concedi il ruolo Invoker di Cloud Functions all'entità allUsers
speciale sulla funzione:
Console
Vai alla console Google Cloud:
Fai clic sulla casella di controllo accanto alla funzione di ricezione. Non fare clic sulla funzione stessa.
Fai clic su Autorizzazioni nella parte superiore dello schermo. Viene visualizzato il riquadro Autorizzazioni.
Fai clic su Aggiungi entità.
Nel campo Nuove entità, digita
allUsers
.Seleziona il ruolo Cloud Functions > Invoker di Cloud Functions dal menu a discesa Seleziona un ruolo.
In risposta alla finestra di dialogo, fai clic su Consenti accesso pubblico.
Google Cloud
Utilizza il comando gcloud functions add-iam-policy-binding
per concedere il ruolo roles/cloudfunctions.invoker
all'entità allUsers
speciale sulla funzione:
gcloud functions add-iam-policy-binding FUNCTION_NAME \ --member="allUsers" \ --role="roles/cloudfunctions.invoker"
Cloud Functions (2nd gen):
Console
Vai alla console Google Cloud:
Fai clic sul nome collegato della funzione a cui vuoi concedere l'accesso.
Fai clic sul link Powered by Cloud Run nell'angolo in alto a destra della pagina Panoramica dei dettagli della funzione.
Apri la scheda Sicurezza e, in Autenticazione, seleziona Consenti chiamate non autenticate.
Fai clic su Salva.
Google Cloud
Usa il comando gcloud run services add-iam-policy-binding
per concedere il ruolo roles/run.invoker
alla funzione specifica.
gcloud run services add-iam-policy-binding FUNCTION_NAME \ --member="user:USER_EMAIL"\ --role="roles/run.invoker"
Condivisione limitata dei domini
Se stai sviluppando funzioni in un progetto soggetto ai criteri dell'organizzazione per la condivisione limitata del dominio, non potrai consentire la chiamata non autenticata di una funzione. Questo criterio limita la condivisione dei dati pubblici per ridurre il rischio di esfiltrazione dei dati.
Se vuoi eseguire il deployment di funzioni che consentono una chiamata non autenticata, ti consigliamo di rimuovere il criterio di condivisione limitata del dominio dal progetto. È possibile impostare i criteri dell'organizzazione a livello di organizzazione, cartella o progetto.
Dopo aver creato le funzioni che consentono la chiamata non autenticata, puoi riattivare il criterio dell'organizzazione:
- Le funzioni di cui è stato eseguito il deployment prima che il criterio dell'organizzazione sia riattivato continueranno a consentire le chiamate non autenticate.
- È possibile eseguire il deployment delle nuove versioni di queste funzioni esistenti senza richiedere la chiamata autenticata.
- Non è possibile eseguire il deployment di nuove funzioni che consentono chiamate non autenticate.
Controllo dell'accesso su tutte le funzioni di un progetto
Se vuoi concedere ruoli a tutte le funzioni in un progetto, puoi concederti i ruoli nel progetto.