Настройте существующий сервер ldap в Airflow 2.2.2 с помощью docker-compose

#docker #docker-compose #ldap #airflow #podman-compose

#docker #docker-compose #ldap #воздушный поток #podman-compose

Вопрос:

В настоящее время я пытаюсь настроить Airflow 2.2.2, запускаемый с помощью podman-compose (версия 0.1.7dev, podman 3.2.3), для использования нашего существующего сервера ldap для аутентификации, который уже используется многими приложениями. Для первых тестов я запустил контейнеры airflow с помощью podman-compose (аналогично https://github.com/astronomer/airflow-ldap-example/blob/main/docker-compose.yaml , но без контейнеров ldap, потому что наш сервер ldap уже существует) с изображением airflow-2.2.2-python3.8. Затем я переключился на дефолт webserver_config.py в контейнере веб-сервера и перезапустил веб-сервер изнутри контейнера. Когда я пытаюсь войти в систему с моим паролем ldap, airflow возвращает «Неверный логин. Пожалуйста, попробуйте еще раз «. The webserver_config.py выглядит примерно так:

 import os
from airflow import configuration as conf
from flask_appbuilder.security.manager import AUTH_LDAP


SQLALCHEMY_DATABASE_URI = conf.get("core", "SQL_ALCHEMY_CONN")
CSRF_ENABLED = True

AUTH_TYPE = AUTH_LDAP
AUTH_ROLE_ADMIN = "Admin"
AUTH_LDAP_SERVER = "ldaps://examplehost:636"

# registration configs
AUTH_USER_REGISTRATION = False
AUTH_LDAP_FIRSTNAME_FIELD = "givenName"
AUTH_LDAP_LASTNAME_FIELD = "surname"
AUTH_LDAP_EMAIL_FIELD = "mail"
# Required if not mapping from LDAP DN
# AUTH_USER_REGISTRATION_ROLE = "Viewer"

# search configs
AUTH_LDAP_SEARCH = "ou=Adminaccounts,ou=Accounts,ou=VRZ,dc=v990dtv1,dc=example6,dc=example7"
AUTH_LDAP_UID_FIELD = "Name"
AUTH_LDAP_BIND_USER = "bindUser"
AUTH_LDAP_BIND_PASSWORD = "bindUserPassword"

# mapping from LDAP DN to airflow roles
AUTH_ROLES_MAPPING = {
    "cn=ADMIN,ou=example,ou=example2,ou=example3,ou=example4,dc=example5,dc=example6,dc=example7": ["Admin"],
    "cn=USER,ou=example,ou=example2,ou=example3,ou=example4,dc=example5,dc=example6,dc=example7": ["Viewer"],
}
AUTH_LDAP_GROUP_FIELD = "memberOf"
AUTH_ROLES_SYNC_AT_LOGIN = True
PERMANENT_SESSION_LIFETIME = 1800

# LDAPS
AUTH_LDAP_USE_TLS = False
AUTH_LDAP_ALLOW_SELF_SIGNED = False
#AUTH_LDAP_TLS_CACERTFILE = '/etc/ssl/certs/ca-certificates.crt'
 

Я ничего не менял в airflow.cfg/docker-compose.yaml. Нужно ли мне генерировать какие-либо сертификаты для airflow, чтобы иметь возможность доступа к серверу ldap, или что-то не так в webserver_config.py ?

И есть ли какой-либо другой способ изменить конфигурацию в webserver_config.py ? Например. путем установки эксцизионного webserver_config.py в контейнер или через переменные среды в docker-compose.yaml?