Managed Airflow (terza generazione) | Managed Airflow (seconda generazione) | Managed Airflow (prima generazione legacy)
Questa pagina descrive i diversi meccanismi di controllo dell'accesso per la UI di Airflow e la UI dei DAG. Oltre al controllo dell'accesso fornito da IAM, puoi utilizzare questi meccanismi per separare gli utenti nella UI di Airflow e nella UI dei DAG del tuo ambiente.
Panoramica del controllo dell'accesso alla UI di Airflow in Managed Airflow
L'accesso alla UI di Airflow e alla UI dei DAG e la visibilità dei dati e delle operazioni in queste UI sono controllati a due livelli in Airflow gestito:
L'accesso alla UI di Airflow e alla UI dei DAG in Managed Airflow è controllato da IAM.
Se un account non ha un ruolo che può visualizzare gli ambienti Managed Airflow nel tuo progetto, la UI di Airflow e la UI dei DAG non sono disponibili.
IAM non fornisce alcun controllo delle autorizzazioni aggiuntivo e granulare nella UI di Airflow o nella UI dei DAG.
Il modello di controllo dell'accesso di Apache Airflow consente di ridurre la visibilità nella UI di Airflow e nella UI dei 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 le autorizzazioni basate sulle risorse. Tutti gli utenti di Airflow con un ruolo Airflow specifico ottengono 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 della UI di Airflow.
Puoi anche assegnare autorizzazioni a livello di DAG per i singoli DAG. Ad esempio, in modo che solo gli utenti con un ruolo Airflow specifico possano vedere un determinato DAG nella UI di Airflow. In Managed Airflow, puoi assegnare automaticamente le 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 di identità del personale, concedi prima l'accesso al tuo ambiente in IAM, come descritto nella sezione Concedere ruoli IAM alle identità esterne. Dopodiché, puoi utilizzare il controllo dell'accesso alla UI 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 inseriti negli altri campi dei record utente rispetto agli Account Google.
Prima di iniziare
- La registrazione dei ruoli per cartella è disponibile in Managed Airflow 2.0.16 e versioni successive.
Gestire i ruoli di Airflow e le impostazioni di controllo dell'accesso
Gli utenti con il ruolo di 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 saperne di più sul modello di controllo dell'accesso di Airflow , sulle autorizzazioni disponibili e sui ruoli predefiniti, consulta la documentazione relativa al controllo dell'accesso alla UI di Airflow.
Airflow gestisce il 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 preregistrati manualmente da un amministratore, come descritto nella sezione seguente.
Registrare gli utenti nella UI di Airflow
I nuovi utenti vengono registrati automaticamente quando aprono la UI di Airflow di un ambiente Airflow gestito 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 dei nuovi utenti registrati sostituendo questa
opzione di configurazione di Airflow con un valore diverso.
Se non specificato, il ruolo di registrazione predefinito è Op negli ambienti con Airflow 2 e 3.
Per creare una configurazione di ruolo di base per la UI di Airflow, ti consigliamo di seguire questi passaggi:
Gli amministratori dell'ambiente aprono la UI di Airflow per l'ambiente appena creato.
Concedi agli account amministratore il ruolo
Admin. Il ruolo predefinito per i nuovi account èOp. Per assegnare il ruoloAdmin, 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 AdminSostituisci:
ENVIRONMENT_NAMEcon il nome dell'ambiente.LOCATIONcon la regione in cui si trova l'ambiente.USER_EMAILcon l'indirizzo email di un account utente.
Gli amministratori possono ora configurare il controllo dell'accesso per i nuovi utenti, inclusa la concessione del ruolo
Adminad altri utenti.
Preregistrare gli utenti
Gli utenti vengono registrati automaticamente con gli ID numerici degli Account Google (non gli 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 alla UI di Airflow per la prima volta, il suo nome utente viene sostituito con l'ID utente attualmente (al momento del primo accesso) identificato dal suo indirizzo email. La relazione tra le identità Google (indirizzi email) e gli 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 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 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'ambienteLOCATION: la regione in cui si trova l'ambienteROLE: un ruolo Airflow per l'utente, ad esempioOpUSER_EMAIL: l'indirizzo email dell'utenteFIRST_NAMEeLAST_NAME: il nome e il 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
Rimuovere 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 alla UI di Airflow. Per
revocare l'accesso all'intera UI di Airflow, rimuovi l'composer.environments.get
autorizzazione dalla policy 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. In questo modo, la gestione dei ruoli Airflow personalizzati e del loro accesso ai DAG viene semplificata.
Come funziona la registrazione dei ruoli per cartella
La registrazione dei ruoli per cartella è un modo automatico 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:
- Assegnazione manuale delle autorizzazioni DAG ai ruoli.
- Assegnazione di DAG ai ruoli tramite la proprietà
access_controlin un DAG.
Per evitare questi conflitti, l'attivazione della registrazione dei ruoli per cartella modifica anche il comportamento di questi meccanismi.
In Airflow 2 e 3:
- Puoi concedere l'accesso ai DAG ai ruoli tramite la proprietà
access_controldefinita 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 delle autorizzazioni di accesso ai DAG registrate tramite la registrazione dei ruoli per cartella
e definite nella proprietà
access_controldi 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 nessun ruolo per cartella. Altri ruoli come Amministratore, Operatore, Utente o qualsiasi ruolo personalizzato a cui vengono concesse le autorizzazioni possono accedervi tramite la UI di Airflow e la UI dei DAG.
Se carichi i DAG nelle sottocartelle con nomi che corrispondono ai ruoli Airflow integrati e ai ruoli creati da Managed Airflow, 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 di amministratore. I ruoli Airflow integrati includono Amministratore, Operatore, Utente, Visualizzatore e Pubblico.
Managed Airflow crea UserNoDags dopo l'attivazione 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 nell'ambiente sono presenti più di cento DAG, potresti notare un
aumento del tempo di analisi dei DAG.
In questo caso, ti consigliamo di
utilizzare più memoria e CPU per gli scheduler.
Puoi anche aumentare il valore dell'opzione di configurazione di Airflow [scheduler]parsing_processes.
Assegnare automaticamente i DAG ai ruoli per cartella
Per assegnare automaticamente i DAG ai ruoli per cartella:
Esegui l'override della seguente opzione di configurazione di Airflow:
Sezione Chiave Valore webserverrbac_autoregister_per_folder_rolesTrueModifica il ruolo di registrazione dei nuovi utenti in un ruolo senza accesso a nessun 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 è un ruolo creato da Managed Airflow solo quando è attivata la funzionalità di registrazione dei ruoli per cartella. È equivalente al ruolo Utente, ma senza accesso a nessun DAG.
Esegui l'override della seguente opzione di configurazione di Airflow:
Sezione Chiave Valore webserverrbac_user_registration_roleUserNoDagsAssicurati che gli utenti siano registrati in Airflow.
Assegna i 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 che corrispondono al nome di una sottocartella, quindi assegna gli utenti a questi ruoli. Ad esempio,
per la cartella
/dags/CustomFolder, crea un ruolo denominatoCustomFolder.
Carica i DAG nelle sottocartelle con nomi che corrispondono ai ruoli assegnati agli utenti. Queste sottocartelle devono trovarsi all'interno della cartella
/dagsnel 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 la UI di Airflow e la UI dei 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:
- L'amministratore crea ruoli vuoti per raggruppare i DAG.
- L'amministratore assegna gli utenti ai ruoli appropriati.
- L'amministratore o gli utenti assegnano i DAG ai ruoli.
- Nella UI di Airflow, gli utenti possono vedere solo i DAG assegnati al loro gruppo.
I DAG possono essere assegnati ai ruoli tramite le proprietà DAG o dalla UI di Airflow.
Assegnare i DAG ai ruoli nella UI 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.
Assegnare i DAG ai ruoli nelle proprietà DAG
Puoi impostare il
access_control parametro DAG su un DAG, specificando
i ruoli di raggruppamento DAG a cui è assegnato il DAG.
Nelle versioni di Airflow 2 precedenti alla 2.1.0, l'amministratore, lo sviluppatore DAG o un
processo automatizzato deve eseguire il sync-perm comando Airflow per
applicare le nuove impostazioni di controllo dell'accesso.
Nelle versioni di Airflow 2.1.0 e successive, l'esecuzione di questo comando non è più necessaria, perché lo scheduler applica le autorizzazioni a livello di DAG quando analizza un DAG.
dag = DAG(
access_control={
'DagGroup': {'can_edit', 'can_read'},
},
...
)
Mappare gli audit log nella UI di Airflow agli utenti
Gli audit log nella UI di Airflow vengono mappati a ID numerici degli Account Google. Ad esempio, se un utente mette in pausa un DAG, viene aggiunto una voce ai log.
Puoi visualizzare gli audit log nella pagina Sfoglia > Audit log in della UI di Airflow.
Una voce tipica elenca un ID numerico nel campo Proprietario : accounts.google.com:NUMERIC_ID. Puoi mappare gli ID numerici agli indirizzi email degli utenti nella pagina
Sicurezza > Elenca utenti. Questa pagina è disponibile per gli utenti con il ruolo Admin.
Tieni presente che la relazione tra le identità Google (indirizzi email) e gli account utente (ID utente) non è fissa.
Passaggi successivi
- Esegui l'override delle opzioni di configurazione di Airflow
- Panoramica sulla sicurezza
- Controllo degli accessi di Managed Airflow