#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?