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
访问 Rancher explorer UI,进入 Apps & Marketplace,选择 Monitoring,在配置选项中选择 Edit YAML:
rancher-1
开启 LDAP 认证配置
在grafana.grafana.ini
层级下新增如下auth.ldap
配置信息开启 LDAP:
rancher-2
3.在grafana
层级下,添加 LDAP 认证参数
参数说明:
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
:用户搜索起点。
配置好之后启动监控。
等待监控启动成功后,打开 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
也可以通过命令行导入相关证书:
LDAP SSL 认证配置
编辑 Monitoring yaml 配置
在
grafana
层级下,添加extraSecretMounts
挂载 secret 证书:
LDAP 开启 SSL 认证:
port
设置为 636 SSL 加密端口use_ssl
设置为 true,ssl_skip_verify
设置为 false,开启 SSL 认证root_ca_cert
、client_cert
、client_key
配置证书路径
配置好之后启动监控。
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/
版权声明: 本文为 InfoQ 作者【Rancher】的原创文章。
原文链接:【http://xie.infoq.cn/article/4c8279c0f6a200ab8075253c6】。文章转载请联系作者。
评论