Дружим Sentry Self-Hosted и LDAP

от автора

Sentry из коробки поддерживает большое множество средств для авторизации, появилась необходимость использовать уже существующие учетные записи с нужными правами.

Из этого появилась небольшая инструкция по установке Sentry Self-Hosted и подключения к LDAP.

Для установки Sentry Self-Hosted потребуется docker, поэтому ставим его в первую очередь, я использую в качестве стенда Ubuntu 22.04 и инструкцию для установки можно взять в документации https://docs.docker.com/engine/install/ubuntu/.

В данном примере используется FreeIPA в роли сервера LDAP.

Установка Sentry

  1. Скачиваем последнюю версию Sentry с Github https://github.com/getsentry/self-hosted/releases/latest

wget https://github.com/getsentry/self-hosted/archive/refs/tags/22.9.0.tar.gz
  1. Распаковываем архив

tar -xzf 22.9.0.tar.gz
  1. Копируем конфигурационный файл sentry/enhance-image.example.sh

cp sentry/enhance-image.example.sh sentry/enhance-image.sh
  1. В файле 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
  1. Копируем конфигурационный файл sentry/sentry.conf.example.py и конфигурируем под себя

cp sentry/sentry.conf.example.py sentry/sentry.conf.py
  1. В конец файла добавляем конфигурацию для подключения к LDAP

############# # LDAP auth # #############  import ldap from django_auth_ldap.config import LDAPSearch, GroupOfUniqueNamesType  AUTH_LDAP_SERVER_URI = 'ldap://freeipa.example.com:389'  AUTH_LDAP_BIND_DN = 'krbprincipalname=sentry/freeipa.example.com@EXAMPLE.COM,cn=services,cn=accounts,dc=example,dc=com'  AUTH_LDAP_BIND_PASSWORD = 'qwerty123'  AUTH_LDAP_USER_SEARCH = LDAPSearch(     'cn=users,cn=accounts,dc=example,dc=com',     ldap.SCOPE_SUBTREE, '(uid=%(user)s)', )  AUTH_LDAP_GROUP_SEARCH = LDAPSearch(     "cn=groups,dc=example,dc=com", ldap.SCOPE_SUBTREE, "(objectClass=groupOfNames)" )  AUTH_LDAP_GROUP_TYPE = GroupOfUniqueNamesType() AUTH_LDAP_REQUIRE_GROUP = None AUTH_LDAP_DENY_GROUP = None  AUTH_LDAP_USER_ATTR_MAP = {     "first_name": "givenname",     "last_name": "sn",     "email": "mail" }  AUTH_LDAP_FIND_GROUP_PERMS = False AUTH_LDAP_CACHE_GROUPS = True AUTH_LDAP_GROUP_CACHE_TIMEOUT = 3600  AUTH_LDAP_DEFAULT_SENTRY_ORGANIZATION = 'Sentry' AUTH_LDAP_SENTRY_ORGANIZATION_ROLE_TYPE = 'member' AUTH_LDAP_SENTRY_ORGANIZATION_GLOBAL_ACCESS = True AUTH_LDAP_SENTRY_SUBSCRIBE_BY_DEFAULT = False  AUTH_LDAP_SENTRY_USERNAME_FIELD = 'cn' SENTRY_MANAGED_USER_FIELDS = ('email', 'first_name', 'last_name', 'password', )  AUTHENTICATION_BACKENDS = AUTHENTICATION_BACKENDS + (     'sentry_ldap_auth.backend.SentryLdapBackend', )  # optional, for debugging import logging logger = logging.getLogger('django_auth_ldap') logger.addHandler(logging.StreamHandler()) logger.addHandler(logging.FileHandler('/var/log/sentry_ldap.log')) logger.setLevel('DEBUG')  LOGGING['overridable'] = ['sentry', 'django_auth_ldap'] LOGGING['loggers']['django_auth_ldap'] = {     'handlers': ['console'],     'level': 'DEBUG' }
  1. Устанавливаем Sentry

./install.sh

на данном этапе происходит сборка образа с нашими зависимостями, поднимается база данных и производятся миграции, создается суперпользователь.

  1. Создаем пользователя

Created internal Sentry project (slug=internal, id=1) Would you like to create a user account now? [Y/n]: Y
  1. После окончания начальной сборки остается только запустить сервис и его компоненты

docker-compose up -d

Sentry никак не показывает что можно войти через LDAP, но мы можем пробовать войти под своей учетной записью LDAP.

Пользователь создается с выставлеными правами


ссылка на оригинал статьи https://habr.com/ru/post/691140/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *