在日常prometheus的使用中是没有安全加密措施的,可能会导致监控信息,敏感信息遭遇泄漏。在这种情况下需要保护对Prometheus的访问。
一、Prometheus Basic Auth 使用背景
在日常prometheus的使用中是没有安全加密措施的,可能会导致监控信息,敏感信息遭遇泄漏。在这种情况下需要保护对Prometheus的访问。
二、方案简介
Prometheus于2.24版本(包括2.24)之后提供Basic Auth功能进行加密访问,在浏览器登录UI的时候需要输入用户密码,访问Prometheus api的时候也需要加上用户密码。

大致步骤如下
-
预制用户密码,其中密码使用python3工具包加密
-
创建对应用户密码配置文件,修改普罗启动命令(operator场景通过ngress-nginx方式)
-
由于Prometheus访问需要认证,如果普罗负载存在探针则修改普罗负载本身的探针配置
-
由于Prometheus访问需要认证,如果有grafana,需要修改grafana相关步骤
三、准备工作,预制用户密码,其中密码使用python3工具包加密
因为Basic Auth 需要user、password 信息。访问Prometheus API的所有行为都需要用户名和密码。普罗配置的密码需要加盐加密,可以使用python3工具进行生成,再配置到普罗的相关配置中,作为登录密码认证使用。
-
安装python3环境
apt install python3-bcrypt -
Python 脚本如下
import getpass import bcrypt password = getpass.getpass("password: ") hashed_password = bcrypt.hashpw(password.encode("utf-8"), bcrypt.gensalt()) print(hashed_password.decode()) -
运行脚本,假如我们需要的密码为: test。
执行脚本后,需要我们手动键入需要使用的密码,在终端键入的时候不显示

保存密码备用:$2b$12$kXxrZP74Fmjh6Wih0Ignu.uWSiojl5aKj4UnMvHN9s2h/Lc/ui0.S
四、prometheus操作配置实践操作
在prometheus的日常使用中,通常有三种方式:
-
容器化部署在集群中
-
通过kube-prometheus部署
-
二进制直接在虚机上部署
三种不同方式安装的prometheus,配置basic auth的方式也略有差异。本文将对这三种使用场景进行Basic auth的配置。
4.1 Prometheus容器化部署添加BasicAuth
默认无需用户、密码等认证方式,直接通过服务IP和端口就能访问到prometheus 的queryAPI和UI界面


如果需要给UI和 prometheus API 添加basic auth,那么该如何做呢?
-
确认prom的版本信息,低于2.24版本的prometheus 不支持配置Basic Auth

存在该启动命令,即可配置basic auth。 -
创建configmap配置项
准备webconfig.yml文件basic_auth_users: admin: $2b$12$kXxrZP74Fmjh6Wih0Ignu.uWSiojl5aKj4UnMvHN9s2h/Lc/ui0.S检测webconfig.yml是否可用:
promtool check web-config webconfig.yml
复用上述的webconfig.yml
kubectl -n monitoring create configmap webconfig --from-file=webconfig.yml
-
将configmap挂

2785

被折叠的 条评论
为什么被折叠?



