Sentry. LDAP-авторизация — различия между версиями

Материал из megapuper
Перейти к: навигация, поиск
(Новая страница: «Достался старенький Sentry 22.6.0 требовалось прикрутить к нему LDAP-авторизацию. Работает всё…»)
 
 
(не показаны 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 Сделал там копию того что в дистрибутиве