Menggunakan Kontrol Akses UI Airflow

Cloud Composer 1 | Cloud Composer 2

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 Cloud Composer

Akses ke Airflow UI dan UI DAG, serta visibilitas data dan operasi di UI tersebut dikontrol pada dua level di Cloud Composer:

  1. Akses ke UI Airflow dan UI DAG di Cloud Composer dikontrol oleh IAM.

    Jika akun tidak memiliki peran yang dapat melihat lingkungan Cloud Composer di project Anda, UI Airflow dan UI DAG tidak akan tersedia.

    IAM tidak menyediakan kontrol izin tambahan yang terperinci di UI Airflow atau UI DAG.

  2. Model Kontrol Akses Apache Airflow memungkinkan mengurangi visibilitas di UI Airflow dan UI DAG berdasarkan peran pengguna.

    Apache Airflow Access Control adalah fitur Airflow, dengan model pengguna, peran, dan 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 level DAG untuk setiap DAG. Misalnya, agar hanya pengguna dengan peran Airflow tertentu yang dapat melihat DAG tertentu di UI Airflow. Di Cloud Composer, Anda dapat secara otomatis menetapkan izin level DAG, berdasarkan subfolder tempat file DAG berada di bucket lingkungan.

Sebelum memulai

  • UI Airflow dengan Access Control tersedia untuk Cloud Composer versi 1.13.4 atau yang lebih baru, serta Airflow 1.10.10 dan versi yang lebih baru. Lingkungan ini juga harus menjalankan Python 3.

  • Pendaftaran Peran Per folder tersedia di Cloud Composer 1.18.12 dan versi yang lebih baru di Airflow 2, serta di Cloud Composer 1.13.4 dan versi yang lebih baru di Airflow 1.

Mengaktifkan UI Airflow dengan Kontrol Akses

Aliran udara 2

UI Airflow dengan Kontrol Akses selalu diaktifkan di Airflow 2.

Aliran udara 1

Untuk mengaktifkan UI Airflow dengan Kontrol Akses, ganti opsi konfigurasi Airflow berikut:

Bagian Kunci Nilai
webserver rbac True

Anda dapat melakukannya untuk lingkungan yang sudah ada atau saat membuat lingkungan baru.

Dengan konfigurasi ini, lingkungan Anda akan menjalankan UI Airflow dengan Access Control, bukan UI Airflow klasik.

Mengelola peran dan setelan kontrol akses Airflow

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 1 memperlakukan peran Pengguna sebagai template untuk semua peran khusus. Airflow akan terus menyalin izin dari peran Pengguna ke semua peran khusus, kecuali izin untuk all_dags.

Airflow mengelola daftar penggunanya sendiri. Pengguna dengan peran Admin (atau yang setara) dapat melihat daftar pengguna yang telah membuka UI Airflow suatu lingkungan, dan terdaftar di Airflow. Daftar ini juga menyertakan pengguna yang telah melakukan prapendaftaran secara manual oleh Admin, seperti yang dijelaskan di bagian berikut.

Mendaftarkan pengguna di UI Airflow

Pengguna baru akan otomatis terdaftar saat membuka UI Airflow lingkungan Cloud Composer untuk pertama kalinya.

Saat pendaftaran, pengguna 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.

Di lingkungan dengan Airflow 1.10.*, peran pendaftaran default adalah Admin.

Langkah-langkah berikut direkomendasikan untuk membuat konfigurasi peran dasar untuk UI Airflow:

Aliran udara 2

  1. Administrator lingkungan membuka UI Airflow untuk lingkungan yang baru dibuat.

  2. Berikan peran Admin kepada akun administrator. Peran default untuk akun baru di lingkungan dengan Airflow 2 adalah Op. Untuk menetapkan peran Admin, jalankan perintah CLI Airflow berikut dengan gcloud:

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

    Ganti:

    • ENVIRONMENT_NAME dengan nama lingkungan.
    • LOCATION dengan region tempat lingkungan berada.
    • USER_EMAIL dengan email akun pengguna.
  3. Admin kini dapat mengonfigurasi kontrol akses untuk pengguna baru, termasuk memberikan peran Admin kepada pengguna lain.

