Prometheus加入BasicAuth认证,通过配置 Prometheus 的 Web 身份验证来限制访问/debug/pprof/

news2025/4/17 10:58:24

Prometheus 作为监控工具,暴露了大量的系统监控数据和配置信息,这些数据可能包含敏感信息。Prometheus 默认没有身份验证,任何能够访问 Prometheus Web 界面的人都可以查看和查询这些数据。

此外Prometheus Web 界面的/debug/pprof/接口存在信息泄露漏洞

如果整改需要重新注释掉net/http/pprof,以及相关代码块,重新编译,比较麻烦,也可以采用这种身份验证来限制访问/debug/pprof/的方式来整改。

步骤如下:

1、创建 Basic Auth 配置文件

首先,我们需要为 Prometheus 创建一个配置文件web_auth.yml,该文件将包含 Basic Auth 用户名和密码。由于 Basic Auth 要求密码以加密的形式存储,我们使用 bcrypt 加密算法来生成加密密码。这里使用python生成(新建一个getPasswd.py,安装 bcrypt 库 pip install bcrypt )

pip install bcrypt
import getpass
import bcrypt

def generate_hashed_password():
    """
    生成加密后的 bcrypt 密码
    """
    try:
        # 获取用户输入的密码
        password = getpass.getpass("请输入密码: ")

        # 确保密码不为空
        if not password:
            print("密码不能为空,请重新输入。")
            return

        # 使用 bcrypt 加密密码
        hashed_password = bcrypt.hashpw(password.encode("utf-8"), bcrypt.gensalt())

        # 输出加密后的密码
        print("\n加密后的密码是:")
        print(hashed_password.decode())

    except Exception as e:
        print(f"发生错误: {e}")

if __name__ == "__main__":
    generate_hashed_password()

如图 运行 getPasswd.py脚本,输入你的密码,getPasswd.py 然后脚本将输出加密后的密码。

在Prometheus目录下创建web_auth.yml配置文件,并将用户名和加密后的密码写入该文件:

用户名可以自己设置,也可以配置多个。

basic_auth_users:
  admin: $2b$12$Wo0adjhgjYiqSstP1fhg0avQOgD5oKYoeDbrqewq596prhMZXTVLZTzgfaeG

可以使用promtool工具检查一下这个配置文件

./promtool check web-config ./web_auth.yml

如图:

2、启动 Prometheus 时指定该配置文件

在 Prometheus 启动时,需要指定配置文件 web.yml

 我这里是使用服务的方式启动的,将 --web.config.file 参数添加到 ExecStart 行,指向web_auth.yml 配置文件。(如果是容器或者直接运行二进制文件启动,也是同理加入如下参数)

./prometheus --web.config.file=/your/path/xxxxx/web_auth.yml

如图:

3、 重新加载 systemd 配置

修改完服务文件后,您需要重新加载 systemd 配置,以便使更改生效:

sudo systemctl daemon-reload

4、重启 Prometheus 服务

sudo systemctl restart prometheus

5、 验证

我们再访问 Prometheus Web 界面和/debug/pprof/ 浏览器会跳出来让输入用户名密码。

6、可以加入抓取目标的身份验证

通过在 scrape_configs 中添加 basic_auth 来实现对其他服务的身份验证。 也就是配置了 basic_auth 后,它会在抓取数据时发送带有用户名和密码的 HTTP 请求。Prometheus 会使用 Authorization HTTP 头部进行身份验证,

例如,如果用户名是 your_username,密码是 your_password,Prometheus 会将它们拼接成 your_username:your_password,然后进行 Base64 编码。最终,这个编码后的字符串会作为 Authorization 头部的一部分发送到目标服务。

scrape_configs 中使用 basic_auth 配置,主要是为了让 Prometheus 在抓取需要身份验证的目标时,能够提供正确的 用户名和密码。这对于访问需要保护的监控端点非常有用,可以防止未经授权的访问。

配置如下:

在prometheus.yml 中加入 basic_auth 配置

  - job_name: "prometheus"
    basic_auth:
      username: admin
      password: yourpasswd

    static_configs:
      - targets: ["localhost:9090"]

7、在 Grafana 的数据源配置中提供相应的认证信息。

如果Grafana 中选择 Prometheus 作为数据源,并且该 Prometheus 实例启用了 基本身份验证(Basic Auth),则需要在 Grafana 的数据源配置中提供相应的认证信息,在 Grafana 配置 Prometheus 数据源时,可以在数据源设置中配置用户名和密码,确保 Grafana 能够通过身份验证连接到 Prometheus 实例。

如图:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2257424.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

再谈多重签名与 MPC

目录 什么是 MPC 钱包以及它们是如何出现的 多重签名和智能合约钱包已经成熟 超越 MPC 钱包 关于小队 多重签名已经成为加密货币领域的一部分,但近年来,随着 MPC(多方计算)钱包的出现,多重签名似乎被掩盖了。MPC 钱包之…

QT 中基于 TCP 的网络通信

基础 基于 TCP 的套接字通信需要用到两个类: 1)QTcpServer:服务器类,用于监听客户端连接以及和客户端建立连接。 2)QTcpSocket:通信的套接字类,客户端、服务器端都需要使用。 这两个套接字通信类…

数值分析—数值积分

研究背景 积分的数学解法为牛顿莱布尼兹公式,数学表示为 ∫ a b f ( x ) d x F ( b ) − F ( a ) \int_{a}^{b} f(x)dxF(b)-F(a) ∫ab​f(x)dxF(b)−F(a),但应用该方法有如下困难: 1, f ( x ) f(x) f(x)的原函数有时不能用初等函…

如何配置Github并在本地提交代码

前提: 可以流畅访问github, 需要一些上网技巧, 这就自行处理了 申请一个github账号 Github官网地址 首先就是邮箱注册啦, github没有对邮箱的限制, 只要是能收邮件的就ok, qq邮箱, 163等都可以使用. 然后和普通注册账号一样, 一路填写需要的信息, 验证邮箱即可. 如何新增代…

Unity控制物体材质球的改变

Unity控制物体材质球的改变 1.前言2.示例单个材质球的获取和更改多个材质球的获取和更改 1.前言 材质球其实就是一个数组&#xff0c;有的只有一个&#xff0c;有的却有多个 2.示例 单个材质球的获取和更改 private Material m_material;m_material GetComponent<Render…

一些硬件知识【2024/12/6】

MP6924A: 正点原子加热台拆解&#xff1a; PMOS 相比 NMOS 的缺点&#xff1a; 缺点描述迁移率低PMOS 中的空穴迁移率约为电子迁移率的 1/3 到 1/2&#xff0c;导致导通电流较低。开关速度慢由于迁移率较低&#xff0c;PMOS 的开关速度比 NMOS 慢&#xff0c;不适合高速数字电…

数据结构排序算法详解

数据结构排序算法详解 1、冒泡排序&#xff08;Bubble Sort&#xff09;2、选择排序&#xff08;Selection Sort&#xff09;2、插入排序&#xff08;Insertion Sort&#xff09;4、快速排序&#xff08;Quick Sort&#xff09; 1、冒泡排序&#xff08;Bubble Sort&#xff09…

【CKS最新模拟真题】获取多个集群的上下文名称并保存到指定文件中

文章目录 前言一、TASK二、解题过程1、问题一解题2、问题二解题 前言 月底考CKS,这是最新版的CKS模拟题 环境k8s版本ubuntu1.31 考试期间允许访问的资源地址&#xff0c;支持将英文翻译为中文文档 文档地址kubernetes文档https://kubernetes.io/docs https://kubernetes.io…

Linux上的C语言编程实践

说明&#xff1a; 这是个人对该在Linux平台上的C语言学习网站笨办法学C上的每一个练习章节附加题的解析和回答 ex1: 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后运行它看看发生了什么。 vim ex1.c打开 ex1.c 文件。假如我们删除 return 0…

Fastadmin地图插件在表单中的使用

