Utilizzo del controllo dell'accesso alla UI di Airflow

Cloud Composer 1 | Cloud Composer 2

In questa pagina vengono descritti vari meccanismi di controllo dell'accesso dell'accesso per l'UI di Airflow e dell'UI di DAG. Puoi utilizzare questi meccanismi, oltre al controllo dell'accesso dell'accesso fornito da IAM, per separare gli utenti nell'UI di Airflow e nell'UI DAG del tuo ambiente.

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

L'accesso alla UI di Airflow e all'UI DAG e alla visibilità di dati e operazioni in queste UI sono controllati a due livelli in Cloud Composer:

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

    Se un account non ha un ruolo che possa visualizzare gli ambienti Cloud Composer nel tuo progetto, la UI di Airflow e quella dei DAG non sono disponibili.

    IAM non fornisce alcun controllo delle autorizzazioni aggiuntivo molto granulare nell'interfaccia utente di Airflow o nell'interfaccia utente dei DAG.

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

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

Il controllo degli accessi di Apache Airflow utilizza autorizzazioni basate sulle risorse. Tutti gli utenti Airflow con un ruolo Airflow specifico ricevono le autorizzazioni di questo ruolo. Ad esempio, gli utenti di 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, per fare in modo che solo gli utenti con un ruolo Airflow specifico possano vedere un determinato DAG nella UI di Airflow. In Cloud Composer, puoi assegnare automaticamente autorizzazioni a livello di DAG, in base alla sottocartella in cui si trova il file DAG nel bucket dell'ambiente.

Se vuoi configurare l'accesso per le identità esterne tramite la federazione delle identità per la forza lavoro, concedi prima di tutto l'accesso al tuo ambiente in IAM, come descritto nella sezione Concedere ruoli IAM alle identità esterne. Successivamente, puoi utilizzare il controllo dell'accesso all'interfaccia utente di Airflow come di consueto. Gli utenti di Airflow per le identità esterne utilizzano il proprio identificatore principale anziché l'indirizzo email e hanno valori diversi compilati in altri campi dei record utente rispetto agli Account Google.

Prima di iniziare

Abilita l'interfaccia utente di Airflow con il controllo dell'accesso

In Cloud Composer 2, la UI di Airflow con controllo dell'accesso è sempre abilitata.

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

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

Nella UI di Airflow, puoi configurare le impostazioni di controllo 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 degli accessi UI di Airflow.

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

Registra gli utenti nell'interfaccia utente di Airflow

I nuovi utenti vengono registrati automaticamente quando aprono l'interfaccia utente 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 Airflow [webserver]rbac_user_registration_role. Puoi controllare il ruolo degli utenti appena registrati eseguendo l'override di questa opzione di configurazione di Airflow con un valore diverso.

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

I passaggi seguenti sono consigliati per creare una configurazione del ruolo di base per la UI di Airflow:

  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:

      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'indirizzo email di un account utente.
  3. Ora gli amministratori possono configurare il controllo dell'accesso'accesso per i nuovi utenti, inclusa la concessione del ruolo Admin ad altri utenti.

Preregistra utenti

Gli utenti vengono registrati automaticamente con gli ID numerici degli account utente Google (non gli indirizzi email) come nomi utente. Puoi anche preregistrare manualmente un utente e assegnargli un ruolo aggiungendo un record dell'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 di un utente preregistrato accede all'interfaccia utente di Airflow per la prima volta, il nome utente viene sostituito con l'ID utente attualmente (al momento del primo accesso) identificato dall'indirizzo email. La relazione tra identità Google (indirizzi email) e account utente (ID utente) non è fissa. Non è possibile preregistrare i gruppi Google.

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

Per preregistrare un utente con un ruolo personalizzato tramite Google Cloud CLI, esegui questo 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 al successivo accesso all'interfaccia utente di Airflow. Per revocare l'accesso all'intera UI di Airflow, rimuovi l'autorizzazione composer.environments.get dal criterio di autorizzazione del tuo progetto.

Puoi anche modificare il ruolo dell'utente in Pubblico. In questo modo la registrazione dell'utente viene conservata, ma vengono rimosse tutte le autorizzazioni per la UI di Airflow.

Configurare automaticamente le autorizzazioni a livello di DAG

