Prometheus 教程

Prometheus HTTPS 和身份验证

Prometheus 支持基本身份验证和 TLS,这只是试验性的,将来可能会改变。

要指定加载哪个 web 配置文件,请使用 --web.config.file 标志。

该文件以 YAML 格式编写,由下述方案定义。括号表示参数为可选参数。对于非列表参数,其值将设置为指定的默认值。

每次 http 请求(如配置中的任何更改)都会读取该文件,并立即获取证书。

通用占位符定义如下:

  • <boolean>:布尔值,取值为 true 或 false

  • <filename>:当前工作目录中的有效路径

  • <secret>:作为秘密(如密码)的正则表达式字符串

  • <string>:正则字符串

下面是一个有效的示例文件:

# TLS 和基本身份验证配置示例。
#
# 此外,还需要证书和密钥文件。
tls_server_config:
  cert_file: server.crt
  key_file: server.key

# 连接 Prometheus 所需的用户名和密码。
# 密码使用 bcrypt 算法散列: 
# https://github.com/prometheus/exporter-toolkit/blob/master/docs/web-configuration.md#about-bcrypt
basic_auth_users:
  alice: $2y$10$mDwo.lAisC94iLAyP81MCesa29IzH37oigHC/42V2pdJlUprsJPze
  bob: $2y$10$hLqFl9jSjoAAy95Z/zw8Ye8wkdMBM8c5Bn1ptYqP/AXyV0.oy0S8m

更多语法:

tls_server_config:
  # 服务器用于验证客户端身份的证书和密钥文件
  cert_file: <filename>
  key_file: <filename>

  # 用于客户端身份验证的服务器策略,映射到 ClientAuth 策略
  # 有关 clientAuth 选项的更多详情:
  # https://golang.org/pkg/crypto/tls/#ClientAuthType
  #
  # 注意:如果要启用客户端身份验证,则需要使用 RequireAndVerifyClientCert,其他值不安全
  [ client_auth_type: <string> | default = "NoClientCert" ]

  # CA 证书,用于客户端对服务器进行证书验证
  [ client_ca_file: <filename> ]

  # 验证客户端证书的主题替代名称 (SAN) 是否与此列表中的条目完全匹配,否则终止连接。
  # SAN 可以是以下一个或多个: DNS、IP、电子邮件或来自
  # https://pkg.go.dev/crypto/x509#Certificate 的 URI 地址。
  [ client_allowed_sans:
    [ - <string> ] ]

  # 可接受的最小 TLS 版本
  [ min_version: <string> | default = "TLS12" ]

  # 可接受的最大 TLS 版本
  [ max_version: <string> | default = "TLS13" ]

  # TLS 1.2 及以下版本支持的密码套件列表。如果为空,则使用 Go 默认的密码套件。
  # 可用的密码套件记录在 go 文档中:
  # https://golang.org/pkg/crypto/tls/#pkg-constants
  #
  # 请注意,只支持以下函数返回的密码:
  # https://pkg.go.dev/crypto/tls#CipherSuites
  [ cipher_suites:
    [ - <string> ] ]

  # prefer_server_cipher_suites 控制服务器是选择客户端最偏好的密码套件,
  # 还是选择服务器最偏好的密码套件。如果为 "true",则使用以 cipher_suites 
  # 中元素顺序表示的服务器首选项。
  [ prefer_server_cipher_suites: <boolean> | default = true ]

  # 将在 ECDHE 握手过程中使用的椭圆曲线,按优先顺序排列。
  # 可用的椭圆曲线记录在 Go 文档中:
  # https://golang.org/pkg/crypto/tls/#CurveID
  [ curve_preferences:
    [ - <string> ] ]

http_server_config:
  # 启用 HTTP/2 支持。请注意,只有 TLS 才支持 HTTP/2,这一点无法即时更改
  [ http2: <boolean> | default = true ]
  # 可添加到 HTTP 响应的标头列表
  [ headers:
    # 为 HTTP 响应设置 Content-Security-Policy 头
    # 如果为空,则取消设置。
    [ Content-Security-Policy: <string> ]
    # 为 HTTP 响应设置 X-Frame-Options 头
    # 如果为空,则取消设置。可接受的值为 deny 和 sameorigin。
    # https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
    [ X-Frame-Options: <string> ]
    # 为 HTTP 响应设置 X-Content-Type-Options 头
    # 如果为空,则取消设置,接受值为 nosniff
    # https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options
    [ X-Content-Type-Options: <string> ]
    # 为 HTTP 响应设置 X-XSS-Protection 头.
    # 如果为空,则取消设置。
    # https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection
    [ X-XSS-Protection: <string> ]
    # 为 HTTP 响应设置 Strict-Transport-Security 头
    # 如果为空,则取消设置。
    # 请务必谨慎使用,因为该标头可能会强制浏览器通过 HTTPS 加载 Prometheus 以及同一域和子域上
    # 托管的其他应用程序。
    # https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security
    [ Strict-Transport-Security: <string> ] ]

# 通过基本身份验证完全访问网络服务器的用户名和散列密码。如果为空,则不需要基本身份验证。
# 密码使用 bcrypt 算法散列。
basic_auth_users:
  [ <string>: <secret> ... ]
说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号