Airflow Настройка AD / LDAP Admin Пользователи и обычные пользователи - PullRequest
0 голосов
/ 27 июня 2018

У меня успешно настроен Airflow для работы с моим AD / LDAP, когда каждый является суперпользователем и профилировщиком данных. Но теперь я хочу определить группу администраторов и обычную группу пользователей. У меня есть следующие настройки,

Рабочая конфигурация, где каждый является администратором:

# set a connection without encryption: uri = ldap://<your.ldap.server>:<port>
uri = ldap://123.456.789:123
user_filter = objectClass=*
# in case of Active Directory you would use: user_name_attr = sAMAccountName
user_name_attr = sAMAccountName
# group_member_attr should be set accordingly with *_filter
# eg :
#     group_member_attr = groupMembership
#     superuser_filter = groupMembership=CN=airflow-super-users...
group_member_attr = member
group_name_attr = CN
group_filter = objectclass=group
bind_user = CN=blah,OU=foo,DC=us,DC=bar,DC=com
bind_password = yahoo
basedn = DC=us,DC=bar,DC=com
# Set search_scope to one of them:  BASE, LEVEL , SUBTREE
# Set search_scope to SUBTREE if using Active Directory, and not specifying an Organizational Unit
search_scope = SUBTREE

Новый конфиг с определенной группой администраторов:

# set a connection without encryption: uri = ldap://<your.ldap.server>:<port>
uri = ldap://123.456.789:123
user_filter = objectclass=*
# in case of Active Directory you would use: user_name_attr = sAMAccountName
user_name_attr = sAMAccountName
# group_member_attr should be set accordingly with *_filter
# eg :
#     group_member_attr = groupMembership
#     superuser_filter = groupMembership=CN=airflow-super-users...

superuser_filter = memberOf=CN=MyAdminGroupName,OU=foo,DC=us,DC=bar,DC=com
data_profiler_filter = memberOf=CN=MyAdminGroupName,OU=foo,DC=us,DC=bar,DC=com

group_member_attr = member
group_name_attr = CN
group_filter = objectclass=group
bind_user = CN=blah,OU=foo,DC=us,DC=bar,DC=com
bind_password = yahoo
basedn = DC=us,DC=bar,DC=com
# Set search_scope to one of them:  BASE, LEVEL , SUBTREE
# Set search_scope to SUBTREE if using Active Directory, and not specifying an Organizational Unit
search_scope = SUBTREE

Ресурс: https://airflow.apache.org/security.html

В этой новой конфигурации я могу войти в интерфейс Airflow, но больше не могу просматривать вкладку «Администратор». Я на 100% уверен, что являюсь частью группы администраторов MyAdminGroupName . Я также не уверен, куда поместить имя моей обычной группы пользователей MyRegularGroupName .

Может кто-нибудь подсказать мне, как настроить мою группу администраторов ( MyAdminGroupName ) и мою обычную группу пользователей ( MyRegularGroupName )?

1 Ответ

0 голосов
/ 22 февраля 2019

Я также боролся с настройкой LDAP в Airflow.

Прежде всего: Что такое group_filter = objectclass=group в вашей конфигурации? Я не могу найти его в документах или в ldap_auth.py.

Тогда ваш group_member_attr установлен на member, но в фильтрах запросов вы используете memberOf, поэтому я предполагаю, что memberOf должен быть вашим group_member_attr (обычно, если вы используете Active Directory).

Твои superuser_filter и data_profiler_filter выглядят хорошо для меня. Для тех, кто читает это: фильтры вставляются в строку, подобную этой, в коде: (&(<FILTER_HERE>)), поэтому, если вы хотите создать более сложный фильтр, примите это во внимание. Например. Я хотел дать только три пользователя права суперпользователя (используя переменные окружения для конфигурации):

AIRFLOW__LDAP__SUPERUSER_FILTER: "&(objectCategory=Person)(|(sAMAccountName=user1)(sAMAccountName=user2)(sAMAccountName=user3))(memberOf=CN=MyDepartment,OU=Departments,OU=UserGroup,DC=MyCompany,DC=local)"

Относительно вашего вопроса о MyRegularUserGroup: Полагаю, вы можете указать пользовательский фильтр для фильтрации лиц в вашей обычной группе пользователей, а затем указать группу администраторов для суперпользователя и профилировщика данных. Но это работает только в том случае, если группа администраторов является подмножеством группы обычных пользователей.

Надеюсь, это поможет.

...