Sentry. LDAP-авторизация — различия между версиями
Root (обсуждение | вклад) (Новая страница: «Достался старенький Sentry 22.6.0 требовалось прикрутить к нему LDAP-авторизацию. Работает всё…») |
Root (обсуждение | вклад) |
||
| (не показаны 3 промежуточные версии этого же участника) | |||
| Строка 1: | Строка 1: | ||
| − | Достался старенький Sentry 22.6.0 требовалось прикрутить к нему LDAP-авторизацию. Работает всё на Debian 11. | + | Достался старенький Sentry 22.6.0 требовалось прикрутить к нему LDAP-авторизацию. Работает всё в докере на Debian 11. |
| + | |||
| + | |||
| + | Первым делом подключаем модуль. Дистрибутив Sentry лежит в /root/self-hosted-22.6.0, заходим туда и правим скрипт ./sentry/enhance-image.sh | ||
| + | #!/bin/bash | ||
| + | |||
| + | apt-get update && \ | ||
| + | apt-get install -y --no-install-recommends gcc libsasl2-dev libldap2-dev libssl-dev && \ | ||
| + | rm -r /var/lib/apt/lists/* | ||
| + | pip install sentry-ldap-auth | ||
| + | |||
| + | |||
| + | Затем там же в sentry.conf.py подключаем ldap-авторизацию добавив в самый низ конфига | ||
| + | AUTHENTICATION_BACKENDS = AUTHENTICATION_BACKENDS + ( | ||
| + | 'sentry_ldap_auth.backend.SentryLdapBackend', | ||
| + | ) | ||
| + | |||
| + | import ldap | ||
| + | from django_auth_ldap.config import LDAPSearch, GroupOfNamesType, GroupOfUniqueNamesType | ||
| + | |||
| + | AUTH_LDAP_SERVER_URI = "ldap://ldap.iwad.ru" | ||
| + | AUTH_LDAP_BIND_DN = "cn=admin,dc=iwad,dc=ru" | ||
| + | AUTH_LDAP_BIND_PASSWORD = "password" | ||
| + | |||
| + | # Логин в Sentry вводят как uid | ||
| + | AUTH_LDAP_USER_SEARCH = LDAPSearch( | ||
| + | "dc=iwad,dc=ru", | ||
| + | ldap.SCOPE_SUBTREE, | ||
| + | "(uid=%(user)s)", | ||
| + | ) | ||
| + | |||
| + | AUTH_LDAP_USER_ATTR_MAP = { | ||
| + | "username": "uid", | ||
| + | "name": "cn", | ||
| + | "email": "mail", | ||
| + | } | ||
| + | |||
| + | # Группы (ищем в ou=groups) | ||
| + | AUTH_LDAP_GROUP_SEARCH = LDAPSearch( | ||
| + | "ou=groups,dc=iwad,dc=ru", | ||
| + | ldap.SCOPE_SUBTREE, | ||
| + | "(|(objectClass=groupOfNames)(objectClass=groupOfUniqueNames))", | ||
| + | ) | ||
| + | |||
| + | # Выбираем ОДИН, который соответствует нашей схеме: | ||
| + | # Если в группе атрибут member: | ||
| + | AUTH_LDAP_GROUP_TYPE = GroupOfNamesType() | ||
| + | # Если в группе атрибут uniqueMember: | ||
| + | # AUTH_LDAP_GROUP_TYPE = GroupOfUniqueNamesType() | ||
| + | |||
| + | # Критично: пускать только членов этой группы | ||
| + | AUTH_LDAP_REQUIRE_GROUP = "cn=sentry_users,ou=groups,dc=iwad,dc=ru" | ||
| + | |||
| + | # Опционально: автоматически добавлять в org в Sentry | ||
| + | AUTH_LDAP_DEFAULT_SENTRY_ORGANIZATION = "Infiniti" | ||
| + | AUTH_LDAP_SENTRY_DEFAULT_ORGANIZATION = "Infiniti" | ||
| + | AUTH_LDAP_SENTRY_ORGANIZATION_ROLE_TYPE = "member" | ||
| + | |||
| + | # Если надо, чтобы email считался подтвержденным | ||
| + | AUTH_LDAP_MAIL_VERIFIED = True | ||
| + | |||
| + | |||
| + | Пересобираем | ||
| + | cd /root/self-hosted-22.6.0 | ||
| + | ./install.sh | ||
| + | |||
| + | |||
| + | По окончании | ||
| + | docker-compose up -d | ||
| + | |||
| + | |||
| + | Пробуем логиниться под ldap-учёткой | ||
| + | |||
| + | |||
| + | p.s. не помню в какой момент, но нашёл что конфиг лежит ещё в /etc/sentry/sentry.conf.py Сделал там копию того что в дистрибутиве | ||
Текущая версия на 14:46, 8 апреля 2026
Достался старенький Sentry 22.6.0 требовалось прикрутить к нему LDAP-авторизацию. Работает всё в докере на Debian 11.
Первым делом подключаем модуль. Дистрибутив Sentry лежит в /root/self-hosted-22.6.0, заходим туда и правим скрипт ./sentry/enhance-image.sh
#!/bin/bash
apt-get update && \
apt-get install -y --no-install-recommends gcc libsasl2-dev libldap2-dev libssl-dev && \
rm -r /var/lib/apt/lists/*
pip install sentry-ldap-auth
Затем там же в sentry.conf.py подключаем ldap-авторизацию добавив в самый низ конфига
AUTHENTICATION_BACKENDS = AUTHENTICATION_BACKENDS + (
'sentry_ldap_auth.backend.SentryLdapBackend',
)
import ldap
from django_auth_ldap.config import LDAPSearch, GroupOfNamesType, GroupOfUniqueNamesType
AUTH_LDAP_SERVER_URI = "ldap://ldap.iwad.ru"
AUTH_LDAP_BIND_DN = "cn=admin,dc=iwad,dc=ru"
AUTH_LDAP_BIND_PASSWORD = "password"
# Логин в Sentry вводят как uid
AUTH_LDAP_USER_SEARCH = LDAPSearch(
"dc=iwad,dc=ru",
ldap.SCOPE_SUBTREE,
"(uid=%(user)s)",
)
AUTH_LDAP_USER_ATTR_MAP = {
"username": "uid",
"name": "cn",
"email": "mail",
}
# Группы (ищем в ou=groups)
AUTH_LDAP_GROUP_SEARCH = LDAPSearch(
"ou=groups,dc=iwad,dc=ru",
ldap.SCOPE_SUBTREE,
"(|(objectClass=groupOfNames)(objectClass=groupOfUniqueNames))",
)
# Выбираем ОДИН, который соответствует нашей схеме:
# Если в группе атрибут member:
AUTH_LDAP_GROUP_TYPE = GroupOfNamesType()
# Если в группе атрибут uniqueMember:
# AUTH_LDAP_GROUP_TYPE = GroupOfUniqueNamesType()
# Критично: пускать только членов этой группы
AUTH_LDAP_REQUIRE_GROUP = "cn=sentry_users,ou=groups,dc=iwad,dc=ru"
# Опционально: автоматически добавлять в org в Sentry
AUTH_LDAP_DEFAULT_SENTRY_ORGANIZATION = "Infiniti"
AUTH_LDAP_SENTRY_DEFAULT_ORGANIZATION = "Infiniti"
AUTH_LDAP_SENTRY_ORGANIZATION_ROLE_TYPE = "member"
# Если надо, чтобы email считался подтвержденным
AUTH_LDAP_MAIL_VERIFIED = True
Пересобираем
cd /root/self-hosted-22.6.0 ./install.sh
По окончании
docker-compose up -d
Пробуем логиниться под ldap-учёткой
p.s. не помню в какой момент, но нашёл что конфиг лежит ещё в /etc/sentry/sentry.conf.py Сделал там копию того что в дистрибутиве