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 crearle, aggiornarle ed eliminarle. Aggiungi le entità (le identità che vuoi abilitare, di solito un indirizzo email utente o account di servizio) alla funzione, quindi concedi a tali 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 su una funzione concedendo o limitando ruoli a singole identità tramite IAM.

Aggiunta di entità e concessione di ruoli

Console

  1. Vai a Google Cloud Console:

    Vai a Google Cloud Console.

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

  3. Fai clic su Autorizzazioni nella parte superiore dello schermo. Viene aperto il riquadro Autorizzazioni.

  4. Fai clic su Aggiungi entità.

  5. Nel campo Nuove entità, inserisci una o più identità che devono accedere alla funzione. Si tratta in genere dell'email di un account utente o di un 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 concesse.

  7. Fai clic su Salva.

Cloud

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 di ruoli dalle entità

Console

  1. Vai a Google Cloud Console:

    Vai a Google Cloud Console.

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

  3. Fai clic su Autorizzazioni nella parte superiore dello schermo. Viene aperto il riquadro Autorizzazioni.

  4. Cerca l'entità che vuoi rimuovere. Guarda in ogni ruolo assegnato all'entità.

  5. Quando trovi l'entità nel ruolo che vuoi eliminare, fai clic sull'icona del cestino di fianco. Se vuoi rimuovere completamente l'accesso al preside, fallo per ogni ruolo che ti è stato concesso.

Cloud

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 di 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 o rimozione collettiva di entità

Console

  1. Vai a Google Cloud Console:

    Vai a Google Cloud Console.

  2. Fai clic sulle caselle di controllo accanto alle funzioni a cui vuoi concedere o limitare l'accesso.

  3. Fai clic su Autorizzazioni nella parte superiore dello schermo. Viene aperto il riquadro Autorizzazioni.

Se vuoi aggiungere entità:

  1. Fai clic su Aggiungi entità.

  2. In Nuove entità, inserisci più identità che devono accedere alla tua 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 concesse.

  4. Fai clic su Salva.

Se vuoi rimuovere le entità:

  1. Cerca l'entità che vuoi rimuovere o espandi un ruolo dell'entità.

  2. Quando trovi l'entità che vuoi eliminare, fai clic sull'icona del cestino di fianco. Se vuoi rimuovere completamente l'accesso al preside, fallo per ogni ruolo che ti è stato concesso.

Cloud

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 a Google Cloud Console:

    Vai a Google Cloud Console.

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

  3. Seleziona la scheda Autorizzazioni. Viene aperto il riquadro Autorizzazioni.

  4. Assicurati che la scheda Entità sia selezionata.

Cloud

Usa il comando gcloud functions get-iam-policy:

gcloud functions get-iam-policy FUNCTION_NAME

Consentire chiamate chiamata HTTP non autenticate

A partire dal 15 gennaio 2020, per impostazione predefinita tutte le funzioni HTTP richiedono l'autenticazione della maggior parte dei chiamanti. Per consentire una chiamata non autenticata, devi specificarla al momento 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 Configurazione.

Cloud

Il comando gcloud functions deploy include una richiesta per aiutarti a configurare le autorizzazioni di chiamata durante la creazione della funzione. Include anche 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 per la funzione:

Console

  1. Vai a Google Cloud Console:

    Vai a Google Cloud Console.

  2. Fai clic sulla casella di controllo accanto alla funzione a cui vuoi concedere l'accesso.

  3. Fai clic su Autorizzazioni nella parte superiore dello schermo. Viene aperto 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. Fai clic su Salva.

Cloud

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

Condivisione limitata dei domini

Se stai sviluppando funzioni in un progetto soggetto ai criteri dell'organizzazione per la condivisione limitata per i domini, non potrai consentire le chiamate non autenticate di una funzione. Questo criterio limita la condivisione pubblica dei dati per ridurre il rischio di esfiltrazione di dati.

Se vuoi eseguire il deployment di funzioni che consentono chiamate non autenticate, ti consigliamo di rimuovere il criterio dell'organizzazione di condivisione limitata per i domini nel progetto. 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, è possibile riattivare il criterio dell'organizzazione:

  • Le funzioni di cui è stato eseguito il deployment prima della riattivazione del criterio dell'organizzazione continueranno a consentire le chiamate non autenticate.
  • È possibile eseguire il deployment di nuove versioni di queste funzioni esistenti senza richiedere chiamate autenticate.
  • 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 su tutte le funzioni in un progetto, puoi concedere questi ruoli nel progetto.