侧边栏壁纸
  • 累计撰写 175 篇文章
  • 累计创建 87 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

sentry前端异常捕获平台集成ldap

Z先森
2021-11-10 / 0 评论 / 0 点赞 / 7 阅读 / 2634 字 / 正在检测是否收录...

官方自带的ldap插件不支持openldap,得找第三方插件,第三方插件在官方提供的docker集成里面安装并不是那么方便,先说官方的方法:

echo "sentry-ldap-auth" >>sentry/requirements.txt

然后重启docker-compose,这样会发现起不来,看日志发现官方的docker并没有gcc和一些需要的相关依赖,这时候需要重新构造自己的docker镜像才行。 ###重构镜像 由于用的是docker-compose,重启后docker会销毁重来,如果直接进去系统安装,那么会导致重启后依赖环境没有了,所以这里干脆重新build一个镜像,下面放上Dockerfile:

FROM getsentry/sentry:nightly
RUN apt-get update && \
    apt-get install -y --no-install-recommends gcc libsasl2-dev python-dev libldap2-dev libssl-dev && \
    rm -r /var/lib/apt/lists/*
ENTRYPOINT ["/entrypoint.sh"]

重新构造后有两个选择

  • 可以把原镜像打个新的tag,然后把新构造的打原镜像的tag

  • 直接打一个新的tag,修改.env内容,SENTRY_IMAGE=getsentry/sentry:nightly 改成 SENTRY_IMAGE=getsentry/sentry:new

这时候再按官方的方法:

echo "sentry-ldap-auth" >>sentry/requirements.txt

###添加ldap代码配置 然后在sentry/sentry.conf.py底部加入如下内容:

###########
# LDAP/AD #
###########
# 下面有三处关键处,决定到ldap登陆后是否会报无组织的错误,不确定是某一处还是三处都会导致,懒得验证了
import ldap
from django_auth_ldap.config import LDAPSearch, GroupOfUniqueNamesType

AUTH_LDAP_SERVER_URI = 'ldap://{ldapserver}'
AUTH_LDAP_BIND_DN = 'cn=xx,dc=xx,dc=com'
AUTH_LDAP_BIND_PASSWORD = '{adminpassword}'

AUTH_LDAP_USER_SEARCH = LDAPSearch(
    'ou=xx,ou=xxs,dc=xx,dc=xx',
    ldap.SCOPE_SUBTREE,
    '(mail=%(user)s)',
)

AUTH_LDAP_GROUP_SEARCH = LDAPSearch(
    '',
    ldap.SCOPE_SUBTREE,
    '(objectClass=groupOfUniqueNames)'
)

AUTH_LDAP_GROUP_TYPE = GroupOfUniqueNamesType()
AUTH_LDAP_REQUIRE_GROUP = None
AUTH_LDAP_DENY_GROUP = None

AUTH_LDAP_USER_ATTR_MAP = {
    'name': 'cn',
    'email': 'mail'
}

AUTH_LDAP_FIND_GROUP_PERMS = False
AUTH_LDAP_CACHE_GROUPS = True
AUTH_LDAP_GROUP_CACHE_TIMEOUT = 3600

AUTH_LDAP_DEFAULT_SENTRY_ORGANIZATION = u'Sentry'
AUTH_LDAP_SENTRY_ORGANIZATION_ROLE_TYPE = 'member' # 关键,默认角色为member
AUTH_LDAP_SENTRY_SUBSCRIBE_BY_DEFAULT = True #关键,开启默认角色
AUTH_LDAP_SENTRY_GROUP_ROLE_MAPPING = {
    'owner': ['sysadmins'],
    'admin': ['devleads'],
    'member': []  # 关键,未映射的角色为member
}
AUTH_LDAP_SENTRY_ORGANIZATION_GLOBAL_ACCESS = True
AUTH_LDAP_SENTRY_USERNAME_FIELD = 'uid'

AUTHENTICATION_BACKENDS = AUTHENTICATION_BACKENDS + (
    'sentry_ldap_auth.backend.SentryLdapBackend',
)

import logging
logger = logging.getLogger('django_auth_ldap')
logger.addHandler(logging.StreamHandler())
logger.setLevel('DEBUG')

重启docker-compose即可

###验证 接入ldap后,sentry平台上看不出任何变化(插件出也没多出东西),所以怎么验证是否生效呢,就是直接用ldap用户登录平台,成功登录即搞定了

0

评论区