Utilizzare il controllo dell'accesso all'interfaccia utente di Airflow

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

Questa pagina descrive diversi meccanismi di controllo dell'accesso dell'accesso per la UI di Airflow e la UI DAG. Puoi utilizzare questi meccanismi, oltre al controllo dell'accesso dell'accesso fornito da IAM, per separare gli utenti nell'interfaccia utente Airflow e nell'interfaccia utente DAG del tuo ambiente.

Panoramica del controllo dell'accesso alla UI di Airflow in Cloud Composer

L'accesso all'interfaccia utente di Airflow e all'interfaccia utente DAG e la visibilità dei dati e delle operazioni in queste interfacce utente sono controllati a due livelli in Cloud Composer:

  1. L'accesso all'interfaccia utente di Airflow e all'interfaccia utente DAG in Cloud Composer è controllato da IAM.

    Se un account non dispone di un ruolo che può visualizzare gli ambienti Cloud Composer nel tuo progetto, l'interfaccia utente di Airflow e l'interfaccia utente DAG non sono disponibili.

    IAM non fornisce alcun controllo granulare aggiuntivo delle autorizzazioni nella UI di Airflow o DAG.

  2. Il modello di controllo dell'accesso di Apache Airflow consente di ridurre la visibilità nell'interfaccia utente di Airflow e nell'interfaccia utente DAG in base al ruolo utente.

    Il controllo dell'accesso di Apache Airflow è una funzionalità di Airflow, con un proprio modello di utenti, ruoli e autorizzazioni, diverso da IAM.

Il controllo dell'accesso di Apache Airflow utilizza autorizzazioni basate sulle risorse. Tutti gli utenti Airflow con un ruolo Airflow specifico ottengono le autorizzazioni di questo ruolo. Ad esempio, gli utenti Airflow che hanno un ruolo con l'autorizzazione can delete on Connections possono eliminare le connessioni nella pagina Connessioni dell'interfaccia utente di Airflow.

Puoi anche assegnare autorizzazioni a livello di DAG per singoli DAG. Ad esempio, in modo che solo gli utenti con un ruolo Airflow specifico possano visualizzare un determinato DAG nell'UI di Airflow. In Cloud Composer puoi assegnare automaticamente le autorizzazioni a livello di DAG in base alla sottocartella in cui si trova il file DAG nel bucket dell'ambiente.

Prima di iniziare

  • L'interfaccia utente di Airflow con controllo dell'accesso è disponibile per Cloud Composer versione 1.13.4 o successive e Airflow 1.10.10 e versioni successive. L'ambiente deve anche eseguire Python 3.

  • La registrazione dei ruoli per cartella è disponibile in Cloud Composer 1.18.12 e versioni successive in Airflow 2 e in Cloud Composer 1.13.4 e versioni successive in Airflow 1.

Abilita il controllo dell'accesso all'interfaccia utente di Airflow

Airflow 2

La UI di Airflow con il controllo dell'accesso è sempre attiva in Airflow 2.

Airflow 1

Per abilitare l'interfaccia utente di Airflow con il controllo dell'accesso, esegui l'override della seguente opzione di configurazione di Airflow:

Sezione Chiave Valore
webserver rbac True

Puoi farlo per un ambiente esistente o quando crei un nuovo ambiente.

Con questa configurazione, l'ambiente esegue la UI di Airflow con il controllo dell'accesso anziché la UI di Airflow classica.

Gestire i ruoli Airflow e le impostazioni di controllo dell'accesso

Gli utenti con il ruolo Amministratore (o equivalente) possono visualizzare e modificare le impostazioni di controllo dell'accesso dell'accesso nell'interfaccia utente di Airflow.

Nell'interfaccia utente di Airflow, puoi configurare le impostazioni di controllo dell'accesso dell'accesso dal menu Sicurezza. Per ulteriori informazioni sul modello di controllo dell'accesso di Airflow, sulle autorizzazioni disponibili e sui ruoli predefiniti, consulta la documentazione sul controllo dell'accesso all'interfaccia utente di Airflow.

Airflow 1 considera il ruolo Utente come modello per tutti i ruoli personalizzati. Airflow copia continuamente le autorizzazioni dal ruolo utente a tutti i ruoli personalizzati, ad eccezione delle autorizzazioni per all_dags.

