Managed Airflow (Generasi 3) | Managed Airflow (Generasi 2) | Managed Airflow (Generasi 1 Lama)
Halaman ini menjelaskan berbagai mekanisme kontrol akses untuk UI Airflow dan UI DAG. Anda dapat menggunakan mekanisme ini, selain kontrol akses yang disediakan oleh IAM, untuk memisahkan pengguna di UI Airflow dan UI DAG lingkungan Anda.
Ringkasan kontrol akses UI Airflow di Managed Airflow
Akses ke UI Airflow dan UI DAG serta visibilitas data dan operasi di UI tersebut dikontrol pada dua tingkat di Managed Airflow:
Akses ke UI Airflow dan UI DAG di Managed Airflow di kontrol oleh IAM.
Jika akun tidak memiliki peran yang dapat melihat lingkungan Managed Airflow di project Anda, UI Airflow dan UI DAG tidak akan tersedia.
IAM tidak memberikan kontrol izin terperinci tambahan di UI Airflow atau UI DAG.
Model Kontrol Akses Apache Airflow memungkinkan pengurangan visibilitas di UI Airflow dan UI DAG berdasarkan peran pengguna.
Kontrol Akses Apache Airflow adalah fitur Airflow, dengan model pengguna, peran, izinnya sendiri, yang berbeda dengan IAM.
Kontrol Akses Apache Airflow menggunakan izin berbasis resource. Semua pengguna Airflow dengan peran Airflow tertentu akan mendapatkan izin peran ini. Misalnya, pengguna Airflow yang memiliki peran dengan izin can delete on Connections dapat menghapus koneksi di halaman Connections di UI Airflow.
Anda juga dapat menetapkan izin tingkat DAG untuk setiap DAG. Misalnya, agar hanya pengguna dengan peran Airflow tertentu yang dapat melihat DAG tertentu di UI Airflow. Di Managed Airflow, Anda dapat menetapkan izin tingkat DAG secara otomatis, berdasarkan subfolder tempat file DAG berada di bucket lingkungan.
Jika ingin menyiapkan akses untuk identitas eksternal melalui workforce identity federation, berikan akses ke lingkungan Anda di IAM terlebih dahulu, seperti yang dijelaskan di bagian Memberikan peran IAM ke identitas ekarsternal. Setelah itu, Anda dapat menggunakan kontrol akses UI Airflow seperti biasa. Pengguna Airflow untuk identitas eksternal menggunakan ID utama mereka, bukan alamat email, dan memiliki nilai yang berbeda yang diisi ke kolom data pengguna lainnya daripada akun Google.
Mengelola peran Airflow dan setelan kontrol akses
Pengguna dengan peran Admin (atau yang setara) dapat melihat dan mengubah setelan kontrol akses di UI Airflow.
Di UI Airflow, Anda dapat mengonfigurasi setelan kontrol akses dari menu Security. Untuk mengetahui informasi selengkapnya tentang model Kontrol Akses Airflow, izin yang tersedia, dan peran default, lihat dokumentasi Kontrol Akses UI Airflow.
Airflow memiliki daftar penggunanya sendiri. Pengguna dengan peran Admin (atau yang setara) dapat melihat daftar pengguna yang telah membuka UI Airflow lingkungan, dan terdaftar di Airflow. Daftar ini juga mencakup pengguna yang telah didaftarkan secara manual oleh Admin, seperti yang dijelaskan di bagian berikut.
Mendaftarkan pengguna di UI Airflow
Pengguna baru akan otomatis terdaftar saat mereka membuka UI Airflow lingkungan Managed Airflow untuk pertama kalinya.
Saat pendaftaran, pengguna akan diberi peran yang ditentukan dalam opsi konfigurasi Airflow [webserver]rbac_user_registration_role. Anda dapat
mengontrol peran pengguna yang baru terdaftar dengan mengganti opsi konfigurasi Airflow ini dengan nilai yang berbeda.
Jika tidak ditentukan, peran pendaftaran default adalah Op di lingkungan dengan Airflow 2 dan 3.
Langkah-langkah berikut direkomendasikan untuk membuat konfigurasi peran dasar untuk UI Airflow:
Administrator lingkungan membuka UI Airflow untuk lingkungan yang baru dibuat.
Berikan peran
Adminkepada akun administrator. Peran default untuk akun baru adalahOp. Untuk menetapkan peranAdmin, jalankan perintah Airflow CLI berikut dengan gcloud CLI:gcloud composer environments run ENVIRONMENT_NAME \ --location LOCATION \ users add-role -- -e USER_EMAIL -r AdminGanti:
ENVIRONMENT_NAMEdengan nama lingkungan.LOCATIONdengan region tempat lingkungan berada.USER_EMAILdengan email akun pengguna.
Admin kini dapat mengonfigurasi kontrol akses untuk pengguna baru, termasuk memberikan peran
Adminkepada pengguna lain.
Mendaftarkan pengguna
Pengguna akan otomatis terdaftar dengan ID numerik akun pengguna Google (bukan alamat email) sebagai nama pengguna mereka. Anda juga dapat mendaftarkan pengguna secara manual dan menetapkan peran kepada mereka dengan menambahkan data pengguna dengan kolom nama pengguna yang ditetapkan ke alamat email utama pengguna. Saat pengguna dengan alamat email yang cocok dengan data pengguna yang telah didaftarkan sebelumnya login ke UI Airflow untuk pertama kalinya, nama pengguna mereka akan diganti dengan ID pengguna yang saat ini (pada saat login pertama) diidentifikasi berdasarkan alamat email mereka. Hubungan antara identitas Google (alamat email) dan akun pengguna (ID pengguna) tidak bersifat permanen. Grup Google tidak dapat didaftarkan.
Untuk mendaftarkan pengguna, Anda dapat menggunakan UI Airflow atau menjalankan perintah Airflow CLI melalui Google Cloud CLI.
Untuk mendaftarkan pengguna dengan peran khusus melalui Google Cloud CLI, jalankan perintah Airflow CLI berikut:
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
Ganti kode berikut:
ENVIRONMENT_NAME: nama lingkunganLOCATION: region tempat lingkungan beradaROLE: peran Airflow untuk pengguna, misalnya,OpUSER_EMAIL: alamat email penggunaFIRST_NAMEdanLAST_NAME: nama depan dan nama belakang pengguna
Contoh:
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
Menghapus pengguna
Menghapus pengguna dari Airflow tidak akan mencabut akses pengguna tersebut, karena mereka akan otomatis terdaftar lagi saat mengakses UI Airflow pada lain waktu. Untuk
mencabut akses ke seluruh UI Airflow, hapus composer.environments.get
izin dari kebijakan izin mereka untuk project Anda.
Anda juga dapat mengubah peran pengguna menjadi Publik, yang akan mempertahankan pendaftaran pengguna, tetapi menghapus semua izin untuk UI Airflow.
Mengonfigurasi izin tingkat DAG secara otomatis
Fitur Pendaftaran Peran Per Folder otomatis membuat
peran Airflow khusus untuk setiap subfolder
langsung di dalam folder /dags dan memberikan akses tingkat DAG peran ini ke semua
DAG yang memiliki file sumbernya yang disimpan di subfolder masing-masing. Hal ini menyederhanakan pengelolaan peran Airflow khusus dan aksesnya ke DAG.
Cara kerja Pendaftaran Peran Per Folder
Pendaftaran Peran Per Folder adalah cara otomatis untuk mengonfigurasi peran dan izin tingkat DAG-nya. Oleh karena itu, hal ini dapat menyebabkan konflik dengan mekanisme Airflow lainnya yang memberikan izin tingkat DAG:
- Menetapkan izin DAG ke peran secara manual.
- Menetapkan DAG ke peran melalui properti
access_controldi DAG.
Untuk mencegah konflik tersebut, mengaktifkan Pendaftaran Peran Per Folder juga akan mengubah perilaku mekanisme ini.
Di Airflow 2 dan 3:
- Anda dapat memberikan akses DAG ke peran melalui properti
access_controlyang ditentukan dalam kode sumber DAG. - Memberikan izin DAG secara manual (melalui UI Airflow atau gcloud CLI) dapat menyebabkan konflik. Misalnya, jika Anda memberikan izin tingkat DAG ke peran per folder secara manual, izin ini dapat dihapus atau ditimpa saat pemroses DAG menyinkronkan DAG. Sebaiknya jangan berikan izin DAG secara manual.
- Peran memiliki gabungan izin akses DAG yang terdaftar melalui Pendaftaran Peran Per Folder
dan ditentukan dalam properti
access_controlDAG.
DAG yang berada langsung di folder /dags tingkat atas tidak otomatis ditetapkan ke peran per folder mana pun. DAG tersebut tidak dapat diakses dengan peran per folder mana pun. Peran lain seperti Admin, Op, Pengguna, atau peran khusus apa pun yang diberi izin dapat mengaksesnya melalui UI Airflow dan UI DAG.
Jika Anda mengupload DAG ke subfolder dengan nama yang cocok dengan peran Airflow bawaan dan peran yang dibuat oleh Managed Airflow, izin ke DAG di subfolder ini akan tetap ditetapkan ke peran ini. Misalnya, mengupload DAG ke folder /dags/Admin akan memberikan izin ke DAG ini ke peran Admin. Peran Airflow bawaan mencakup Admin, Op, Pengguna, Viewer, dan Publik.
Managed Airflow membuat UserNoDags setelah fitur Pendaftaran Peran Per Folder diaktifkan.
Airflow melakukan pendaftaran peran per folder saat memproses DAG di scheduler Airflow. Jika ada lebih dari seratus DAG di lingkungan Anda, Anda mungkin melihat peningkatan waktu penguraian DAG. Jika demikian, sebaiknya gunakan lebih banyak memori dan CPU untuk scheduler.
Menetapkan DAG ke peran per folder secara otomatis
Untuk menetapkan DAG ke peran per folder secara otomatis:
Ganti opsi konfigurasi Airflow berikut:
Bagian Kunci Nilai webserverrbac_autoregister_per_folder_rolesTrueUbah peran pendaftaran pengguna baru menjadi peran tanpa akses ke DAG mana pun. Dengan cara ini, pengguna baru tidak memiliki akses ke DAG mana pun hingga Admin menetapkan peran yang memiliki izin untuk DAG tertentu ke akun mereka.
UserNoDags adalah peran yang dibuat oleh Managed Airflow hanya saat fitur Pendaftaran Peran Per Folder diaktifkan. Peran ini setara dengan peran Pengguna, tetapi tanpa akses ke DAG mana pun.
Ganti opsi konfigurasi Airflow berikut:
Bagian Kunci Nilai webserverrbac_user_registration_roleUserNoDagsTetapkan peran kepada pengguna menggunakan salah satu pendekatan:
- Izinkan Airflow membuat peran secara otomatis berdasarkan subfolder DAG, lalu tetapkan pengguna ke peran ini.
- Buat peran kosong terlebih dahulu untuk subfolder DAG, dengan nama peran yang cocok dengan nama subfolder, lalu tetapkan pengguna ke peran ini. Misalnya,
untuk folder
/dags/CustomFolder, buat peran bernamaCustomFolder.
Upload DAG ke subfolder dengan nama yang cocok dengan peran yang ditetapkan kepada pengguna. Subfolder ini harus berada di dalam folder
/dagsdi bucket lingkungan. Airflow menambahkan izin ke DAG di subfolder tersebut, sehingga hanya pengguna dengan peran yang sesuai yang dapat mengaksesnya melalui UI Airflow dan UI DAG.
Mengonfigurasi izin tingkat DAG secara manual
Anda dapat mengonfigurasi izin tingkat DAG untuk peran khusus guna menentukan DAG mana yang terlihat untuk grup pengguna tertentu.
Untuk mengonfigurasi izin tingkat DAG di UI Airflow:
- Admin membuat peran kosong untuk mengelompokkan DAG.
- Admin menetapkan pengguna ke peran yang sesuai.
- Admin atau pengguna menetapkan DAG ke peran.
- Di UI Airflow, pengguna hanya dapat melihat DAG yang ditetapkan ke grup mereka.
DAG dapat ditetapkan ke peran melalui properti DAG, atau dari UI Airflow.
Menetapkan DAG ke peran di UI Airflow
Admin dapat menetapkan izin tingkat DAG yang diperlukan ke peran yang sesuai di UI Airflow.
Operasi ini tidak didukung di UI DAG.
Menetapkan DAG ke peran di properti DAG
Anda dapat menetapkan parameter DAG
access_control pada DAG, dengan menentukan
peran pengelompokan DAG yang ditetapkan ke DAG.
Scheduler menerapkan izin tingkat DAG saat mengurai DAG.
dag = DAG(
access_control={
'DagGroup': {'can_edit', 'can_read'},
},
...
)
Memetakan log audit di UI Airflow ke pengguna
Log audit di UI Airflow dipetakan ke ID numerik akun pengguna Google. Misalnya, jika pengguna menjeda DAG, entri akan ditambahkan ke log.
Airflow 3
Di Airflow 3, Anda dapat melihat log audit di halaman Browse > Audit Log di UI Airflow.
Airflow 2
Anda dapat melihat log audit di halaman Browse > Audit Logs di UI Airflow.
Entri umum mencantumkan ID numerik di kolom Owner : accounts.google.com:NUMERIC_ID. Anda dapat memetakan ID numerik ke email pengguna di halaman
Security > List Users. Halaman ini tersedia untuk pengguna dengan peran Admin.
Perhatikan bahwa hubungan antara identitas Google (alamat email) dan akun pengguna (ID pengguna) tidak bersifat permanen.