trallnag / prometheus-fastapi-instrumentator

Instrument your FastAPI with Prometheus metrics.
ISC License
948 stars 84 forks source link

Security Concern #283

Open zidokobik opened 8 months ago

zidokobik commented 8 months ago

Wouldn't exposing the metrics endpoint with the main app a bad security practice. Maybe add HTTP Basic authentication ?

0xecute commented 7 months ago

Totally agree. HTTP basic auth or IP whitelisting

trallnag commented 7 months ago

Hi, I would not consider is a bad security practice. It really depends on the architecture of your application. For example you could have an ingress like Traefik or Nginx in front of the API that handles everything related to authentication and authorization.

It is just not this packages responsibility to authenticate requests. This is the regular approach, I'd argue. For example the official prometheus client library for Python does not mention authentication in their documentation here. And prometheus flask exporter relies on external authentication via decorator, see here.

So I am not sure if I want to add this. It opens a whole can of worms

Alternatives that work without adding this feature:

On the other side prometheus-fastapi-instrumentator already has many (too many) knobs, handles, feature flags... So one more parameter makes it just a little worse.

aovasylenko commented 6 months ago

@trallnag did you consider example/tools to run metrics on a separate port?