Controllo dell'accesso con IAM

Managed Airflow (Gen 3) | Managed Airflow (Gen 2) | Managed Airflow (Legacy Gen 1)

Questa pagina descrive le opzioni di controllo dell'accesso disponibili in Managed Airflow e spiega come concedere i ruoli.

Per informazioni sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Con il controllo dell'accesso alla UI di Airflow, puoi controllare le autorizzazioni per la UI di Airflow e la UI DAG oltre ad abilitare o disabilitare l'accesso.

Informazioni su Identity and Access Management in Managed Airflow

Managed Airflow utilizza Identity and Access Management (IAM) per il controllo dell'accesso.

Controlli l'accesso alle diverse funzionalità di Managed Airflow concedendo ruoli e autorizzazioni sia per i service account IAM sia per gli account utente nel tuo progetto Google Cloud .

Managed Airflow utilizza due tipi di service account IAM:

Oltre a questi due tipi di account di servizio, l'agente di servizio API di Google esegue processi interni di Google per tuo conto.

Concedi ruoli all'account service agent di Managed Airflow

Nel tuo progetto Google Cloud , il servizio Managed Airflow crea un service agent, l'agente di servizio Managed Airflow, per gestire le risorse correlate a Managed Airflow.

Il service agent Managed Airflow viene utilizzato per tutti gli ambienti del tuo progetto. Per impostazione predefinita, l'account del service agent Managed Airflow dispone solo del ruolo service agent API Cloud Composer. Mantieni questo ruolo su questoaccount di serviziot.

Concedere ruoli al account di servizio di un ambiente

Quando crei un ambiente, specifichi un account di servizio. Questo service account è chiamato service account dell'ambiente. Non puoi modificare il account di servizio specificato dopo la creazione di un ambiente.

Il tuo ambiente utilizza questo account di servizio per eseguire la maggior parte delle operazioni, ad esempio:

  • Esecuzione di pod con diversi componenti dell'ambiente, come worker e scheduler Airflow, nel cluster del tuo ambiente.

  • Esecuzione di DAG per conto di questo account di servizio. Ad esempio, se un DAG accede a un altro servizio Google, questa operazione viene eseguita per conto dell'account di servizio.

  • Creazione delle immagini dei componenti Airflow quando i pacchetti PyPI personalizzati sono installati nell'ambiente.

  • Lettura e scrittura di oggetti nel bucket dell'ambiente. Ad esempio, quando sincronizzi i file tra il bucket dell'ambiente e i componenti Airflow.

  • Esecuzione di pod avviati tramite KubernetesPodOperator e GKEStartPodOperator.

Service account esistenti e personalizzati per il tuo ambiente

