Utilizzo del controllo dell'accesso alla UI di Airflow

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

Questa pagina descrive i diversi meccanismi di controllo dell'accesso per la UI di Airflow e la UI di DAG. Puoi usare questi meccanismi, in aggiunta al controllo dell'accesso forniti da IAM, per separare gli utenti UI di Airflow e UI DAG del tuo ambiente.

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

Accesso a Airflow UI e UI di DAG e la visibilità dei dati e delle operazioni nelle UI è controllata a due livelli Cloud Composer:

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

    Se un account non ha un ruolo che visualizzare gli ambienti Cloud Composer nel tuo le UI di Airflow e DAG non sono disponibili.

    IAM non fornisce ulteriori informazioni delle autorizzazioni nella UI di Airflow o DAG.

  2. Il modello di controllo degli accessi di Apache Airflow consente di Ridurre la visibilità nelle UI di Airflow e DAG in base al ruolo utente.

    Il controllo degli accessi di Apache Airflow è una funzionalità di Airflow, con il suo modello di utenti, ruoli, autorizzazioni, che differisce da o IAM.

Il controllo degli accessi di Apache Airflow utilizza autorizzazioni basate sulle risorse. Tutto Airflow gli utenti con un ruolo Airflow specifico ricevono le autorizzazioni di questo ruolo. Ad esempio: Utenti Airflow che hanno un ruolo con l'autorizzazione can delete on Connections può eliminare le connessioni nella pagina Connessioni della UI di Airflow.

Puoi anche assegnare Autorizzazioni a livello di DAG per singoli DAG. Per ad esempio, in modo che solo gli utenti con un ruolo Airflow specifico possano vedere un determinato DAG nella UI di Airflow. In Cloud Composer, puoi assegna automaticamente autorizzazioni a livello di DAG, in base alla sottocartella in cui si trova il file DAG nella di sincronizzare la directory di una VM con un bucket.

Prima di iniziare

  • La UI di Airflow con controllo dell'accesso è disponibile per Cloud Composer 1.13.4 o versioni successive. 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 Cloud Composer 1.13.4 e versioni successive in Airflow 1.

Abilita il controllo dell'accesso alla UI di Airflow

Flusso d'aria 2

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

Flusso d'aria 1

Per abilitare la UI di Airflow con il controllo dell'accesso, esegui l'override del seguente opzione di configurazione di Airflow:

Sezione Chiave Valore
webserver rbac True

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

Con questa configurazione, il tuo ambiente esegue la UI di Airflow con accesso Controllo anziché la UI classica di Airflow.

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

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

Nella UI di Airflow, puoi configurare le impostazioni di controllo dell'accesso nel menu Sicurezza. Per saperne di più sul controllo dell'accesso di Airflow modello, autorizzazioni disponibili e ruoli predefiniti, consulta Documentazione relativa al controllo dell'accesso all'interfaccia utente di Airflow.

Airflow 1 tratta il ruolo utente come un modello per tutti i ruoli personalizzati. Flusso d'aria copia continuamente le autorizzazioni dal ruolo Utente a tutti i ruoli personalizzati, tranne autorizzazioni per all_dags.

Airflow gestisce il proprio elenco di utenti. Utenti con l'amministratore (o equivalente) può 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 preregistrata manualmente da un amministratore, come descritto nella sezione seguente.

Registra gli utenti nella UI di Airflow

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

Al momento della registrazione, agli utenti viene concesso il ruolo specificato nel [webserver]rbac_user_registration_role Opzione di configurazione Airflow. Puoi Controlla il ruolo degli utenti appena registrati eseguendo l'override di questo Opzione di configurazione Airflow con un valore diverso.

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

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

I passaggi seguenti sono consigliati per creare una configurazione dei ruoli di base per dell'UI di Airflow:

Flusso d'aria 2

  1. Gli amministratori dell'ambiente aprono la UI di Airflow per i contenuti appena creati completamente gestito di Google Cloud.

  2. Concedi agli account amministratore il ruolo Admin. Il ruolo predefinito per nuovi account in ambienti con Airflow 2 è Op. Per assegnare il ruolo Admin, esegui questo comando Comando interfaccia a riga di comando 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 per i nuovi utenti, inclusa la concessione il ruolo Admin ad altri utenti.

Flusso d'aria 1

  1. Gli amministratori dell'ambiente aprono la UI di Airflow per i contenuti appena creati in cui vengono registrati automaticamente nell'ambiente Admin ruolo.

  2. Sostituisci il parametro seguendo l'opzione di configurazione Airflow al ruolo richiesto per i nuovi utenti. Ad esempio, per User.

    Sezione Chiave Valore
    webserver rbac_user_registration_role User o altro ruolo non amministratore
  3. Ora gli amministratori possono configurare il controllo dell'accesso alla UI di Airflow per i nuovi utenti, tra cui concedendo il ruolo Admin ad altri utenti.

Preregistra gli utenti

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 assegna loro un ruolo aggiungendo un record utente con il campo del nome utente impostato all'indirizzo email principale dell'utente. Quando un utente con un indirizzo email abbinando un record di un utente preregistrato accede per la prima volta alla UI di Airflow, il loro nome utente viene sostituito con l'ID utente attualmente (al momento al primo accesso) identificati dal loro indirizzo email. La relazione tra Identità (indirizzi email) e account utente (ID utente) Google non è stato corretto. I gruppi Google non possono essere preregistrati.

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: 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é vengono registrati di nuovo automaticamente al successivo accesso alla UI di Airflow. A revoca l'accesso all'intera UI di Airflow, rimuovi composer.environments.get l'autorizzazione dal relativo criterio di autorizzazione per il tuo progetto.

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