表单中实现地图选择获取经纬度 1.Fastadmin后台安装地图选择插件地图位置(经纬度)选择插件 - 支持百度地图、高德地图、腾讯地图 – 基于ThinkPHP和Bootstrap的极速后台开发框架 2.腾讯地图开放平台后台创建应用创建KEY&#xff0c;配置逆地址解析额度。插件配置中配置腾讯地图…

Java项目实战II基于微信小程序的电子竞技信息交流平台的设计与实现(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、核心代码 五、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 随着互联网技术的飞速发展…

计算机网络期末常见问答题总结

1、试说明为什么在运输建立时使用三报文握手&#xff0c;如果不采用三报文握手会出现什么情况&#xff1f; TCP三次握手的目的是确保客户端和服务器都能够接收对方的连接请求,并建立起可靠的连接。如果只进行两次握手,可能会导致以下情况的发生: - 如果客户端发送的SYN包在网…

kubesphere搭建 postgres15

创建configMap POSTGRES_PASSWORD数据库密码 PGDATA数据目录 创建【有状态副本集】工作负载 1.创建基本信息 2.容器组设置 配置环境变量 3.存储设置 完成之后点击下一步 配置服务 创建服务 配置基本信息 配置服务信息 外部访问选择nodePort&#xff0c;然后点击…

【55 Pandas+Pyecharts | 实习僧网Python岗位招聘数据分析可视化】

文章目录 &#x1f3f3;️‍&#x1f308; 1. 导入模块&#x1f3f3;️‍&#x1f308; 2. Pandas数据处理2.1 读取数据2.2 查看数据信息2.3 去除重复数据2.4 调整部分城市名称 &#x1f3f3;️‍&#x1f308; 3. Pyecharts数据可视化3.1 招聘数量前20岗位3.2 各城市招聘数量3…

/usr/local/go/bin/go: cannot execute binary file: Exec format error

现象&#xff1a;ubuntu中安装go软件环境&#xff0c;报上述错误 原因&#xff1a;系统与软件不适配 解决&#xff1a;查看本系统的版本 找到x86-64对应的go版本即可

记录模板学习(持续更新)

目的&#xff1a; 学习C模板的编写&#xff0c;使用模板类包装一个可调用对象 可调用对象包括&#xff1a;普通函数&#xff0c; lambda表达式&#xff0c; 类成员函数 可以参考到QtConcurrent::run的实现&#xff0c;可以看到这个函数有非常多重载&#xff0c;其中可以接受类…

从0开始边做边学,用vue和python做一个博客,非规范化项目,怎么简单怎么弄,跑的起来有啥毛病解决啥毛病(三)

基础的内容都差不多了&#xff0c;开始研究文章详情页的内容设计&#xff0c;程序员嘛肯定要用markdown编辑了&#xff0c;找了一些发现这个md-editor看着还不错&#xff0c;文档介绍页比较清晰&#xff0c;用着也比较简单。 md-editor安装配置使用Mock.js模拟请求接口mock.js …

Android 逆向/反编译/Hook修改应用行为 基础实现

前言&#xff1a;本文通过一个简单的情景案例实现安卓逆向的基本操作 一、情景描述 本文通过一个简单的情景案例来实现安卓逆向的基本操作。在这个案例中所使用的项目程序是我自己的Demo程序&#xff0c;不会造成任何的财产侵害&#xff0c;本文仅作为日常记录及案例分享。实…

从0开始深度学习(35)——YOLO V5原理详解

以YOLO V5s为例&#xff0c;介绍YOLO V5的网络结构&#xff0c;以及其中具体的功能模块 1 YOLO V5的整体网络结构 YOLO V5网络结构分为四个部分&#xff1a; 输入端&#xff1a; 输入端负责对输入图像进行预处理&#xff0c;包括数据增强、锚框计算等。骨干网络&#xff08;Ba…

云计算vspere 安装过程

1 材料的准备 1 安装虚拟机 vmware workstation 2 安装esxi 主机 3 在esxi 主机上安装windows 2018 dns 服务器 4 在虚拟机上安装windows 2018 服务器 6 安装vcenter 5 登入界面测试 这里讲一下&#xff0c;由于部署vspere 需要在windows 2012 服务器上部…