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 alle entità (ossia le identità che vuoi attivare, di solito un utente o un indirizzo email di un service account) 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 a una funzione specifica o a 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 a una funzione specifica o a tutte le funzioni di un progetto.

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

Consulta Ruoli IAM di Cloud Functions per l'elenco completo dei ruoli e delle relative autorizzazioni.

Attivazione dell'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 dei 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 Identificatori delle entità. 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 service account, preceduto da serviceAccount:, e ROLE è il ruolo.

Per un elenco delle origini accettabili per PRINCIPAL_ID, consulta Identificatori delle entità. 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 una policy IAM denominata, 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 delle entità. Per un elenco dei valori accettabili per ROLE, consulta la pagina di riferimento dei ruoli IAM.

Visualizzazione delle entità

Per visualizzare le entità, utilizza il comando gcloud functions get-iam-policy:

gcloud functions get-iam-policy FUNCTION_NAME

Consentire la chiamata di 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 autori di chiamate non autenticati la possibilità di chiamare una funzione HTTP.

Se sviluppi funzioni in un progetto soggetto alla policy dell'organizzazione Condivisione limitata dei 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.