我目前正在尝试配置 Airflow 2.2.2,使用 podman-compose(v0.1.7dev,podman 3.2.3)运行,以使用我们现有的 ldap 服务器进行身份验证,该服务器已被许多应用程序使用。对于第一次测试,我通过 podman-compose 启动了气流容器(类似于https://github.com/astronomer/airflow-ldap-example/blob/main/docker-compose.yaml,但没有 ldap 容器,因为我们的 ldap 服务器已经存在)和airflow-2.2.2-python3.8 图像。然后我在 webserver 容器中交换了默认的 webserver_config.py 并从容器内重新启动了 webserver。当我尝试使用我的 ldap 密码登录时,气流返回“无效登录。请重试”。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 中的任何内容。我是否需要为气流生成任何证书才能访问 ldap 服务器,或者 webserver_config.py 中是否有任何问题?
还有其他方法可以更改 webserver_config.py 中的配置吗?例如。通过将现有的 webserver_config.py 安装到容器中或通过 docker-compose.yaml 中的环境变量?