写点什么

Rancher2.6 Monitoring Grafana 对接 LDAP

作者:Rancher
  • 2022 年 7 月 14 日
  • 本文字数:2777 字

    阅读完需:约 9 分钟

Rancher2.6 Monitoring Grafana 对接 LDAP

作者简介

谢泽钦,SUSE Rancher 技术支持工程师,负责订阅客户的维护与售后技术支持服务,提供相关技术解决方案。拥有 CKA、CKS 官方认证,多年云计算领域经验,经历了从 OpenStack 到 Kubernetes 的技术变革,对底层操作系统、KVM 虚拟化和 Docker 容器等相关云原生技术拥有丰富的实践经验。

Rancher Monitoring 介绍

在 Rancher 管理平台上,我们可以很顺利地在任何支持管理的 Kubernetes 集群上启用 Rancher Monitoring,实现监控告警功能。Rancher Monitoring 默认使用 Prometheus 来提供相关系统和应用服务的监控,并通过 Grafana 的仪表盘可视化工具进行数据统计监控展示。

思考

默认情况下,Rancher 没有对访问 Grafana 的用户进行太多限制,我们可以使用 Anonymous 用户来查看 Rancher 部署的任何默认仪表盘展示界面。但更多情况下,我们需要通过 Grafana 来制定自定义的仪表盘,此时 Anonymous 用户的 ReadOnly 权限就无法满足我们的需求,但是登录 admin 用户又会对 Grafana 造成一定安全隐患。此时就需要这么一套用户管理系统来管理 Grafana 的用户,对访问的用户进行一定权限的限制与管控。


虽然我们可以使用 Grafana 自带的用户管理列表来对访问的用户进行一定的权限管理,但是这需要额外维护一套用户列表。那么,可不可以直接对接企业内部的 LDAP 系统,从而减少维护用户的成本呢?


答案是肯定的。从 Rancher2.5 版本开始,监控架构进行了调整,允许用户自定义更多相关组件的配置。本文将介绍在 Rancher2.6 上,如何通过配置 Rancher Monitoring 来进行 Grafana 对接 LDAP 认证。

先决条件

  • Rancher:2.6.4

  • k8s:1.20.11

  • monitoring:100.1.2+up19.0.3

  • OpenLDAP:1.5.0

详细操作

Grafana 对接 LDAP

编辑 Monitoring Yaml 配置 LDAP

  1. 访问 Rancher explorer UI,进入 Apps & Marketplace,选择 Monitoring,在配置选项中选择 Edit YAML:



rancher-1


  1. 开启 LDAP 认证配置


grafana.grafana.ini层级下新增如下auth.ldap配置信息开启 LDAP:


grafana:  grafana.ini:    auth.ldap:      allow_sign_up: true      config_file: /etc/grafana/ldap.toml      enabled: true
复制代码



rancher-2


3.在grafana层级下,添加 LDAP 认证参数


grafana:  ldap:    config: |      [[servers]]      host = "test.zerchin.xyz"       port = 389      use_ssl = false      start_tls = false      ssl_skip_verify = true      bind_dn = "cn=admin,dc=rancherldap,dc=com"      bind_password = 'Rancher123'      search_filter = "(cn=%s)"      search_base_dns = ["cn=group,ou=rancher,dc=rancherldap,dc=com"]      [servers.attributes]      name = "givenName"      surname = "sn"      username = "cn"      member_of = "memberOf"      email = "email"    enabled: true
复制代码


参数说明


host:LDAP 服务器地址(IP/Domain,指定多个地址空格分隔)。

port:LDAP 端口,默认是 389,如果 use_ssl=true 则是 636。

use_ssl:是否使用加密 TLS 连接。

start_tls:STARTTLS 是一种明文通信协议的扩展,能够让明文的通信连线直接成为加密连线(使用 SSL/TLS 加密),而不需要使用另一个特别的端口来进行加密通信。

ssl_skip_verify:是否跳过 SSL 证书验证。

bind_dn:LDAP 服务账户用户名。

bind_password:密码(如果密码包含 #,则需要用三个括号引起来,例如:"""#password;""")。

search_filter:用户查询过滤字段,例如"(cn=%s)""(sAMAccountName=%s)""(uid=%s)"

search_base_dns:用户搜索起点。


  1. 配置好之后启动监控。


等待监控启动成功后,打开 Grafana UI 界面,默认账号密码为:admin/prom-operator



grafanar-1

LDAP 验证

登录之后,左侧进入 Server Admin - LDAP,在 LDAP Connection 下可以看到连接的主机。


在 Test user mapping 下,搜索存在的 LDAP 用户,可以查到用户信息。



grafana-2


并且可以使用 LDAP 用户登录访问 Grafana UI 界面。



grafana-3

Grafana 基于 SSL 对接 LDAP

上述方法对接了 LDAP 的 389 端口,我们可以使用此端口进行 LDAP 连接。


但是该端口是非安全和未加密的连接,容易造成安全问题,暴露用户相关信息,一般建议 389 端口仅用在内网或者测试环境。


对于安全要求比较高的环境下,我们可以使用 LDAP 另一个 SSL 加密端口来对接 LDAP 服务:636 端口。

创建证书 secret

cattle-monitoring-system命名空间下,新建一个名叫certs的 secret,其中ca.pem写入 CA 证书,tls.crt写入 LDAP 服务器证书,tls.key写入 LDAP 服务器证书秘钥。



secret-1


也可以通过命令行导入相关证书:


kubectl create secret generic certs -n cattle-monitoring-system --from-file=ca.pem --from-file=tls.crt --from-file=tls.key
复制代码

LDAP SSL 认证配置

编辑 Monitoring yaml 配置


  1. grafana层级下,添加extraSecretMounts挂载 secret 证书:


grafana:  extraSecretMounts:    - defaultMode: 440      mountPath: /opt/certs      name: certs      readOnly: true      secretName: certs
复制代码


  1. LDAP 开启 SSL 认证:


grafana:  ldap:    config: |      [[servers]]       host = "test.zerchin.xyz"       port = 636       use_ssl = true      start_tls = false       ssl_skip_verify = false      root_ca_cert = "/opt/certs/ca.pem"      client_cert = "/opt/certs/tls.crt"      client_key = "/opt/certs/tls.key"      bind_dn = "cn=admin,dc=rancherldap,dc=com"      bind_password = 'Rancher123'       search_filter = "(cn=%s)"       search_base_dns = ["cn=group,ou=rancher,dc=rancherldap,dc=com"]       [servers.attributes]       name = "givenName"       surname = "sn"       username = "cn"       member_of = "memberOf"       email = "email"    enabled: true
复制代码


  • port设置为 636 SSL 加密端口

  • use_ssl设置为 true,ssl_skip_verify设置为 false,开启 SSL 认证

  • root_ca_certclient_certclient_key配置证书路径


  1. 配置好之后启动监控。

LDAP SSL 验证

登录 Grafana,左侧进入 Server Admin - LDAP,在 LDAP Connection 下可以看到,已经连上了 636 SSL 加密端口。


并且在 Test user mapping 下,搜索存在的 LDAP 用户,可以查到用户信息。



grafana-ssl-1


尝试用 LDAP 用户登录,可以正常登录查看数据。



grafana-ssl-2

总结

通过上述配置,我们可以顺利对接企业内部的 LDAP 作为 Grafana 用户管理系统,从而能够直接利用现有的用户管理系统进行统一的用户管理和权限认证。当然我们也可以去对接其他的用户管理系统,例如 okta、saml、github、basic 等等,我们可以根据具体的需求参考 Grafana 官方文档进行配置即可。


Grafana 配置参考:https://grafana.com/docs/grafana/next/setup-grafana/configure-security/configure-authentication/ldap/

发布于: 刚刚阅读数: 4
用户头像

Rancher

关注

牛牛本牛ヾ(◍°∇°◍)ノ゙ 2019.09.17 加入

SUSE Rancher是一个开源的企业级Kubernetes管理平台,实现了Kubernetes集群在混合云+本地数据中心的集中部署与管理。目前Rancher在全球拥有超过三亿的核心镜像下载量。

评论

发布
暂无评论
Rancher2.6 Monitoring Grafana 对接 LDAP_Kubernetes_Rancher_InfoQ写作社区