Airflow gestisce un proprio elenco di utenti. Gli utenti con il ruolo di amministratore (o equivalente) possono visualizzare l'elenco degli utenti che hanno aperto la UI di Airflow di un ambiente e sono stati registrati in Airflow. Questo elenco include anche gli utenti pre-registrati manualmente da un amministratore, come descritto nella sezione seguente.

Registrare utenti nell'UI di Airflow

I nuovi utenti vengono registrati automaticamente quando aprono la UI di Airflow di un ambiente Cloud Composer per la prima volta.

Al momento della registrazione, agli utenti viene concesso il ruolo specificato nell'opzione di configurazione di Airflow [webserver]rbac_user_registration_role. Puoi controllare il ruolo degli utenti appena registrati ignorando questa opzione di configurazione di Airflow con un valore diverso.

Se non specificato, il ruolo di registrazione predefinito è Op negli ambienti con Airflow 2.

Negli ambienti con Airflow 1.10.*, il ruolo di registrazione predefinito è Admin.

Per creare una configurazione di base dei ruoli per l'interfaccia utente di Airflow, ti consigliamo di seguire questi passaggi:

Airflow 2

  1. Gli amministratori dell'ambiente aprono l'interfaccia utente di Airflow per l'ambiente appena creato.

  2. Concedi agli account amministratore il ruolo Admin. Il ruolo predefinito per i nuovi account negli ambienti con Airflow 2 è Op. Per assegnare il ruolo Admin, esegui il seguente comando dell'interfaccia a riga di comando di Airflow con gcloud CLI:

      gcloud composer environments run ENVIRONMENT_NAME \
        --location LOCATION \
        users add-role -- -e USER_EMAIL -r Admin
    

    Sostituisci:

    • ENVIRONMENT_NAME con il nome dell'ambiente.
    • LOCATION con la regione in cui si trova l'ambiente.
    • USER_EMAIL con l'email di un account utente.
  3. Gli amministratori ora possono configurare il controllo dell'accesso#39;accesso per i nuovi utenti, inclusa la concessione del ruolo Admin ad altri utenti.

Airflow 1

  1. Gli amministratori dell'ambiente aprono la UI di Airflow per l'ambiente appena creato, in cui vengono registrati automaticamente con il ruolo Admin.

  2. Esegui l'override della seguente opzione di configurazione di Airflow con il ruolo richiesto per i nuovi utenti. Ad esempio, a User.

    Sezione Chiave Valore
    webserver rbac_user_registration_role User o un altro ruolo non amministrativo
  3. Gli amministratori ora possono configurare il controllo dell'accesso di Airflow per i nuovi utenti, inclusa la concessione del ruolo Admin ad altri utenti.

Utenti preregistrati

Gli utenti vengono registrati automaticamente con ID numerici degli account utente Google (non indirizzi email) come nomi utente. Puoi anche preregistrare manualmente un utente e assegnargli un ruolo aggiungendo un record utente con il campo del nome utente impostato sull'indirizzo email principale dell'utente. Quando un utente con un indirizzo email corrispondente a un record utente preregistrato accede per la prima volta all'interfaccia utente di Airflow, il suo nome utente viene sostituito con l'ID utente attualmente (al momento del primo accesso) identificato dal suo indirizzo email. La relazione tra identità Google (indirizzi email) e account utente (ID utente) non è fissa. I gruppi Google non possono essere preregistrati.

Per preregistrare gli utenti, puoi utilizzare la UI di Airflow o eseguire un comando Airflow CLI tramite Google Cloud CLI.

Per preregistrare un utente con un ruolo personalizzato tramite Google Cloud CLI, esegui il seguente comando dell'interfaccia a riga di comando di Airflow:

gcloud composer environments run ENVIRONMENT_NAME \
  --location LOCATION \
  users create -- \
  -r ROLE \
  -e USER_EMAIL \
  -u USER_EMAIL \
  -f FIRST_NAME \
  -l LAST_NAME \
  --use-random-password # The password value is required, but is not used

Sostituisci quanto segue:

  • ENVIRONMENT_NAME: il nome dell'ambiente
  • LOCATION: la regione in cui si trova l'ambiente
  • ROLE: un ruolo Airflow per l'utente, ad esempio Op
  • USER_EMAIL: l'indirizzo email dell'utente
  • FIRST_NAME e LAST_NAME: nome e cognome dell'utente

Esempio:

gcloud composer environments run example-environment \
  --location us-central1 \
  users create -- \
  -r Op \
  -e "example-user@example.com" \
  -u "example-user@example.com" \
  -f "Name" \
  -l "Surname" \
  --use-random-password

