您的位置:  首页 > 技术杂谈 > 正文

Rancher2.6 Monitoring Grafana 对接 LDAP

2022-07-14 16:00 https://my.oschina.net/rancher/blog/5553988 RancherLabs 次阅读 条评论

作者简介
谢泽钦,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/

展开阅读全文
  • 0
    感动
  • 0
    路过
  • 0
    高兴
  • 0
    难过
  • 0
    搞笑
  • 0
    无聊
  • 0
    愤怒
  • 0
    同情
热度排行
友情链接