Autorizza l'accesso con IAM

Utilizzi Identity and Access Management (IAM) per autorizzare le identità a eseguire azioni amministrative sulle funzioni create utilizzando l'API Cloud Functions v2, ad esempio utilizzando gcloud functions, l'API REST o Terraform. Le azioni di amministrazione includono la creazione, l'aggiornamento e l'eliminazione di funzioni. Per informazioni sull'accesso IAM per le funzioni create con Cloud Run, consulta Controllo dell'accesso con IAM.

In IAM, concedi agli enti (le identità che vuoi attivare, in genere un indirizzo email di un utente o di un account di servizio) i ruoli IAM appropriati per la funzione o il progetto. Questi ruoli includono le autorizzazioni che definiscono le azioni consentite all'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 il ruolo IAM Amministratore funzioni Cloud Run (roles/roles/cloudfunctions.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 l'autorizzazione cloudfunctions.functions.setIamPolicy necessaria per controllare l'accesso per una funzione specifica o per tutte le funzioni di un progetto.

Potresti anche ottenere questa autorizzazione con ruoli personalizzati o altri ruoli predefiniti.

Consulta la sezione Ruoli IAM delle funzioni Cloud Run per l'elenco completo dei ruoli delle funzioni Cloud Run e delle relative autorizzazioni associate.

Attivare 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

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 di origini che possono fornire un PRINCIPAL_ID, consulta Identificatori principali. Per un elenco dei valori accettabili per ROLE, consulta la pagina di riferimento dei ruoli IAM di Cloud Run Functions.

Rimozione dei ruoli dalle entità

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 origini accettabili per PRINCIPAL_ID, consulta Identificatori principali. Per un elenco dei possibili valori di ROLE, consulta la pagina di riferimento dei 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à

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 origini accettabili per PRINCIPAL_ID, consulta Identificatori principali. Per un elenco dei valori accettabili per ROLE, consulta la pagina di riferimento dei ruoli IAM delle funzioni Cloud Run.

Visualizzazione delle entità

Per visualizzare i principali, utilizza il comando gcloud functions get-iam-policy:

gcloud functions get-iam-policy FUNCTION_NAME

Consentire la chiamata delle funzioni HTTP non autenticate

A partire dal 15 gennaio 2020, le funzioni HTTP senza l'opzione Consenti chiamate non autenticate attivata limitano l'accesso agli utenti finali e agli account di servizio che non dispongono delle autorizzazioni appropriate.

Per consentire le chiamate non autenticate, devi specificarlo al momento o dopo il deployment.

Utilizza una variante speciale dell'approccio descritto in precedenza per concedere agli invocanti non autenticati la possibilità di invocare una funzione HTTP.

Al momento del deployment

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

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="allUsers"\
  --role="roles/run.invoker"

Per ulteriori informazioni su questi campi, consulta la sezione relativa al riferimento gcloud run add-iam-policy-binding.

Condivisione limitata dei domini

Se stai sviluppando funzioni in un progetto soggetto al criterio dell'organizzazione Condivisione limitata per i domini, non potrai consentire l'invocazione 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 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 l'invocazione non autenticata, puoi riattivare il criterio dell'organizzazione:

  • Le funzioni di cui è stato eseguito il deployment prima della riattivazione del criterio dell'organizzazione continueranno a consentire l'invocazione non autenticata.
  • Le nuove versioni di queste funzioni esistenti possono essere implementate senza richiedere l'invocazione autenticata.
  • Non è possibile implementare nuove funzioni che consentono chiamate non autenticate.