Rimuovi utenti

L'eliminazione di un utente da Airflow non revoca l'accesso per quell'utente, perché viene registrato di nuovo automaticamente la volta successiva che accede all'interfaccia utente di Airflow. Per revocare l'accesso all'intera UI di Airflow, rimuovi l'autorizzazione composer.environments.get dal criterio di autorizzazione per il tuo progetto.

Puoi anche modificare il ruolo dell'utente in Pubblico, che mantiene la registrazione dell'utente, ma rimuove tutte le autorizzazioni per la UI di Airflow.

Configurare automaticamente le autorizzazioni a livello di DAG

La funzionalità di registrazione dei ruoli per cartella crea automaticamente un ruolo Airflow personalizzato per ogni sottocartella direttamente all'interno della cartella /dags e concede a questo ruolo l'accesso a livello di DAG a tutti i DAG il cui file di origine è archiviato nella rispettiva sottocartella. Questo semplifica la gestione dei ruoli Airflow personalizzati e del loro accesso ai DAG.

Come funziona la registrazione dei ruoli per cartella

La registrazione dei ruoli per cartella è un modo automatizzato per configurare i ruoli e le relative autorizzazioni a livello di DAG. Pertanto, può causare conflitti con altri meccanismi di Airflow che concedono autorizzazioni a livello di DAG:

Per evitare questi conflitti, l'attivazione della registrazione dei ruoli per cartella modifica anche il comportamento di questi meccanismi.

In Airflow 1, la possibilità di utilizzare questi meccanismi è disattivata quando è abilitata la registrazione dei ruoli per cartella. Tutta la gestione delle autorizzazioni a livello di DAG avviene solo tramite la registrazione dei ruoli per cartella.

