【Prometheus】为Prometheus设置basic_auth访问权限

部署运行你感兴趣的模型镜像

        Prometheus目前已经成为国、内外互联网行业,一款非常知名的免费监控工具,我们可以通过它,以及Prometheus官方、第三方提供的一些exporter工具,对系统、中间件、数据库等一系列的软、硬件的运行数据,进行采集、存储、监控和告警。但是,随着系统安全要求的越来越严格,prometheus的 targets 在没有任何安全防护的情况下可以被随意访问,是存在一定的安全风险的。

      

       所以,下面我们就根据官方提供的说明,对Prometheus进行的表达式浏览器以及HTTP API的访问,进行一个“基础认证”(basic authentication,简称basic_auth)加固。

       第一步,我们需要一个安装了Python3的操作系统,这里我使用的系统版本是 AlmaLinux 8.10。这个系统自带的Python3版本为3.6.8版本,我这里先使用二进制包,将版本升级到官方最新的3.13.0稳定版(大家可升级,可不升级,自己决定即可)。

# 安装必须的依赖包
dnf -y install gcc zlib* libffi-devel

# 下载并安装3.13.0版本的python3
tar -xf Python-3.13.0.tar.xz
cd Python-3.13.0/
./configure --prefix=/usr/local/python3 --enable-optimizations
make 
make install

# 备份原先的python3和pip3程序文件
cd /usr/bin
mv python3 python3bak
mv pip3 pip3bak

# 创建软连接
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

# 检查版本
# python3 -V
Python 3.13.0
# pip3 -V
pip 24.2 from /usr/local/python3/lib/python3.13/site-packages/pip (python 3.13)

# 安装 bcrypt 库
pip3 install bcrypt

备注:以上操作需要虚拟机可以联网。

       第二步,我们创建一个gen-pass.py文件,文件内容如下:

import getpass
import bcrypt

password = getpass.getpass("password: ")
hashed_password = bcrypt.hashpw(password.encode("utf-8"), bcrypt.gensalt())
print(hashed_password.decode())

注意,password: 后面有一个空格,这里就是我们在执行这个py脚本时需要手动输入密码。

       第三步,执行上面的py脚本

# python3 ./gen-pass.py
password: 
$2b$12$Wo0aNNYiqSstP1fpD0avQOgD5oKYoeDbX8A596prhMZXTVLZTzaeG

注意,在出现password:时,我们需要输入一个密码,然后下面的一长串字符串,就是密码加密后的字符串。

       第四步,我们在prometheus的安装目录下,创建一个名称为web.yml文件,内容如下

basic_auth_users:
    admin: $2b$12$Wo0aNNYiqSstP1fpD0avQOgD5oKYoeDbX8A596prhMZXTVLZTzaeG

注意,admin是用户名,冒号后面有一个空格,不能丢!空格后面就是上一步生成的加密串。

使用promtool工具来校验web.yml文件的格式配置,校验成功。

# ./promtool check web-config ./web.yml 
./web.yml SUCCESS

       第五步,重启prometheus,在启动命令参数里面加上 --web.config.file=./web.yml

./prometheus --web.config.file=./web.yml --web.listen-address="192.168.223.10:19090" --web.enable-lifecycle --storage.tsdb.retention=30d &

       最后,我们通过浏览器来访问prometheus的URL地址时,会先弹出一个登录窗口,输入用户名(admin)和密码(你设置明文密码),即可成功访问prometheus。

       

       另外,如果prometheus配置了basic_auth,那么将prometheus作为数据源配置到Grafana时,也需要将basic_auth的信息配置到Grafana里面,如下图所示。

      

参考:

https://prometheus.io/docs/guides/basic-auth/

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cnskylee

技术分享我是认真的,期待您打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值