Aliran udara 1

  1. Administrator lingkungan membuka UI Airflow untuk lingkungan yang baru dibuat, tempat mereka terdaftar secara otomatis dengan peran Admin.

  2. Ganti opsi konfigurasi Airflow berikut ke peran yang diperlukan untuk pengguna baru. Misalnya, untuk User.

    Bagian Kunci Nilai
    webserver rbac_user_registration_role User atau peran non-Admin lainnya
  3. Admin kini dapat mengonfigurasi kontrol akses UI Airflow untuk pengguna baru, termasuk memberikan peran Admin kepada pengguna lain.

Pengguna yang melakukan pradaftar

Pengguna secara otomatis terdaftar dengan ID numerik akun pengguna Google (bukan alamat email) sebagai nama pengguna mereka. Anda juga dapat melakukan pradaftar secara manual dan menetapkan peran untuk pengguna dengan menambahkan data pengguna dengan kolom nama pengguna yang ditetapkan ke alamat email utama pengguna. Jika pengguna dengan alamat email yang cocok dengan catatan pengguna yang telah melakukan prapendaftaran login ke UI Airflow untuk pertama kalinya, nama pengguna akan diganti dengan ID pengguna yang saat ini (pada saat login pertama kali) yang diidentifikasi dengan alamat emailnya. Hubungan antara identitas Google (alamat email) dan akun pengguna (ID pengguna) tidak tetap. Grup Google tidak dapat dilakukan prapendaftaran.

Untuk melakukan pradaftar untuk pengguna, Anda dapat menggunakan UI Airflow atau menjalankan perintah CLI Airflow melalui Google Cloud CLI.

Untuk melakukan pradaftar bagi pengguna dengan peran khusus melalui Google Cloud CLI, jalankan perintah CLI Airflow 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 lingkungan
  • LOCATION: region tempat lingkungan berada
  • ROLE: peran Airflow untuk pengguna, misalnya, Op
  • USER_EMAIL: alamat email pengguna
  • FIRST_NAME dan LAST_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 untuk pengguna tersebut, karena pengguna tersebut akan otomatis terdaftar lagi saat mengakses UI Airflow lagi. Untuk mencabut akses ke seluruh UI Airflow, hapus izin composer.environments.get dari kebijakan izin miliknya 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 level DAG secara otomatis

Fitur Pendaftaran Peran Per folder secara otomatis membuat peran Airflow kustom untuk setiap subfolder secara langsung di dalam folder /dags dan memberikan peran ini akses level DAG ke semua DAG yang memiliki file sumbernya yang disimpan di subfolder masing-masing. Hal ini menyederhanakan pengelolaan peran Airflow kustom dan aksesnya ke DAG.

Cara kerja Pendaftaran Peran Per-folder

Pendaftaran Peran Per-folder adalah cara otomatis untuk mengonfigurasi peran dan izin level DAG-nya. Dengan demikian, tindakan ini dapat menyebabkan konflik dengan mekanisme Airflow lain yang memberikan izin level DAG:

Untuk mencegah konflik tersebut, mengaktifkan Pendaftaran Peran Per-folder juga akan mengubah perilaku mekanisme ini.

Di Airflow 1, kemungkinan penggunaan mekanisme ini dinonaktifkan saat Pendaftaran Peran Per folder diaktifkan. Semua pengelolaan izin level DAG hanya terjadi melalui Pendaftaran Peran Per Folder.

Dalam Aliran Udara 2:

  • Anda dapat memberikan akses DAG ke peran melalui properti access_control yang 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 secara manual ke peran per folder, 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_control DAG.

DAG yang berada langsung di folder /dags level atas tidak ditetapkan secara otomatis ke peran per folder apa pun. File tersebut tidak dapat diakses dengan peran per folder apa pun. Peran lain seperti Admin, Operasi, 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 Cloud Composer, izin ke DAG di subfolder tersebut masih ditetapkan untuk peran-peran tersebut. Misalnya, mengupload DAG ke folder /dags/Admin akan memberikan izin ke DAG ini ke peran Admin. Peran Airflow bawaan termasuk Admin, Operasi, Pengguna, Pengakses Lihat-Saja, dan Publik. Cloud Composer membuat NoDags dan UserNoDags setelah fitur Pendaftaran Peran Per-folder diaktifkan.