Configura automaticamente le autorizzazioni a livello di DAG

La funzione di registrazione dei ruoli per cartella crea automaticamente 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 i cui file di origine sono archiviati 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 di configurare ruoli e 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, abilitando anche la registrazione dei ruoli per cartella cambia il comportamento di questi meccanismi.

In Airflow 1, la possibilità di utilizzare questi meccanismi è disabilitata quando La registrazione dei ruoli per cartella è abilitata. Tutte le autorizzazioni a livello di DAG la gestione avviene solo attraverso la registrazione dei ruoli per cartella.

In Airflow 2:

  • Puoi concedere l'accesso DAG ai ruoli tramite la proprietà access_control definita nel codice sorgente dei DAG.
  • Concessione manuale delle autorizzazioni DAG (tramite l'UI di Airflow o gcloud CLI) possono causare conflitti. Ad esempio, se concedere manualmente autorizzazioni a livello di DAG a un ruolo per cartella, le autorizzazioni possono essere rimosse o sovrascritte quando il processore DAG sincronizza un DAG. Consigliamo di non concedere manualmente le autorizzazioni DAG.
  • I ruoli hanno una combinazione di autorizzazioni di accesso ai DAG registrate tramite Per cartella Registrazione dei ruoli e definita nella proprietà access_control di il DAG.

I DAG che si trovano direttamente nella cartella di primo livello /dags non vengono assegnati automaticamente con qualsiasi ruolo per cartella. Non sono accessibili con nessun ruolo per cartella. Altro quali Amministratore, Operatore, Utente o qualsiasi ruolo personalizzato a cui sono state concesse le autorizzazioni, per accedervi tramite la UI di Airflow e DAG.

Se carichi i DAG in sottocartelle con nomi che corrispondono ai ruoli Airflow integrati e ruoli creati da Cloud Composer, quindi le autorizzazioni per i DAG queste sottocartelle sono ancora assegnate a questi ruoli. Ad esempio, il caricamento di un Il DAG alla cartella /dags/Admin concede le autorizzazioni a questo DAG all'amministratore ruolo. I ruoli Airflow integrati includono Amministratore, Operatore, Utente, Visualizzatore e Pubblico. Cloud Composer crea i valori NoDags e UserNoDags dopo i valori Per-folder La funzionalità di registrazione dei ruoli è abilitata.

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

Assegna automaticamente i DAG ai ruoli per cartella

Per assegnare automaticamente i DAG a 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 ai DAG. In questo modo, i nuovi utenti non hanno accesso a nessun DAG fino a quando un amministratore assegna ai propri account un ruolo con autorizzazioni per DAG specifici.

    UserNoDags e NoDags sono ruoli creati solo da Cloud Composer quando la funzionalità Registrazione ruoli per cartella è abilitata. Si tratta di un equivalente al ruolo Utente, ma senza accesso ai DAG. UserNoDags il ruolo NoDags viene creato in Airflow 2 e il ruolo NoDags in Airflow 1.

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

    Sezione Chiave Valore
    webserver rbac_user_registration_role UserNoDags

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

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

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

    • Consenti ad Airflow di creare ruoli automaticamente in base alle sottocartelle dei DAG, e assegnare agli utenti questi ruoli.
    • Crea in anticipo ruoli vuoti per le sottocartelle dei DAG, con i nomi dei ruoli corrispondenti il nome di una sottocartella, quindi assegna agli utenti 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 in del bucket dell'ambiente. Airflow aggiunge le autorizzazioni ai DAG in un sottocartella, in modo che solo gli utenti con il ruolo corrispondente possano accedervi. tramite la UI di Airflow e di DAG.

Configura manualmente le autorizzazioni a livello di DAG

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

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 proprio gruppo.

I DAG possono essere assegnati ai ruoli tramite le proprietà dei DAG o UI di Airflow.

Assegnazione di DAG ai ruoli nella UI di Airflow

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

Questa operazione non è supportata nella UI dei DAG.

Assegnazione di DAG ai ruoli nelle proprietà dei DAG

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

Flusso d'aria 2

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

Flusso d'aria 1

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

Mappa gli audit log nella UI di Airflow agli utenti

Gli audit log nella UI di Airflow sono mappati ID numerici degli account utente Google. Per Ad esempio, se un utente mette in pausa un DAG, viene aggiunta una voce ai log.

Flusso d'aria 2

In Airflow 2, puoi visualizzare gli audit log in Sfoglia > Audit Logs nella UI di Airflow.

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

Flusso d'aria 1

In Airflow 1, puoi visualizzare gli audit log in Sfoglia > Pagina Log.

Una voce nella pagina Log in Airflow 1
. Figura 1. Una voce nella pagina Log in 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 Sicurezza > Elenco utenti. Questa pagina è disponibile per utenti con il ruolo Admin.

Nota che la relazione tra Identità (indirizzi email) e account utente (ID utente) Google non è stato corretto.

Passaggi successivi