In Airflow 2:

  • Puoi concedere l'accesso ai ruoli al DAG tramite la proprietà access_control definita nel codice sorgente del DAG.
  • La concessione manuale delle autorizzazioni DAG (tramite l'interfaccia utente Airflow o gcloud CLI) può causare conflitti. Ad esempio, se concedi manualmente le autorizzazioni a livello di DAG a un ruolo per cartella, queste autorizzazioni possono essere rimosse o sovrascritte quando il processore DAG sincronizza un DAG. Ti consigliamo di non concedere manualmente le autorizzazioni DAG.
  • I ruoli hanno un'unione delle autorizzazioni di accesso al DAG registrate tramite la registrazione dei ruoli per cartella e definite nella proprietà access_control del DAG.

I DAG che si trovano direttamente nella cartella /dags di primo livello non vengono assegnati automaticamente a nessun ruolo per cartella. Non sono accessibili con alcun ruolo per cartella. Altri ruoli come Amministratore, Operatore, Utente o qualsiasi ruolo personalizzato a cui vengono concesse autorizzazioni possono accedervi tramite l'interfaccia utente Airflow e l'interfaccia utente DAG.

Se carichi DAG in sottocartelle con nomi che corrispondono ai ruoli Airflow integrati e ai ruoli creati da Cloud Composer, le autorizzazioni per i DAG in queste sottocartelle vengono comunque assegnate a questi ruoli. Ad esempio, il caricamento di un DAG nella cartella /dags/Admin concede le autorizzazioni per questo DAG al ruolo Amministratore. I ruoli Airflow integrati includono Amministratore, Operatore, Utente, Visualizzatore e Pubblico. Cloud Composer crea NoDags e UserNoDags dopo l'attivazione della funzionalità Registrazione dei ruoli per cartella.

Airflow esegue la registrazione dei ruoli per cartella quando elabora i DAG nello scheduler di Airflow. Se nel tuo ambiente sono presenti più di 100 DAG, potresti notare un aumento del tempo di analisi dei DAG. In questo caso, ti consigliamo di aumentare il parametro [scheduler]max_threads per un ambiente Airflow 1 o [scheduler]parsing_processes per Airflow 2.

Assegnare automaticamente i DAG ai ruoli per cartella

Per assegnare automaticamente i DAG ai ruoli per cartella:

  1. Esegui l'override della seguente opzione di configurazione di Airflow:

    Sezione Chiave Valore
    webserver rbac_autoregister_per_folder_roles True
  2. Modifica il ruolo di registrazione del nuovo utente in un ruolo senza accesso ad alcun DAG. In questo modo, i nuovi utenti non hanno accesso a nessun DAG finché un amministratore non assegna ai loro account un ruolo con autorizzazioni per DAG specifici.

    UserNoDags e NoDags sono ruoli creati da Cloud Composer solo quando è abilitata la funzionalità di registrazione dei ruoli per cartella. Sono equivalenti al ruolo Utente, ma senza accesso ai DAG. Il ruolo UserNoDags viene creato in Airflow 2, mentre il ruolo NoDags viene creato in Airflow 1.

    In Airflow 2, esegui l'override della seguente opzione di configurazione di Airflow:

    Sezione Chiave Valore
    webserver rbac_user_registration_role UserNoDags

    In Airflow 1, esegui l'override della seguente opzione di configurazione di Airflow:

    Sezione Chiave Valore
    webserver rbac_user_registration_role NoDags
  3. Assicurati che gli utenti siano registrati in Airflow.

  4. Assegna ruoli agli utenti utilizzando uno dei seguenti approcci:

    • Consenti ad Airflow di creare automaticamente i ruoli in base alle sottocartelle dei DAG, quindi assegna gli utenti a questi ruoli.
    • Crea in anticipo ruoli vuoti per le sottocartelle dei DAG, con nomi di ruolo corrispondenti al nome di una sottocartella, quindi assegna gli utenti a questi ruoli. Ad esempio, per la cartella /dags/CustomFolder, crea un ruolo denominato CustomFolder.
  5. Carica i DAG nelle sottocartelle con nomi che corrispondono ai ruoli assegnati agli utenti. Queste sottocartelle devono trovarsi all'interno della cartella /dags nel bucket dell'ambiente. Airflow aggiunge autorizzazioni ai DAG in una sottocartella, in modo che solo gli utenti con il ruolo corrispondente possano accedervi tramite l'interfaccia utente di Airflow e l'interfaccia utente DAG.

Configurare manualmente le autorizzazioni a livello di DAG

Puoi configurare le autorizzazioni a livello di DAG per i ruoli personalizzati per specificare quali DAG sono visibili per gruppi di utenti specifici.

Per configurare le autorizzazioni a livello di DAG nella UI di Airflow:

  1. L'amministratore crea ruoli vuoti per raggruppare i DAG.
  2. L'amministratore assegna agli utenti i ruoli appropriati.
  3. L'amministratore o gli utenti assegnano i DAG ai ruoli.
  4. Nell'interfaccia utente di Airflow, gli utenti possono visualizzare solo i DAG assegnati al loro gruppo.

I DAG possono essere assegnati ai ruoli tramite le proprietà DAG o dall'interfaccia utente di Airflow.

Assegnare DAG ai ruoli nell'interfaccia utente di Airflow

Un amministratore può assegnare le autorizzazioni richieste a livello di DAG ai ruoli appropriati nell'interfaccia utente di Airflow.

Questa operazione non è supportata nella UI del DAG.

Assegnazione di DAG ai ruoli nelle proprietà DAG

Puoi impostare il parametro DAG access_control su un DAG, specificando i ruoli di raggruppamento DAG a cui è assegnato il DAG.

Airflow 2

dag = DAG(
  access_control={
    'DagGroup': {'can_edit', 'can_read'},
  },
  ...
  )

Airflow 1

dag = DAG(
  access_control={
    'DagGroup': {'can_dag_edit', 'can_dag_read'},
  },
  ...
  )

Mappare gli audit log nell'UI di Airflow agli utenti

I log di controllo nell'interfaccia utente di Airflow sono mappati agli ID numerici degli account utente Google. Ad esempio, se un utente mette in pausa un DAG, viene aggiunta una voce ai log.

Airflow 2

In Airflow 2, puoi visualizzare i log di controllo nella pagina Sfoglia > Log di controllo nella UI di Airflow.

Una voce nella pagina Audit log di Airflow 2
Figura 1. Una voce nella pagina Audit log in Airflow 2

Airflow 1

In Airflow 1, puoi visualizzare i log di controllo nella pagina Sfoglia > Log.

Una voce nella pagina Log di Airflow 1
Figura 1. Una voce nella pagina Log di Airflow 1

Una voce tipica elenca un ID numerico nel campo Proprietario: accounts.google.com:NUMERIC_ID. Puoi mappare gli ID numerici alle email degli utenti nella pagina Sicurezza > Elenca utenti. Questa pagina è disponibile per gli utenti con il ruolo Admin.

Tieni presente che la relazione tra identità Google (indirizzi email) e account utente (ID utente) non è fissa.

Passaggi successivi