CnOps 智能运维与可观测社区
首页开源项目实践文章视频课程常见问答开发者工具STAROps 专题
导航菜单
首页开源项目实践文章视频课程常见问答开发者工具STAROps 专题

CnOps 智能运维与可观测社区

愿景

CnOps 智能运维与可观测社区是一个以"智能运维与可观测"为核心的开放、包容、分享的技术社区,旨在聚集运维专家、开发者和爱好者,共同探讨、学习和分享可观测最佳实践与最新技术,与众多技术社区合作互动,共同探讨交叉领域的技术挑战,推动可观测领域的创新与进步。

内容社区

  • 实践文章
  • 视频课程
  • 开源项目
  • 常见问答
  • 开发者工具

友情链接

  • Prometheus
  • Grafana Lab
  • OpenTelemetry
  • LoongCollector

关注我们

阿里云云原生公众号阿里云云原生
阿里云可观测公众号阿里云可观测

Copyright © 2026 CnOps 社区. All rights reserved.

首页/开源项目/Prometheus/使用基本认证保护 Prometheus API 和 UI 端点
文档目录
Docker Swarm使用 Prometheus 查询日志使用 TLS 加密保护 Prometheus API 和 UI 端点使用基本认证保护 Prometheus API 和 UI 端点使用 cAdvisor 监控 Docker 容器指标为 Prometheus 对 Go 应用程序进行插桩理解和使用多目标 Exporter 模式将 Prometheus 用作 OpenTelemetry 后端Prometheus 中的 UTF-8

Prometheus

使用基本认证保护 Prometheus API 和 UI 端点

Prometheus 支持通过基本认证(又称 "basic auth")来连接 Prometheus 表达式浏览器和 HTTP API。 NOTE: 本教程介绍的是连接到 Prometheus 实例的基本认证。Prometheus 也支持在从 Prometheus 实例连接到抓取目标时使用基本认证。 假设你希望所有访问 Prometheus 实例的用户都需要提供用户名和密码。在本示例中,使用...

Prometheus 支持通过基本认证(又称 "basic auth")来连接 Prometheus 表达式浏览器和 HTTP API。

NOTE: 本教程介绍的是连接到 Prometheus 实例的基本认证。Prometheus 也支持在从 Prometheus 实例连接到抓取目标时使用基本认证。

对密码进行哈希处理

假设你希望所有访问 Prometheus 实例的用户都需要提供用户名和密码。在本示例中,使用 admin 作为用户名,并选择任意密码。

首先,生成密码的 bcrypt 哈希值。我们将使用 python3-bcrypt 来生成哈希密码。

假设你运行的是类 Debian 发行版,可以通过运行 apt install python3-bcrypt 来安装它。还有其他方式可以生成哈希密码;如果只是测试,你也可以使用在线 bcrypt 生成器。

以下是一个使用 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())

将该脚本保存为 gen-pass.py 并运行:

$ python3 gen-pass.py

它会提示你输入密码:

password:
$2b$12$hNf2lSsxfm0.i4a.1kVpSOVyBCfIB51VRjgBUyv6kdnyTlgWj81Ay

在本示例中,我使用的密码是 "test"。

保存好该密码,我们将在后续步骤中使用它!

创建 web.yml

让我们创建一个 web.yml 文件(文档),内容如下:

basic_auth_users:
    admin: $2b$12$hNf2lSsxfm0.i4a.1kVpSOVyBCfIB51VRjgBUyv6kdnyTlgWj81Ay

你可以使用 promtool check web-config web.yml 来验证该文件

$ promtool check web-config web.yml
web.yml SUCCESS

你可以在该文件中添加多个用户。

启动 Prometheus

你可以使用 web 配置文件启动 Prometheus,如下所示:

$ prometheus --web.config.file=web.yml

测试

你可以使用 cURL 与你的配置进行交互。尝试以下请求:

curl --head http://localhost:9090/graph

这将返回 401 Unauthorized 响应,因为你没有提供有效的用户名和密码。

要成功使用基本认证访问 Prometheus 端点,例如 /metrics 端点,请使用 -u 标志提供正确的用户名,并在提示时输入密码:

curl -u admin http://localhost:9090/metrics
Enter host password for user 'admin':

这应该会返回 Prometheus 指标输出,看起来类似于:

# HELP go_gc_duration_seconds A summary of the GC invocation durations.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 0.0001343
go_gc_duration_seconds{quantile="0.25"} 0.0002032
go_gc_duration_seconds{quantile="0.5"} 0.0004485
...

总结

在本指南中,你将用户名和哈希密码存储在 web.yml 文件中,并使用所需参数启动 Prometheus,通过该文件中的凭据对访问 Prometheus HTTP 端点的用户进行身份验证。

文章大纲