Ti consigliamo vivamente di configurare un service account gestito dall'utente e di utilizzarlo per gli ambienti Managed Airflow. Ecco come fare:

  1. Crea un nuovo service account come descritto nella documentazione di Identity and Access Management.

  2. Concedi il ruolo Worker Composer (composer.worker).

  3. Se il tuo ambiente utilizza restrizioni relative alla località delle risorse o installa pacchetti PyPI da un repository Artifact Registry o da un repository privato, concedi il ruolo Utente service account (iam.serviceAccountUser) all'service account gestito dall'utente che esegue il tuo ambiente su se stesso (sia l'entità che la risorsa sono lo stesso account di servizio).

  4. Per accedere ad altre risorse nel tuo Google Cloud progetto, concedi a questo account di servizio autorizzazioni aggiuntive per accedere a queste risorse. Il ruolo Worker Composer (composer.worker) fornisce questo insieme richiesto di autorizzazioni nella maggior parte dei casi. Aggiungi autorizzazioni aggiuntive a questo account di servizio solo quando è necessario per il funzionamento dei tuoi DAG.

Considerazioni sulla sicurezza per i service account dell'ambiente

  • Ti consigliamo vivamente di configurare un service account gestito dall'utente per gli ambienti Managed Airflow che dispongono solo del set richiesto di autorizzazioni necessarie per eseguire l'ambiente ed eseguire le operazioni definite nei DAG. Il ruolo Worker Composer (composer.worker) fornisce questo insieme di autorizzazioni richieste nella maggior parte dei casi. Aggiungi autorizzazioni aggiuntive a questo account di servizio solo quando è necessario per il funzionamento dei tuoi DAG.

  • È possibile creare ambienti Airflow gestiti che utilizzano l'account di servizio predefinito di Compute Engine. Questo account di solito ha più autorizzazioni di quelle necessarie per eseguire ambienti Managed Airflow o DAG. Poiché il tuo ambiente esegue i DAG per conto del suo account di servizio, ciò crea il rischio che i DAG utilizzino autorizzazioni più ampie del previsto. Allo stesso tempo, spesso non è possibile ridurre le autorizzazioni di questoaccount di serviziot senza influire su altri servizi che potrebbero utilizzarlo nel tuo progetto. In alternativa, configura un service account gestito dall'utente.

  • Assicurati di concedere l'accesso in lettura e scrittura al bucket del tuo ambiente solo agli utenti attendibili.

    Poiché l'account di servizio dell'ambiente viene utilizzato per eseguire i DAG, gli utenti che possono aggiungere e modificare i DAG (o altri oggetti come le dipendenze Python) nel bucket dell'ambiente possono eseguire il proprio codice per conto dell'account di servizio dell'ambiente e accedere a tutte le relative autorizzazioni tramite il deployment delle proprie versioni dei DAG. Ciò potrebbe accadere anche se i loro account utente non dispongono di ruoli e autorizzazioni espliciti relativi a Managed Airflow che consentono queste azioni.

  • Assicurati di consentire solo agli utenti attendibili di aggiornare gli ambienti nel tuo progetto.

    L'composer.environments.update autorizzazione può essere utilizzata non solo per applicare modifiche alla configurazione. Fornisce un ampio controllo sulle risorse di Managed Airflow, inclusa l'esecuzione del codice per conto del account di servizio dell'ambiente, che può esercitare tutte le autorizzazioni di cui dispone questo account di servizio. Ad esempio, l'installazione dei pacchetti PyPI comporta l'esecuzione del codice Python dal pacchetto. Come altro esempio, le variabili di ambiente potrebbero essere utilizzate per archiviare il codice da eseguire da un DAG o per indicare una posizione con questo codice.

  • Assicurati di consentire solo agli utenti attendibili di eseguire i comandi dell'interfaccia a riga di comando di Airflow nel tuo progetto.

    L'autorizzazione composer.environments.executeairflowcommand può essere utilizzata per eseguire il codice Python disponibile per i componenti Airflow per conto del account di servizio dell'ambiente.

Concedere ruoli agli utenti

Per attivare un'operazione sull'ambiente, un utente deve disporre di autorizzazioni sufficienti. Ad esempio, se vuoi creare un nuovo ambiente, devi disporre dell'autorizzazione composer.environments.create.

Per Managed Airflow, le singole autorizzazioni sono raggruppate in ruoli predefiniti. Puoi concedere questi ruoli alle entità.

Se il tuo account utente ha il ruolo Editor progetto, puoi eseguire tutte le operazioni sull'ambiente. Tuttavia, questo ruolo dispone di autorizzazioni ampie. Per gli utenti che lavorano con gli ambienti, consigliamo di utilizzare ruoli specifici per Managed Airflow. In questo modo, puoi restringere l'ambito delle autorizzazioni e fornire diversi livelli di accesso a diverse entità. Ad esempio, un utente può disporre delle autorizzazioni per creare, aggiornare, eseguire l'upgrade ed eliminare gli ambienti, mentre un altro utente può solo visualizzare gli ambienti e accedere all'interfaccia web di Airflow.

A seconda del livello di accesso che vuoi fornire agli ambienti Managed Airflow, concedi le seguenti autorizzazioni ai principal.

Gestire gli ambienti e i bucket degli ambienti

Per un utente che può visualizzare, creare, aggiornare, eseguire l'upgrade ed eliminare gli ambienti, gestire gli oggetti (come i file DAG) nei bucket dell'ambiente, accedere all'interfaccia web di Airflow, eseguire i comandi dell'interfaccia a riga di comando di Airflow, visualizzare e attivare i DAG dall'interfaccia utente DAG:

  1. Concedi il ruolo Environment and Storage Object Administrator (composer.environmentAndStorageObjectAdmin).

  2. Concedi il ruolo Service Account User (iam.serviceAccountUser).

    Per limitare le autorizzazioni per un utente, concedi questo ruolo solo al service account del tuo ambiente. Per maggiori informazioni, vedi Concedere o revocare un singolo ruolo.

  3. Concedi l'autorizzazione iam.serviceAccounts.actAs al service account del tuo ambiente.

Gestisci gli ambienti

Per un utente che può visualizzare, creare, aggiornare, eseguire l'upgrade ed eliminare gli ambienti, accedere all'interfaccia web di Airflow, eseguire i comandi dell'interfaccia a riga di comando di Airflow, visualizzare e attivare i DAG dalla UI DAG:

  1. Concedi il ruolo Amministratore Composer (composer.admin).

  2. Concedi il ruolo Service Account User (iam.serviceAccountUser).

    Per limitare le autorizzazioni per un utente, concedi questo ruolo solo al service account del tuo ambiente. Per maggiori informazioni, vedi Concedere o revocare un singolo ruolo.

  3. Concedi l'autorizzazione iam.serviceAccounts.actAs al service account del tuo ambiente.

Visualizzare gli ambienti e gestire i bucket degli ambienti

Per un utente che può visualizzare gli ambienti, accedere all'interfaccia web di Airflow, visualizzare e attivare i DAG dalla UI DAG e gestire gli oggetti nei bucket dell'ambiente (ad esempio, per caricare nuovi file DAG):

  1. Concedi il ruolo Environment User and Storage Object Viewer (composer.environmentAndStorageObjectViewer).

  2. Concedi il ruolo Amministratore oggetti Storage (storage.objectAdmin).

Visualizzare gli ambienti e i bucket di ambiente

Per un utente che può visualizzare gli ambienti, accedere all'interfaccia web di Airflow, visualizzare e attivare i DAG dall'interfaccia utente DAG e visualizzare gli oggetti nei bucket dell'ambiente, concedi il ruolo Utente ambiente e Visualizzatore oggetti Storage (composer.environmentAndStorageObjectViewer).

Visualizzare gli ambienti

Per un utente che può visualizzare gli ambienti, visualizzare e attivare i DAG dall'interfaccia utente DAG e accedere all'interfaccia web di Airflow, concedi il ruolo Utente Composer (composer.user).

Ruoli

Role Permissions

(roles/composer.admin)

Provides full control of Managed Airflow resources.

Lowest-level resources where you can grant this role:

  • Project

cloudkms.keyHandles.*

  • cloudkms.keyHandles.create
  • cloudkms.keyHandles.get
  • cloudkms.keyHandles.list

cloudkms.operations.get

cloudkms.projects.showEffectiveAutokeyConfig

composer.*

  • composer.dags.execute
  • composer.dags.get
  • composer.dags.getSourceCode
  • composer.dags.list
  • composer.environments.create
  • composer.environments.createTagBinding
  • composer.environments.delete
  • composer.environments.deleteTagBinding
  • composer.environments.executeAirflowCommand
  • composer.environments.get
  • composer.environments.list
  • composer.environments.listEffectiveTags
  • composer.environments.listTagBindings
  • composer.environments.update
  • composer.imageversions.list
  • composer.operations.delete
  • composer.operations.get
  • composer.operations.list
  • composer.userworkloadsconfigmaps.create
  • composer.userworkloadsconfigmaps.delete
  • composer.userworkloadsconfigmaps.get
  • composer.userworkloadsconfigmaps.list
  • composer.userworkloadsconfigmaps.update
  • composer.userworkloadssecrets.create
  • composer.userworkloadssecrets.delete
  • composer.userworkloadssecrets.get
  • composer.userworkloadssecrets.list
  • composer.userworkloadssecrets.update

serviceusage.consumerpolicy.analyze

serviceusage.consumerpolicy.get

serviceusage.effectivepolicy.get

serviceusage.groups.*

  • serviceusage.groups.list
  • serviceusage.groups.listExpandedMembers
  • serviceusage.groups.listMembers

serviceusage.quotas.get

serviceusage.services.get

serviceusage.services.list

serviceusage.values.test

(roles/composer.editor)

Editor role for Composer

composer.dags.*

  • composer.dags.execute
  • composer.dags.get
  • composer.dags.getSourceCode
  • composer.dags.list

composer.environments.create

composer.environments.delete

composer.environments.executeAirflowCommand

composer.environments.get

composer.environments.list

composer.environments.listEffectiveTags

composer.environments.listTagBindings

composer.environments.update

composer.imageversions.list

composer.operations.*

  • composer.operations.delete
  • composer.operations.get
  • composer.operations.list

composer.userworkloadsconfigmaps.*

  • composer.userworkloadsconfigmaps.create
  • composer.userworkloadsconfigmaps.delete
  • composer.userworkloadsconfigmaps.get
  • composer.userworkloadsconfigmaps.list
  • composer.userworkloadsconfigmaps.update

composer.userworkloadssecrets.*

  • composer.userworkloadssecrets.create
  • composer.userworkloadssecrets.delete
  • composer.userworkloadssecrets.get
  • composer.userworkloadssecrets.list
  • composer.userworkloadssecrets.update

resourcemanager.projects.get

resourcemanager.projects.list

(roles/composer.user)

Provides the permissions necessary to list and get Managed Airflow environments and operations.

Lowest-level resources where you can grant this role:

  • Project

composer.dags.*

  • composer.dags.execute
  • composer.dags.get
  • composer.dags.getSourceCode
  • composer.dags.list

composer.environments.get

composer.environments.list

composer.imageversions.list

composer.operations.get

composer.operations.list

composer.userworkloadsconfigmaps.get

composer.userworkloadsconfigmaps.list

composer.userworkloadssecrets.get

composer.userworkloadssecrets.list

serviceusage.consumerpolicy.analyze

serviceusage.consumerpolicy.get

serviceusage.effectivepolicy.get

serviceusage.groups.*

  • serviceusage.groups.list
  • serviceusage.groups.listExpandedMembers
  • serviceusage.groups.listMembers

serviceusage.quotas.get

serviceusage.services.get

serviceusage.services.list

serviceusage.values.test

(roles/composer.viewer)

Viewer role for Composer

composer.dags.get

composer.dags.getSourceCode

composer.dags.list

composer.environments.get

composer.environments.list

composer.environments.listEffectiveTags

composer.environments.listTagBindings

composer.imageversions.list

composer.operations.get

composer.operations.list

composer.userworkloadsconfigmaps.get

composer.userworkloadsconfigmaps.list

composer.userworkloadssecrets.get

composer.userworkloadssecrets.list

resourcemanager.projects.get

resourcemanager.projects.list

(roles/composer.ServiceAgentV2Ext)

Cloud Composer v2 API Service Agent Extension is a supplementary role required to manage Composer v2 environments.

iam.serviceAccounts.getIamPolicy

iam.serviceAccounts.setIamPolicy

(roles/composer.environmentAndStorageObjectAdmin)

Provides full control of Managed Airflow resources and of the objects in all project buckets.

Lowest-level resources where you can grant this role:

  • Project

cloudkms.keyHandles.*

  • cloudkms.keyHandles.create
  • cloudkms.keyHandles.get
  • cloudkms.keyHandles.list

cloudkms.operations.get

cloudkms.projects.showEffectiveAutokeyConfig

composer.*

  • composer.dags.execute
  • composer.dags.get
  • composer.dags.getSourceCode
  • composer.dags.list
  • composer.environments.create
  • composer.environments.createTagBinding
  • composer.environments.delete
  • composer.environments.deleteTagBinding
  • composer.environments.executeAirflowCommand
  • composer.environments.get
  • composer.environments.list
  • composer.environments.listEffectiveTags
  • composer.environments.listTagBindings
  • composer.environments.update
  • composer.imageversions.list
  • composer.operations.delete
  • composer.operations.get
  • composer.operations.list
  • composer.userworkloadsconfigmaps.create
  • composer.userworkloadsconfigmaps.delete
  • composer.userworkloadsconfigmaps.