Mutual TLS on multi-worker /aggregated_metrics still uses VERIFY_NONE
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 72/100
Direzione di ricerca
Read do_request in lib/fluent/plugin/in_prometheus.rb and the async-http path in lib/fluent/plugin/in_prometheus/async_wrapper.rb. Trace how the TLS transport's CA settings are made available to the loopback worker fetches, then run or add coverage for multi-worker /aggregated_metrics on both paths. Done when both verify worker certificates against the transport CA and reject an invalid certificate.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Describe the bug
When in_prometheus uses TLS and workers > 1, /aggregated_metrics fetches each worker on loopback with OpenSSL::SSL::VERIFY_NONE. External /metrics can require a client certificate ( and client_cert_auth). The worker-aggregation fetch does not verify the worker certificate, so that path is not mutual TLS.
The setting is in do_request in lib/fluent/plugin/in_prometheus.rb:
if secure
http.use_ssl = true
target is our child process. so it's secure.
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
end
The async-http path in lib/fluent/plugin/in_prometheus/async_wrapper.rb has the same gap.
To Reproduce
Start Fluentd with workers 2 and the configuration below.
Request https://127.0.0.1:24231/aggregated_metrics with a valid client certificate.
The parent worker scrapes the other worker with verify_mode = OpenSSL::SSL::VERIFY_NONE.
A worker certificate that would fail VERIFY_PEER is still accepted on that internal fetch.
Expected behavior
The loopback fetch should use VERIFY_PEER and the same CA as the TLS transport, on both the Net::HTTP path and the async-http path. A bad worker certificate should be rejected.
Your Environment
Rocky8
- Fluentd version: 1.16.9
- TD Agent/Fluent Package version: fluent-package 5.0.7 (fluent-package-5.0.7-1.el8.x86_64)
- fluent-plugin-prometheus version: 2.1.0
- prometheus-client version: 2.1.0
- Operating system: Rocky Linux 8.10 (Green Obsidian)
- Kernel version: 5.15.167.4-microsoft-standard-WSL2
Your Configuration
workers 2 @type prometheus bind 0.0.0.0 port 24231 metrics_path /metrics cert_path /path/to/server.crt private_key_path /path/to/server.key ca_path /path/to/ca.pem client_cert_auth trueYour Error Log
No error is logged. The loopback scrape succeeds because verification is disabled. That is the bug: a certificate that VERIFY_PEER would reject is accepted
Additional context
No response
- Lingua principale
- Ruby
- Stelle
- 256
- Fork
- 83
- Merge medio
- 1g 2h
- PR unite (30g)
- 3
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di fluent/fluent-plugin-prometheus
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 38/100
fluent/fluent-plugin-prometheus#234 · 1 commento ·
-
enhancement
Difficoltà 3/5 1-2 giorni Idoneità per principianti 38/100
-
enhancement
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
-
FluentD MetricsAperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 20/100
Tutte le issue di fluent/fluent-plugin-prometheus
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
FinanceFlash/unvibecode#699 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
chat
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 93/100
I maintainer di solito rispondono entro 9 giorni
-
bug
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
I maintainer di solito rispondono entro 1 giorno