La funzionalità Registrazione dei ruoli per cartella crea automaticamente un ruolo Airflow personalizzato per ogni sottocartella direttamente all'interno della cartella /dags e concede questo ruolo l'accesso a livello di DAG a tutti i DAG il cui file di origine è archiviato in quella rispettiva sottocartella. Ciò semplifica la gestione dei ruoli Airflow personalizzati e il relativo 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. Di conseguenza, può causare conflitti con altri meccanismi Airflow che concedono autorizzazioni a livello di DAG:

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

In Airflow 2:

  • Puoi concedere l'accesso ai ruoli DAG tramite la proprietà access_control definita nel codice sorgente DAG.
  • La concessione manuale delle autorizzazioni DAG (tramite la UI di 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 di autorizzazioni di accesso ai DAG registrate tramite la registrazione dei ruoli per cartella e definite nella proprietà access_control del DAG.

I DAG situati 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, Operativo, Utente o qualsiasi ruolo personalizzato a cui vengono concesse le autorizzazioni possono accedervi tramite la UI di Airflow e dell'UI dei DAG.

Se carichi DAG in sottocartelle con nomi corrispondenti 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 a questo DAG al ruolo Amministratore. I ruoli Airflow integrati includono Amministratore, Operativo, Utente, Visualizzatore e Pubblico. Cloud Composer crea NoDags e UserNoDags dopo l'abilitazione della funzionalità di 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 un centinaio di DAG, potresti notare un aumento del tempo di analisi dei DAG. In questo caso, consigliamo di utilizzare più memoria e CPU per gli scheduler. Puoi anche aumentare il valore dell'opzione di configurazione Airflow [scheduler]parsing_processes.

Assegna 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. Cambia il nuovo ruolo di registrazione utente in un ruolo senza accesso a nessun DAG. In questo modo, i nuovi utenti non avranno accesso ai DAG finché un amministratore non assegna ai loro account un ruolo con autorizzazioni per DAG specifici.

    UserNoDags è un ruolo creato da Cloud Composer solo quando la funzionalità di registrazione dei ruoli per cartella è abilitata. È equivalente al ruolo Utente, ma senza accesso ai DAG.

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

    Sezione Chiave Valore
    webserver rbac_user_registration_role UserNoDags

  3. Assicurati che gli utenti siano registrati in Airflow.

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

    • Consenti a Airflow di creare automaticamente ruoli in base alle sottocartelle dei DAG, quindi assegna gli utenti a questi ruoli.
    • Crea in precedenza ruoli vuoti per le sottocartelle dei DAG, con nomi dei ruoli 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 in sottocartelle con nomi corrispondenti ai ruoli assegnati agli utenti. Queste sottocartelle devono trovarsi all'interno della cartella /dags nel bucket dell'ambiente. Airflow aggiunge le autorizzazioni ai DAG in una sottocartella di questo tipo, in modo che solo gli utenti con il ruolo corrispondente possano accedervi tramite l'UI di Airflow e quella dei DAG.

Configurare manualmente le autorizzazioni a livello di DAG

Puoi configurare le autorizzazioni a livello di DAG per i ruoli personalizzati in modo da 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 il raggruppamento dei DAG.
  2. L'amministratore assegna agli utenti i ruoli appropriati.
  3. L'amministratore o gli utenti assegnano i DAG ai ruoli.
  4. Nella UI 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.

Assegnazione di DAG ai ruoli nell'interfaccia utente di Airflow

Un amministratore può assegnare le autorizzazioni a livello di DAG richieste ai ruoli appropriati nella UI di Airflow.

Questa operazione non è supportata nella UI dei DAG.

Assegnazione di DAG ai ruoli nelle proprietà DAG

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

Nelle versioni di Airflow 2 precedenti alla 2.1.0, l'amministratore, lo sviluppatore di DAG o un processo automatizzato deve eseguire il comando Airflow sync-perm per applicare le nuove impostazioni di controllo dell'accesso'accesso.

In Airflow 2.1.0 e versioni successive, l'esecuzione di questo comando non è più richiesta, poiché lo scheduler applica le autorizzazioni a livello di DAG quando analizza un DAG.

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

Mappa gli audit log nella UI di Airflow agli utenti

Gli audit log nella UI 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.

Puoi visualizzare gli audit log nella pagina Sfoglia > Audit log nella UI di Airflow.

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

Una voce tipica riporta 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