Базовая настройка Apache AirFlow

Подготовка Active Directory

  • Создаем системного пользователя который будет авторизовываться в Active Directory
  • Создаем группу члены которой смогут использовать AirFlow

Пример интеграции с Active Directory

Добавляем в файл airflow.cfg папаметры в секцию [webserver]:

authenticate = True
auth_backend = airflow.contrib.auth.backends.ldap_auth
rbac = True

Выносим webserver_config.py из Docker Compose во внешний файл:

...
  volumes:
    - ${AIRFLOW_PROJ_DIR:-.}/dags:/opt/airflow/dags
    - ${AIRFLOW_PROJ_DIR:-.}/logs:/opt/airflow/logs
    - ${AIRFLOW_PROJ_DIR:-.}/plugins:/opt/airflow/plugins
    - ${AIRFLOW_PROJ_DIR:-.}/airflow.cfg:/opt/airflow/airflow.cfg
    - ${AIRFLOW_PROJ_DIR:-.}/webserver_config.py:/opt/airflow/webserver_config.py
...

Конфигурация webserver_config.py для интеграции с Active Directory:

from __future__ import annotations

import os

# from airflow.www.fab_security.manager import AUTH_DB
from airflow.www.fab_security.manager import AUTH_LDAP

basedir = os.path.abspath(os.path.dirname(__file__))

# Flask-WTF flag for CSRF
WTF_CSRF_ENABLED = True
WTF_CSRF_TIME_LIMIT = None

AUTH_TYPE = AUTH_LDAP
#AUTH_TYPE = AUTH_DB

AUTH_LDAP_SERVER = 'ldap://10.77.77.250:389'

AUTH_LDAP_SEARCH = 'DC=gefest,DC=local'
AUTH_LDAP_UID_FIELD = 'sAMAccountName'
AUTH_LDAP_ALLOW_SELF_SIGNED = True
AUTH_LDAP_BIND_USER = 'CN=airflow_smsfinance,OU=Service Users,OU=IT,OU=SmsFinance,DC=gefest,DC=local'
AUTH_LDAP_BIND_PASSWORD = 'xxxPASSWORDxxx'

AUTH_USER_REGISTRATION = True

AUTH_ROLES_MAPPING = {
    "CN=airflow-super-users,OU=Groups,OU=IT,OU=SmsFinance,DC=gefest,DC=local": ["Admin"],
    "CN=airflow-users,OU=Groups,OU=IT,OU=SmsFinance,DC=gefest,DC=local": ["Viewer"],
}

AUTH_LDAP_GROUP_FIELD = "memberOf"
AUTH_ROLES_SYNC_AT_LOGIN = True
PERMANENT_SESSION_LIFETIME = 1800

Настройка отправки почты из Air Flow

Пример конфигурации AirFlow.cfg

[smtp]
smtp_host = 10.77.77.101
smtp_starttls = True
smtp_ssl = False
smtp_user = airflow_smsfinance
smtp_password = xxxPASSWORDxxx
smtp_port = 25
smtp_mail_from = airflow_smsfinance@smsfinance.ru
smtp_timeout = 30
smtp_retry_limit = 5

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *