Autorizzare 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 alle entità (le identità che vuoi attivare, di solito un utente o un indirizzo email di un account di servizio) i ruoli IAM appropriati per la funzione o il progetto. Questi ruoli includono autorizzazioni che definiscono le azioni che l'entità può eseguire.

Prima di iniziare

Per ottenere l'autorizzazione necessaria per controllare l'accesso per una funzione specifica o per tutte le funzioni di un progetto, chiedi all'amministratore di concederti il ruolo IAM Cloud Functions Admin (roles/roles/cloudfunctions.admin) nella funzione o nel progetto. Per saperne di più sulla concessione dei ruoli, consulta Gestisci 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 Ruoli IAM per Cloud Functions per l'elenco completo dei ruoli e delle relative autorizzazioni.

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

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à, di solito un'email, e ROLE è il ruolo.

Per un elenco delle origini che possono fornire un PRINCIPAL_ID, consulta la sezione Identificatori principal. Per un elenco dei valori accettabili per ROLE, consulta la pagina di riferimento dei ruoli IAM.

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

Se all'entità 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 di valori accettabili per ROLE, consulta la pagina di riferimento dei ruoli IAM.

Visualizzare le entità

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

gcloud functions get-iam-policy FUNCTION_NAME

Consentire la chiamata delle funzioni HTTP non autenticate

Per consentire le 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 chiamare una funzione HTTP.

Se sviluppi funzioni in un progetto soggetto al criterio dell'organizzazione Condivisione limitata per i domini, non potrai consentire la chiamata non autenticata di una funzione.

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

Le implementazioni successive 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 il riferimento gcloud run add-iam-policy-binding.