Autorizza l'accesso con IAM
Puoi utilizzare Identity and Access Management (IAM) per autorizzare le identità a eseguire azioni amministrative sulle tue funzioni, ad esempio crearle, aggiornarle ed eliminarle. In IAM, concedi alle entità (ovvero le identità che vuoi abilitare, in genere l'email di un account utente o di servizio) i ruoli IAM appropriati per la funzione o il progetto. Questi ruoli includono le autorizzazioni che definiscono le azioni che l'entità è autorizzata a eseguire.
Prima di iniziare
Per ottenere l'autorizzazione necessaria per controllare l'accesso a una funzione specifica o a tutte le funzioni di un progetto,
chiedi all'amministratore di concederti il
ruolo IAM Amministratore Cloud Functions (roles/function.admin
) per la funzione o il progetto.
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.
Questo ruolo predefinito contiene l'autorizzazione cloudfunctions.functions.setIamPolicy
, necessaria per controllare l'accesso per una funzione specifica o per tutte le funzioni di un progetto.
Potresti anche essere in grado di ottenere questa autorizzazione con i ruoli personalizzati o altri ruoli predefiniti.
Consulta Ruoli IAM di Cloud Functions per l'elenco completo dei ruoli di Cloud Functions e delle autorizzazioni associate.
Abilitare l'accesso a una funzione
Puoi controllare le azioni su una funzione concedendo o limitando i ruoli alle singole identità tramite IAM.
Aggiunta di entità e concessione dei 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 della schermata. Si apre il riquadro Autorizzazioni.
Fai clic su Aggiungi entità.
Nel campo Nuove entità, inserisci una o più identità che devono accedere alla funzione. In genere si tratta dell'indirizzo 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.
gcloud
Usa 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à, di solito 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 accettabili 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 della schermata. Si apre il riquadro Autorizzazioni.
Cerca l'entità che vuoi rimuovere. Cerca in ogni ruolo concesso dall'entità.
Quando trovi l'entità nel ruolo che vuoi eliminare, fai clic sull'icona del cestino accanto all'entità. Se vuoi rimuovere completamente l'accesso dell'entità, esegui questa operazione per ogni ruolo concesso all'entità.
gcloud
Usa 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 origini accettabili per PRINCIPAL_ID
, consulta
la pagina dei concetti di 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 che vuoi rimuovere.
Aggiunta collettiva di entità
Console
Vai alla console Google Cloud:
Fai clic sulle caselle di controllo accanto alle funzioni per le quali vuoi concedere o limitare l'accesso.
Fai clic su Autorizzazioni nella parte superiore della schermata. Si apre il riquadro Autorizzazioni.
Per aggiungere entità:
Fai clic su Aggiungi entità.
Nel campo 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.
gcloud
Crea un criterio IAM denominato, ad esempio policy.json
:
{ "bindings": [ { "role": ROLE, "members": [ PRINCIPAL_ID ] } ] }
Usa il comando gcloud functions set-iam-policy
:
gcloud functions set-iam-policy FUNCTION_NAME policy.json
Per un elenco delle origini accettabili per PRINCIPAL_ID
, consulta
la pagina dei concetti di IAM.
Per un elenco dei valori accettabili 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. Si apre il riquadro Autorizzazioni.
Seleziona la scheda Visualizza per entità per visualizzare un elenco di tutte le entità con autorizzazioni per la funzione selezionata.
gcloud
Usa il comando gcloud functions get-iam-policy
:
gcloud functions get-iam-policy FUNCTION_NAME
Consentire chiamate di funzioni HTTP non autenticate
A partire dal 15 gennaio 2020, le funzioni HTTP senza l'opzione Consenti chiamate non autenticate abilitate limitano l'accesso agli utenti finali e agli account di servizio che non dispongono delle autorizzazioni appropriate.
Per consentire chiamate non autenticate, devi specificarlo al momento del deployment o dopo il deployment.
Utilizza una variante speciale dell'approccio descritto sopra per concedere agli utenti non autenticati la possibilità di richiamare una funzione HTTP.
Al momento del deployment
Console
Seleziona Consenti chiamate non autenticate nella sezione Autenticazione del riquadro Trigger.
gcloud
Il comando gcloud functions deploy
include un prompt che ti consente di 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 (1ª generazione.):
Per consentire la chiamata non autenticata di una funzione, concedi il ruolo Invoker di Cloud Functions all'entità allUsers
speciale nella funzione:
Console
Vai alla console Google Cloud:
Fai clic sulla casella di controllo accanto alla funzione ricevente. Non fare clic sulla funzione stessa.
Fai clic su Autorizzazioni nella parte superiore della schermata. Si apre 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.
gcloud
Utilizza il comando gcloud functions add-iam-policy-binding
per concedere il ruolo roles/cloudfunctions.invoker
all'entità allUsers
speciale nella funzione:
gcloud functions add-iam-policy-binding FUNCTION_NAME \ --member="allUsers" \ --role="roles/cloudfunctions.invoker"
Consulta il riferimento gcloud functions add-iam-policy-binding
per ulteriori informazioni su questi campi.
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 delle funzioni.
Apri la scheda Sicurezza e in Autenticazione, seleziona Consenti chiamate non autenticate.
Fai clic su Salva.
gcloud
Utilizza 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"
Consulta il riferimento gcloud run add-iam-policy-binding
per ulteriori informazioni su questi campi.
Condivisione limitata dei domini
Se stai sviluppando funzioni in un progetto soggetto al criterio dell'organizzazione per la condivisione limitata dei domini, non potrai consentire la chiamata non autenticata di una funzione. Questo criterio limita la condivisione dei dati pubblici per ridurre il rischio di esfiltrazione di dati.
Se vuoi eseguire il deployment di funzioni che consentono chiamate non autenticate, ti consigliamo di rimuovere dal progetto il criterio dell'organizzazione Condivisione limitata per i domini. I criteri dell'organizzazione possono essere impostati a livello di organizzazione, cartella o progetto.
Dopo aver creato le funzioni che consentono le chiamate non autenticate, il criterio dell'organizzazione può essere riattivato:
- Le funzioni di cui è stato eseguito il deployment prima della riattivazione del criterio dell'organizzazione continueranno a consentire chiamate non autenticate.
- È possibile eseguire il deployment di nuove versioni di queste funzioni esistenti senza richiedere una chiamata autenticata.
- Non è possibile eseguire il deployment di nuove funzioni che consentono chiamate non autenticate.