Airflow menjalankan pendaftaran peran per folder saat memproses DAG di penjadwal Airflow. Jika ada lebih dari ratusan DAG di lingkungan Anda, Anda mungkin melihat peningkatan waktu penguraian DAG. Jika demikian, sebaiknya tingkatkan parameter [scheduler]max_threads untuk lingkungan Airflow 1, atau [scheduler]parsing_processes untuk Airflow 2.

Menetapkan DAG secara otomatis ke peran per folder

Untuk menetapkan DAG secara otomatis ke peran per folder:

  1. Ganti opsi konfigurasi Airflow berikut:

    Bagian Kunci Nilai
    webserver rbac_autoregister_per_folder_roles True
  2. Ubah peran pendaftaran pengguna baru menjadi peran tanpa akses ke DAG apa pun. Dengan cara ini, pengguna baru tidak memiliki akses ke DAG apa pun hingga Admin menetapkan peran yang memiliki izin untuk DAG tertentu ke akun mereka.

    UserNoDags dan NoDags adalah peran yang dibuat oleh Cloud Composer hanya jika fitur Pendaftaran Peran Per-folder diaktifkan. Peran tersebut setara dengan peran Pengguna, tetapi tanpa akses ke DAG apa pun. Peran UserNoDags dibuat di Airflow 2, dan peran NoDags dibuat di Airflow 1.

    Di Airflow 2, ganti opsi konfigurasi Airflow berikut:

    Bagian Kunci Nilai
    webserver rbac_user_registration_role UserNoDags

    Di Airflow 1, ganti opsi konfigurasi Airflow berikut:

    Bagian Kunci Nilai
    webserver rbac_user_registration_role NoDags
  3. Pastikan pengguna terdaftar di Airflow.

  4. Tetapkan 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 di awal untuk subfolder DAG, dengan nama peran yang cocok dengan nama subfolder, lalu tetapkan pengguna ke peran ini. Misalnya, untuk folder /dags/CustomFolder, buat peran bernama CustomFolder.
  5. Upload DAG ke subfolder dengan nama yang cocok dengan peran yang ditetapkan kepada pengguna. Subfolder ini harus berada di dalam folder /dags di bucket lingkungan. Airflow akan menambahkan izin ke DAG dalam subfolder tersebut, sehingga hanya pengguna dengan peran terkait 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 yang terlihat oleh grup pengguna tertentu.

Untuk mengonfigurasi izin level DAG di UI Airflow:

  1. Admin membuat peran kosong untuk mengelompokkan DAG.
  2. Admin menetapkan peran yang sesuai kepada pengguna.
  3. Admin atau pengguna menetapkan DAG ke peran.
  4. 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 level DAG yang diperlukan untuk 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, yang menentukan peran pengelompokan DAG tempat DAG ditetapkan.

Pada Airflow 2 versi yang lebih lama dari 2.1.0, Admin, developer DAG, atau proses otomatis harus menjalankan sync-perm perintah Airflow untuk menerapkan setelan kontrol akses baru.

Pada Airflow 2.1.0 dan versi yang lebih baru, Anda tidak perlu lagi menjalankan perintah ini karena penjadwal menerapkan izin level DAG saat mengurai DAG.

Aliran udara 2

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

Aliran udara 1

dag = DAG(
  access_control={
    'DagGroup': {'can_dag_edit', 'can_dag_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.

Aliran udara 2

Di Airflow 2, Anda dapat melihat log audit di halaman Browse > Audit Logs di UI Airflow.

Entri di halaman Audit Logs di Airflow 2
Gambar 1. Entri di halaman Audit Logs di Airflow 2

Aliran udara 1

Di Airflow 1, Anda dapat melihat log audit di halaman Browse > Logs.

Entri di halaman Logs di Airflow 1
Gambar 1. Entri di halaman Logs di Airflow 1

Entri standar mencantumkan ID numerik di kolom Pemilik: accounts.google.com:NUMERIC_ID. Anda dapat memetakan ID numerik ke email pengguna di halaman Keamanan > Daftar Pengguna. Halaman ini tersedia untuk pengguna dengan peran Admin.

Perhatikan bahwa hubungan antara identitas Google (alamat email) dan akun pengguna (ID pengguna) tidak tetap.

Langkah selanjutnya