Autorizza l'accesso con IAM (1ª generazione)

Puoi utilizzare Identity and Access Management (IAM) per autorizzare le identità a eseguire azioni amministrative sulle funzioni, come crearle, aggiornarle ed eliminarle. Puoi aggiungere le entità (le identità da abilitare, in genere l'email di un account utente o di servizio) alla funzione, quindi concedere a queste entità i ruoli IAM appropriati. Questi ruoli includono autorizzazioni che definiscono le azioni che possono eseguire.

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 di ruoli

Console

  1. Vai alla console Google Cloud:

    Vai alla console Google Cloud

  2. Fai clic sulla casella di controllo accanto alla funzione che ti interessa.

  3. Fai clic su Autorizzazioni nella parte superiore dello schermo. Si apre il riquadro Autorizzazioni.

  4. Fai clic su Aggiungi entità.

  5. Nel campo Nuove entità, inserisci una o più identità che richiedono l'accesso alla funzione. In genere si tratta dell'indirizzo email di un account utente o di servizio.

  6. 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 che concedono.

  7. 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

  1. Vai alla console Google Cloud:

    Vai alla console Google Cloud

  2. Fai clic sulla casella di controllo accanto alla funzione che ti interessa.

  3. Fai clic su Autorizzazioni nella parte superiore dello schermo. Si apre il riquadro Autorizzazioni.

  4. Cerca l'entità da rimuovere. Cerca in ogni ruolo concesso all'entità.

  5. Quando trovi l'entità nel ruolo che vuoi eliminare, fai clic sull'icona del cestino accanto. Se vuoi rimuovere completamente l'accesso all'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 IAM. Per un elenco dei possibili valori per ROLE, consulta la pagina di riferimento per i ruoli IAM di Cloud Functions.

Se all'entità sono stati concessi più ruoli, assicurati di specificare quello da rimuovere.

Aggiunta collettiva di entità

Console

  1. Vai alla console Google Cloud:

    Vai alla console Google Cloud

  2. Fai clic sulle caselle di controllo accanto alle funzioni per le quali desideri concedere o limitare l'accesso.

  3. Fai clic su Autorizzazioni nella parte superiore dello schermo. Si apre il riquadro Autorizzazioni.

Per aggiungere entità:

  1. Fai clic su Aggiungi entità.

  2. Nel campo Nuove entità, inserisci più identità che richiedono l'accesso alla funzione.

  3. 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 che concedono.

  4. 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 IAM. Per un elenco dei valori accettabili per ROLE, consulta la pagina di riferimento dei ruoli IAM di Cloud Functions.

Visualizzazione delle entità

Console

  1. Vai alla console Google Cloud:

    Vai alla console Google Cloud

  2. Fai clic sul nome della funzione che ti interessa.

  3. Seleziona la scheda Autorizzazioni. Si apre il riquadro Autorizzazioni.

  4. 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 l'abilitazione dell'opzione Consenti chiamate non autenticate limitano l'accesso a utenti finali e account di servizio che non hanno 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 agli invoker 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 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

Per consentire la chiamata non autenticata di una funzione, concedi il ruolo Invoker di Cloud Functions all'entità allUsers speciale sulla funzione:

Console

  1. Vai alla console Google Cloud:

    Vai alla console Google Cloud

  2. Fai clic sulla casella di controllo accanto alla funzione di ricezione. Non fare clic sulla funzione stessa.

  3. Fai clic su Autorizzazioni nella parte superiore dello schermo. Si apre il riquadro Autorizzazioni.

  4. Fai clic su Aggiungi entità.

  5. Nel campo Nuove entità, digita allUsers.

  6. Seleziona il ruolo Cloud Functions > Invoker di Cloud Functions dal menu a discesa Seleziona un ruolo.

  7. 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"

Per ulteriori informazioni su questi campi, consulta la documentazione di riferimento di gcloud functions add-iam-policy-binding.

Condivisione limitata dei domini

Se stai sviluppando funzioni in un progetto soggetto al criterio 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 di dati.

Se vuoi eseguire il deployment di funzioni che consentono chiamate non autenticate, ti consigliamo di rimuovere dal progetto il criterio dell'organizzazione relativo alla condivisione limitata per i domini. I criteri dell'organizzazione possono essere impostati a livello di organizzazione, cartella o progetto.

Una volta create le funzioni che consentono la chiamata non autenticata, il criterio dell'organizzazione può essere riattivato:

  • Le funzioni di cui è stato eseguito il deployment prima di riattivare il criterio dell'organizzazione continueranno a consentire le chiamate non autenticate.
  • È possibile eseguire il deployment delle nuove versioni di queste funzioni esistenti senza richiedere una chiamata autenticata.
  • Non è possibile eseguire il deployment di nuove funzioni che consentono chiamate non autenticate.

Controllo dell'accesso a tutte le funzioni in un progetto

Se vuoi concedere ruoli per tutte le funzioni di un progetto, puoi concedere questi ruoli nel progetto.