Autorizza l'accesso con IAM
Utilizza Identity and Access Management (IAM) per autorizzare le identità da eseguire
azioni amministrative su funzioni create utilizzando
API Cloud Functions v2, ad esempio utilizzando
gcloud functions
, l'API REST o Terraform. Le azioni di amministrazione includono
e creazione, aggiornamento ed eliminazione di funzioni. Per informazioni sull'accesso IAM
per le funzioni create con Cloud Run, consulta
Controllo dell'accesso con IAM.
In IAM, concedi le entità (le identità che vuoi abilitare, in genere l'indirizzo email di un utente o di un account di servizio), l'app I ruoli IAM nella funzione o progetto. Questi ruoli includono le autorizzazioni che definiscono le azioni dell'entità.
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
Ruolo IAM Amministratore funzioni Cloud Run (roles/function.admin
) per la funzione o il progetto.
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.
Questo ruolo predefinito contiene
cloudfunctions.functions.setIamPolicy
autorizzazione,
che è obbligatorio
controllare l'accesso per una funzione specifica o per tutte le funzioni di un progetto.
Potresti anche riuscire a ottenere questa autorizzazione con ruoli personalizzati e altri ruoli predefiniti.
Consulta i ruoli IAM delle funzioni di Cloud Run per l'elenco completo dei ruoli delle funzioni Cloud Run e delle autorizzazioni associate.
Abilitare l'accesso a una funzione
Puoi controllare le azioni su 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. Riquadro Autorizzazioni si apre.
Fai clic su Aggiungi entità.
Nel campo Nuove entità, inserisci una o più identità che devono alla funzione. Di solito si tratta di un 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 le autorizzazioni che concedono.
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
Il ruolo è ROLE
.
Per un elenco di fonti che possono fornire un PRINCIPAL_ID
, consulta
nella pagina dei concetti IAM.
Per un elenco dei valori accettabili per ROLE
, consulta:
la pagina di riferimento per i ruoli IAM di Cloud Run 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. Riquadro Autorizzazioni si apre.
Cerca l'entità da rimuovere. Controlla tutti i ruoli assegnati all'entità.
Una volta trovata l'entità nel ruolo che vuoi eliminare, fai clic sull'icona accanto all'icona del cestino. Se vuoi rimuovere completamente il l'accesso dell'entità, esegui questa operazione per ogni ruolo concesso.
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 Concetti alla base di IAM.
Per un elenco dei possibili valori per ROLE
, consulta
la pagina di riferimento per i ruoli IAM di Cloud Run Functions.
Se all'entità principale 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 alle quali desideri concedere o limitare l'accesso.
Fai clic su Autorizzazioni nella parte superiore dello schermo. Riquadro Autorizzazioni si apre.
Per aggiungere entità:
Fai clic su Aggiungi entità.
Nel campo Nuove entità, inserisci più identità che devono alla funzione.
Seleziona uno o più ruoli dal menu a discesa Seleziona un ruolo. I ruoli selezionati vengono visualizzati nel riquadro con una breve descrizione le autorizzazioni che concedono.
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 di origini accettabili per PRINCIPAL_ID
, consulta:
nella pagina dei concetti IAM.
Per un elenco dei valori accettabili per ROLE
, consulta la pagina di riferimento dei ruoli IAM delle funzioni Cloud Run.
Visualizzazione delle entità
Console
Vai alla console Google Cloud:
Fai clic sul nome della funzione che ti interessa.
Seleziona la scheda Autorizzazioni. Riquadro Autorizzazioni si apre.
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 la chiamata a funzione HTTP non autenticata
A partire dal 15 gennaio 2020, le funzioni HTTP senza Consenti chiamate non autenticate attivata la limitazione dell'accesso agli utenti finali e agli account di servizio che non dispongono le autorizzazioni appropriate.
Per consentire chiamate non autenticate, devi specificarlo durante o dopo il deployment.
Utilizzi una variante speciale dell'approccio descritto in precedenza per concedere i dati invoca la capacità di richiamare una funzione HTTP.
Al momento del deployment
Console
Seleziona Consenti chiamate non autenticate nella sezione Autenticazione. del riquadro Attivatore.
gcloud
Il comando gcloud functions deploy
include un prompt per
ti aiutano a configurare le autorizzazioni per la chiamata durante la creazione della funzione. Può anche
includi --allow-unauthenticated
Segnala:
gcloud functions deploy FUNCTION_NAME \ --trigger-http \ --allow-unauthenticated \ ...
I deployment successivi della stessa funzione non ne modificano lo stato, anche se non usi questo flag.
Dopo il deployment
Console
Vai alla console Google Cloud:
Fai clic sul nome collegato della funzione a cui vuoi concedere l'accesso.
Fai clic sul link Basata su Cloud Run nell'angolo in alto a destra della pagina Panoramica dei dettagli della funzione.
Apri la scheda Security (Sicurezza) e, in Authentication (Autenticazione), seleziona Consenti chiamate non autenticate.
Fai clic su Salva.
gcloud
Utilizza il comando gcloud run services add-iam-policy-binding
per concedere
roles/run.invoker
alla funzione specifica.
gcloud run services add-iam-policy-binding FUNCTION_NAME \ --member="user:USER_EMAIL"\ --role="roles/run.invoker"
Consulta le
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 alle Criterio dell'organizzazione per la condivisione limitata per i domini non potrai consentire il richiamo non autenticato 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 l'invocazione non autenticata, ti consigliamo di rimuovere il criterio dell'organizzazione Condivisione limitata per i domini dal progetto. I criteri dell'organizzazione possono essere impostati a livello di organizzazione, cartella o progetto.
Dopo aver creato le funzioni che consentono chiamate non autenticate, è possibile riattivare il criterio dell'organizzazione:
- Le funzioni di cui è stato eseguito il deployment prima della riattivazione del criterio dell'organizzazione per continuare a consentire le chiamate non autenticate.
- È possibile eseguire il deployment delle nuove versioni di queste funzioni esistenti senza richiedere chiamata autenticata.
- Non è possibile eseguire il deployment di nuove funzioni che consentono chiamate non autenticate.