Prometheus SSO and authentication: why the web UI and API need a layer in front
Prometheus has no built-in single sign-on, so named users, MFA and per-user audit trails on the web UI and API have to come from a layer in front of it. The usual answer is an authenticating reverse proxy that speaks OpenID Connect (OIDC) or SAML to your identity provider, checks the session, and only then forwards requests to Prometheus or Alertmanager. The security model describes this pattern, and it is the design this topic assumes. Your security team should decide early whether the proxy is the only way in for humans, and whether that rule applies to Alertmanager as well. The difficulty is that the proxy cannot treat every request the same way. Prometheus scrapes are pulls made by the server itself, often with service accounts or from networks you do not fully control, so a proxy that demands an interactive login will silently break collection. Your team needs to inventory which paths must stay reachable to machines (such as the metrics endpoint Prometheus scrapes from its targets, and any pushes through a gateway) and which paths are for people. Routing rules, bypass lists and the network paths to each must be written down and tested, because a mistake shows up as missing data rather than as an error.
Alertmanager needs its own treatment. It has a web UI for silences and alert state, and Prometheus must still send it alerts, so a single login gate cannot be placed in front of every call. Decide which Alertmanager endpoints are exposed to users, which are used only by Prometheus, and how Alertmanager instances in a cluster reach each other. Prometheus should be pointed at every Alertmanager instance rather than a load balancer, so the proxy design has to keep those notification paths open. Silence and expiry actions performed through the UI are the most sensitive operations here, so they are the ones that most need identity-linked audit records. Cross-site request forgery deserves specific attention. The Prometheus security model notes that it has no built-in CSRF protection on mutating endpoints. A browser session authenticated at the proxy can therefore be abused by a malicious page if the proxy does not add its own protection. Confirm with your proxy vendor or project how it handles CSRF tokens, SameSite cookie settings and origin checks for the Prometheus and Alertmanager actions you intend to expose, and test those actions from a foreign origin before go-live.
The proxy is also a new component with its own lifecycle. It needs security patches, certificate renewal, configuration for OIDC or SAML metadata, and a plan for when the identity provider is unavailable. Prometheus itself moves on a 6-week minor release cycle, and a minor release generally stops receiving bug fixes after those 6 weeks, so a proxy that is patched on a slower or unrelated schedule can leave the stack in an unsupported mix. Ask who owns each upgrade, how the proxy is tested against new Prometheus and Alertmanager versions, and what happens to access if the proxy fails. Those answers belong in the scope document before any configuration begins.
Which Prometheus components need authentication and how each is protected
A Prometheus deployment exposes several HTTP surfaces, and each one is reached by a different kind of caller: engineers in a browser, automation calling the API, and the Prometheus server itself scraping targets. Single sign-on in front of the UI covers only part of that picture, so each component below needs a named control and a named access path before go-live.
Prometheus web UI and HTTP API
This is the surface engineers use to run PromQL queries, inspect targets and rules, and check the status of the server. Its access path is human for the UI and automation for the query API used by dashboards and scripts. Prometheus has no built-in single sign-on, so an authenticating reverse proxy usually fronts it. Check that the proxy covers both the UI paths and the API paths, and that automation receives a credential type it can use without a browser redirect.
Alertmanager UI and API
Alertmanager shows active alerts, silences and receiver status, and its API accepts silence creation and alert ingestion from Prometheus. Silences are a write path, so an unauthenticated Alertmanager lets anyone hide a page. Access paths are human for the UI, automation for silence tooling, and Prometheus itself for alert delivery. Confirm that the proxy in front of Alertmanager is separate from the one in front of Prometheus, and that alert ingestion from Prometheus is authenticated.
Authenticating reverse proxy
The proxy performs OIDC or SAML login, validates the session, and forwards requests to Prometheus or Alertmanager. It is the single point that decides who reaches the UI and API, so its own hardening matters as much as the identity configuration. Check how it handles session expiry, group-based authorization, and whether it strips identity headers supplied by clients. Confirm with your identity team which OIDC or SAML features the chosen proxy supports.
Web configuration file for TLS and basic auth
The web configuration file holds TLS certificate settings, client certificate requirements, and bcrypt-hashed basic authentication users for the Prometheus and Alertmanager listeners. It is loaded by the server at startup, so a wrong path or permission silently changes the security posture. Basic authentication without TLS exposes credentials in cleartext, so this file should enable TLS first. Check file ownership, restrict read access, and confirm the TLS minimum version is set to TLS 1.2.
Scrape target credentials in configuration
Scrape jobs can carry basic auth, bearer tokens, or TLS client certificates so Prometheus can authenticate to each target. These values sit in the main configuration file, which is readable by anyone who can view the server configuration or its API. Access path here is scrape, meaning Prometheus authenticates outward to targets. Check that secrets are mounted from files with restricted permissions rather than written inline, and that rotation has an owner.
Exporters that accept URL parameters
Exporters such as SNMP and Blackbox take the target to probe from a URL parameter, so any caller with HTTP access to the exporter can direct it at arbitrary endpoints. This turns an exporter into a request forwarder inside your network. Access path is scrape for Prometheus and human or automation only where a troubleshooting route is exposed. Confirm that exporter listeners accept only the Prometheus server address, that targets are fixed in scrape configuration, and that the exporter is not reachable from user networks.
Prometheus SSO decisions: where authentication lives and which protocol to use
This table compares the main authentication placement and protocol choices for Prometheus and Alertmanager, with the operational cost each one adds. Read each row as a decision: find the option that fits your identity provider and team, then check the cost column for what you will have to run and rotate afterward.
| Decision | When it fits | Operational cost |
|---|---|---|
| Proxy per Prometheus and Alertmanager instance | Small deployments with one or two instances, or teams that want each proxy scoped to one service | Each instance needs its own proxy configuration, certificate and upgrade cycle, so the number of components grows with every Prometheus pair |
| One shared authentication gateway | Several Prometheus servers and Alertmanager instances behind one identity provider and one access policy | One more component to patch and monitor, and a single point of failure unless the gateway itself is highly available |
| OIDC against the existing identity provider | Your identity provider already offers OpenID Connect and your proxy supports it | Session lifetime, token refresh and group claim mapping must be tuned and tested; confirm your proxy's supported claims |
| SAML against the existing identity provider | Your identity provider is SAML-only or your enterprise standard is SAML for internal web tools | Requires SAML metadata exchange and certificate rotation; confirm the proxy supports SAML before choosing this path |
| Prometheus native TLS and basic auth only | Single internal team, no interactive users needing SSO, and scrape or API clients that can present credentials | Two credential stores to rotate (certificates and bcrypt-hashed passwords), with no per-user sessions or central revocation |
| Proxy-only authentication for the web UI and API | Interactive users need SSO and audit of who ran queries or changed state | Proxy becomes the trust boundary, so Prometheus must stay off public networks and admin endpoints must remain disabled |
| Scrape traffic on a private network | Targets and Prometheus share a segmented network where routing and firewall rules are controlled | Relies on network controls that must be documented and audited; no per-request identity on scrapes |
| Authenticated scrape traffic with TLS and credentials | Scrapes cross network zones, or an assessor expects identity on every metrics endpoint | Certificates and scrape passwords must be stored and rotated in scrape configuration, which needs secret handling and reload testing |
How to put Prometheus SSO behind an authenticating proxy, step by step
This sequence moves Prometheus and Alertmanager from open network access to a model where people sign in through your identity provider, machine scrapes keep working, and each group gets the access it needs. Each step ends with a check you can record before moving on. Adjust the order to fit your proxy and identity provider.
Confirm identity provider and group claims
The identity provider administrator confirms whether you will use OIDC or SAML and which claim or attribute carries group membership for the people who need Prometheus. Ask for the exact claim name, how group values are formatted, and whether groups arrive inside the token or assertion or require a separate directory lookup. Ask a non-production test user to sign in and confirm the group values they receive. The step closes when a test sign-in shows the group names you plan to map in the final step.
Choose and test the authenticating proxy
The platform or security team selects a reverse proxy that can authenticate users against your OIDC or SAML provider, read group claims, and pass a verified identity to the upstream service. Confirm that the proxy strips identity headers from incoming client requests so clients cannot forge them, and that it can establish TLS to Prometheus. Deploy the proxy in a test environment in front of a non-production Prometheus. The step closes with a written decision record and a test login that reaches the Prometheus UI.
Bind the proxy to UI, API and Alertmanager
Route the Prometheus web UI and HTTP API, along with the Alertmanager UI and API, through the proxy so that interactive and API access requires a signed-in identity. Keep the scrape path direct, because the proxy should only stand between Prometheus and its scrape targets if your design requires it. Each added hop adds latency and a failure point to every scrape. Keep Prometheus-to-Alertmanager notifications on direct connections to each Alertmanager instance, with no login step in between. The step closes when an unauthenticated UI request redirects to sign-in and a scrape target still reports as up.
Enable TLS between proxy and Prometheus
Configure TLS on the hop from the proxy to Prometheus and Alertmanager, with TLS 1.2 as the minimum version. Prometheus supports TLS through its web configuration file, and the certificate should be issued by a certificate authority your proxy trusts. Confirm the certificate chain, hostname and expiry date, and disable plain HTTP on the listener so session data and credentials cannot cross the network in cleartext. The step closes when a TLS handshake from the proxy host succeeds at TLS 1.2 or higher and a plain HTTP request to the listener is refused.
Set basic auth for non-SSO access
Some paths, such as a break-glass account or a tool that cannot perform SSO, need HTTP basic authentication. Generate passwords with a bcrypt hashing tool your team approves, and store only the hashes in the web configuration file, never plaintext. Basic authentication must run only over the TLS configured in the previous step, because without TLS it exposes credentials in cleartext. Keep these accounts few and documented with an owner for each. The step closes when a wrong password is rejected, the correct one is accepted, and the configuration file contains no plaintext secret.
Confirm admin and lifecycle APIs stay disabled
Prometheus disables its admin HTTP APIs by default, and the lifecycle endpoints that reload configuration or shut the server down are also off unless enabled. Review the startup flags and service unit to confirm the admin API and lifecycle flags are absent, so no one has turned them on during troubleshooting. Then send requests to those endpoints from outside the proxy and from inside the network, and confirm that they are refused. Record both the configuration review and the refused requests in the change ticket.
Verify scrapes still succeed end to end
Open the Targets page and check that every job that was healthy before the change still reports as up, with the same scrape intervals and no new authentication errors. Review the Prometheus logs for TLS or authorization failures, and confirm that no exporter was accidentally moved behind the proxy in the scrape path. Compare target health with the baseline you captured before the change. The step closes when target health matches that baseline and the logs show no new scrape errors over the observation window your team agreed in advance.
Map identity groups to read and write access
At the proxy, map each identity group to one of two roles: read-only for dashboards and queries, and write access for the small number of people who maintain configuration or silences through the UI. Prometheus has no built-in CSRF protection on mutating endpoints, so restrict write-capable groups tightly and enable the proxy's own CSRF controls where it offers them. Test with one account from each group. The step closes when each test account can perform only its permitted actions and the proxy logs show the identity behind each request.
Why scrapes and automation need a separate path from SSO
Prometheus pulls metrics from its targets on a schedule, so scrape traffic is machine-to-machine and cannot complete an interactive login. A browser-based SSO flow expects a user, a redirect and a session cookie, and none of those exist when Prometheus wakes up to scrape an exporter every few seconds. If the authenticating reverse proxy you place in front of the Prometheus web UI also sits in front of the scrape path, scrapes will fail with redirects or login pages. That is why the SSO design has to split traffic into two paths before anything else is configured.
There are two sound ways to handle the scrape path. The first keeps scrapes on a private network and controls access there, using network segmentation, firewall rules and dedicated scrape subnets so that only the Prometheus servers can reach exporter endpoints. The second keeps the endpoints reachable but requires the scraper to authenticate on the target side, using TLS with client certificates or HTTP basic authentication. Prometheus supports both TLS client certificates and basic authentication with bcrypt-hashed passwords, but basic authentication without TLS sends credentials in cleartext, so it should not be used on any path that leaves a trusted network. Your choice should follow from where your targets live and who else can reach them.
Scrape configuration is where the credentials end up. Basic authentication passwords, bearer tokens and TLS key files are referenced in the Prometheus configuration file, and the configuration is often copied into version control, shared across teams and visible to anyone who can read the Prometheus host. Treat these values as you would any other service credential: store them in a secrets manager or a file mounted with restricted permissions, rotate them on a schedule, give each scrape job its own identity where the target allows it, and make sure the configuration file itself is not published to a repository. The same applies to the credentials used by remote write or alert receivers if they appear in related configuration.
Automation needs its own answer too. CI pipelines, deployment jobs and dashboards that query the Prometheus API usually cannot complete an interactive login either, so you need to know exactly how your reverse proxy treats those calls. Confirm whether it accepts API tokens or client certificates for non-browser requests, whether it returns a redirect or a 401 when a token is missing, and whether a token issued for one service can reach endpoints it should not. Also confirm that the proxy does not pass through the admin and lifecycle endpoints, which are disabled by default and should stay that way. Ask your proxy vendor or platform team to demonstrate each path with a test request before go-live, and record the results as part of the access design.
How Prometheus SSO changes for single node, paired HA, Kubernetes and air-gapped deployments
On one Prometheus server, the authenticating reverse proxy sits in front of the web UI and API, so every browser and API client passes through one enforcement point. Prometheus itself should listen only on a loopback or private address, so the unauthenticated port cannot be reached from user networks. Scrapes from Prometheus to its targets do not pass through the SSO proxy, so they need their own TLS or basic authentication settings.
- Proxy placement: Run the proxy on the same host or on the same private segment, and bind Prometheus to localhost or a private interface.
- Session stickiness: Not needed, because there is one upstream. Sessions still need an expiry period and a working logout path.
- TLS certificates: One certificate on the proxy covers the UI and API. A lapsed certificate blocks every user at once, so monitor its expiry date.
- IdP outage: New logins fail closed. Existing sessions continue until their lifetime ends, so set that lifetime deliberately.
Before go-live, confirm that the proxy is the only listener reachable from user networks and test the scrape path separately from the login path.
With two Prometheus instances scraping the same targets, users may reach either one, so the proxy layer must treat them consistently. Storage and replication design belong to the high availability topic, so this tab covers only the authentication layer. Clustered Alertmanager adds a second set of endpoints that need the same access decisions.
- Proxy placement: Run a proxy in front of each Prometheus instance, or a pair of proxies in front of both, with identical OIDC client settings so a failed node does not remove login.
- Session stickiness: If each proxy keeps sessions in its own memory, a user moved to the other node must sign in again. Use a shared session store or stateless signed cookies, and confirm your proxy supports the option you choose.
- TLS certificates: Issue certificates for each hostname. If a load balancer fronts the pair, decide where TLS ends and whether traffic between the balancer and the nodes is also encrypted.
- IdP outage: Both nodes fail closed in the same way, so redundancy does not protect logins during an IdP outage. Document a break-glass path and who may use it.
- Alertmanager: Prometheus should list every Alertmanager instance directly. Any exposed Alertmanager UI needs its own access control.
Before go-live, test the loss of one node and a session move between nodes, and confirm that both produce the expected login behavior.
In a cluster, authentication usually sits at the ingress controller or in an external auth service that the ingress calls on each request. Prometheus typically runs as a ClusterIP service with no public route, and the ingress is the only path users take. Confirm which auth annotation or external auth integration your ingress controller version supports, because the options and their defaults differ.
- Proxy placement: Enforce authentication at the ingress or at an auth service that the ingress calls. Keep the Prometheus service off any public route.
- Session stickiness: Cookie-based sessions depend on whether the auth service is stateless. Confirm the replica count and how cookies are handled before scaling it.
- TLS certificates: Certificates usually come from a certificate manager or the cluster secret store. Check renewal, and encrypt or isolate the hop between the ingress and the auth service.
- IdP outage: An auth call that fails should deny the request. Verify the controller's failure setting, because some configurations allow traffic through when the auth call fails.
- Network policy: A pod inside the cluster can reach the Prometheus service directly and bypass the ingress. Restrict that access with network policies.
Before go-live, call the Prometheus service from a pod in another namespace and from outside the cluster, and confirm that both attempts are denied without a valid session.
When the identity provider is reachable only over an internal path, the proxy must reach the IdP's endpoints, signing keys and metadata without internet access. Load discovery documents and keys through the internal path during setup, then schedule their refresh. Sessions, certificate validation and updates must all work inside the isolated zone.
- Proxy placement: Place the proxy on the segment that can reach the IdP, and place Prometheus on a separate segment that only the proxy can reach.
- Session stickiness: The internal path adds no stickiness requirement of its own. Keep session storage inside the isolated zone.
- TLS certificates: Issue certificates from an internal certificate authority and distribute its root to the proxy and to clients. Confirm that revocation checks work without internet access, or plan around their absence.
- IdP outage: No public IdP fallback exists. Decide in advance who may use a local break-glass account, and whether basic authentication with bcrypt-hashed passwords over TLS is acceptable for that role. Basic authentication without TLS exposes credentials in cleartext.
- Updates: Proxy and IdP patches arrive through approved transfer paths, so schedule them around the refresh of keys and certificates.
Before go-live, test IdP loss, certificate expiry and signing key rotation on the internal path, and record the results.
How to test Prometheus SSO and confirm it fails safely
The goal of testing is to prove that the authenticating proxy is the only way into Prometheus, Alertmanager and their APIs. Start with unauthenticated requests. Send them to the web UI, the query API and the Alertmanager UI and API from a machine outside the proxy's trust zone. Each should return a redirect to the identity provider or a rejection, never data. Then try to reach the Prometheus and Alertmanager listen ports directly, bypassing the proxy. Those connections should fail at the network layer. Do not assume the proxy's defaults match your needs. Confirm in your own configuration which paths the proxy protects, whether API paths return 401 or a redirect, and whether any health or metrics path is exempt by design.
Next, test authorization. Sign in as a user who is not in the group that the proxy requires and attempt every protected path, including query, graph, rules, targets and Alertmanager silences. Each attempt should be denied. Then confirm that scraping still works. Scrapers are usually machine clients that should not depend on a browser login, so check that the up metric stays at 1 for each target after the proxy is in place. Confirm which scrape path you use: TLS with client certificates, basic authentication over TLS, or a dedicated internal network path. Basic authentication must never be accepted over plain HTTP on a network path. Send a request with credentials over an unencrypted listener and verify that Prometheus refuses it or that no such listener exists.
Admin and lifecycle endpoints need their own checks. Prometheus disables its admin HTTP APIs by default, and the lifecycle endpoints for reload and shutdown are off unless their flags are set. Send requests to the admin API, the reload endpoint and the shutdown endpoint, and confirm the responses are disabled responses. If your team has enabled either flag, record why, confirm the proxy restricts those paths to a named operator group, and test that group separately. CSRF is a separate risk. Prometheus has no built-in CSRF protection on mutating endpoints, so test them through the proxy. Submit a state-changing request from a page on another origin while signed in, and confirm the proxy rejects it. Check the session cookie's SameSite and Secure attributes and the proxy's own CSRF handling. Repeat this for Alertmanager silence creation, which also changes state.
Failure tests show whether the setup fails closed. Simulate an identity provider outage by blocking the provider from the proxy. New logins should be refused, and no request should pass without a valid session. Confirm how existing sessions behave during the outage, because this depends on the proxy's configuration. Then test expired sessions. Use a short session lifetime in a test environment and check that the UI and API both require re-authentication when it lapses. Finally, restart the proxy during a test window and confirm that no request reaches Prometheus unauthenticated while it starts. Monitoring should also keep collecting, since scrapes should not depend on the browser login path. Record each result, the configuration version tested and who reviewed it, so the evidence can be reused in a compliance assessment or an upgrade test.
Hardening Prometheus authentication, TLS and secrets
Prometheus has no built-in single sign-on, so the controls in this section sit underneath the reverse proxy that handles user login. They cover the transport, the basic authentication and admin surfaces Prometheus exposes itself, and the credentials that scrapes and proxies depend on. Each card names a setting to verify on every listener and endpoint.
TLS 1.2 minimum on every listener
Prometheus supports TLS and client certificate authentication, with TLS 1.2 as the minimum version. Apply this to the Prometheus web listener, the Alertmanager listener, and any exporter endpoint that accepts connections. Confirm the setting on each listener separately, because a proxy in front does not protect a listener that is still reachable directly. Check the certificate chain and rotation process with your PKI team before go-live.
Bcrypt-hashed basic auth passwords
Where basic authentication protects the web UI or API, the password store must hold bcrypt hashes rather than plaintext values. Generate hashes with the tooling the Prometheus documentation describes, and confirm the configuration file contains no clear-text password. Ask who owns password rotation, how a leaked hash is replaced, and whether each scraper or user has its own credential.
No basic auth over cleartext
Basic authentication without TLS sends credentials in cleartext, so every basic auth endpoint must be served over TLS. Verify this for scrape targets as well as for human access, since a scrape job that uses basic auth against a plain HTTP target leaks its password on the network. Test the path with a packet capture or a plain request in a non-production environment to confirm the credential is not visible.
Admin API off unless enabled
Prometheus disables its admin HTTP APIs by default. The --web.enable-admin-api flag turns on destructive operations such as deleting series, so leave it off unless a named operational need requires it. Record the decision and the owner in the change log, and confirm the flag is absent from the service unit or container arguments on every instance.
Limiting lifecycle endpoints
The --web.enable-lifecycle flag enables the endpoints that reload configuration and shut the server down. Keep these disabled unless a configuration pipeline depends on reload calls. If the pipeline needs them, restrict access to that caller only at the reverse proxy, and make sure users who can reach the UI cannot trigger a shutdown. Test the restriction by calling the endpoints as an ordinary authenticated user.
Exporters that take URL targets
Exporters such as SNMP and Blackbox accept targets through URL parameters, so anyone with HTTP access can make them send requests to arbitrary endpoints. Restrict who can reach these exporters to Prometheus scrapers only, and allow only the target ranges the monitoring team needs. Review the module and target lists with the network team, since the risk is an authenticated user using the exporter as a request proxy inside your network.
Proxy secrets and scrape credentials
Client secrets for the authenticating proxy and the passwords used by scrape jobs should not sit in plain configuration files that get copied into repositories or tickets. Move them to a secrets manager or a restricted file read at startup, with file permissions limited to the Prometheus service account. Ask who can read the secret store, how rotation reaches running instances, and how a leaked secret is revoked without an outage.
What drives the effort and cost of Prometheus SSO work
This table lists the factors that change how much design, build and testing an SSO layer in front of Prometheus and Alertmanager requires. Read each row as a lever: the first column names the driver, the middle column explains why it moves effort, and the last column shows how teams usually keep it contained.
| Driver | Why it changes effort or cost | How to keep it down |
|---|---|---|
| Number of Prometheus and Alertmanager instances | Each instance needs its own proxy routing, TLS certificates, upstream configuration and testing, so effort grows with the count of servers and not only with users. | Standardize one proxy pattern and one configuration template, then apply it to each instance with only host-specific values changed. |
| Number of identity providers or federation paths | Each OIDC or SAML path adds claim mapping, trust setup, certificate rotation and a separate login test matrix. | Route all Prometheus and Alertmanager access through one identity provider application where possible, and confirm early whether any team needs a second path. |
| Group-based access model complexity | Mapping many directory groups to read-only, query, or administrative roles requires rule design, review with access owners and tests for each role boundary. | Start with two or three roles, usually read-only and operator, and add roles only when a documented team need appears. |
| Environments that need separate configuration | Development, staging and production each need their own client registrations, callback URLs, secrets and access rules, which multiplies setup and verification. | Keep one reviewed configuration source with environment variables for endpoints and secrets, and promote changes through the same pipeline. |
| Scrape credentials and API consumers that must migrate | Existing scrapers, dashboards and automation that use basic authentication or direct API calls need to be inventoried, reconfigured and tested before the proxy blocks old paths. | Inventory consumers before design starts, move machine clients to dedicated credentials or client certificates, and cut over one consumer group at a time. |
| Air-gapped or restricted networks | Without internet access, identity provider metadata, keys and token validation must come from inside the network, and certificate chains need manual distribution. | Confirm the identity provider's reachable endpoints and certificate sources with the network team before scoping, and bundle required metadata into the deployment. |
| Compliance evidence requirements | Assessors often ask for proof of who can reach each endpoint, how sessions expire and how admin APIs are restricted, which adds evidence collection and documentation work. | Define the evidence list at scope time, such as access reviews, configuration exports and test records, and generate it from the same configuration used to deploy. |
What to monitor, back up, upgrade and document after Prometheus SSO goes live
The first ongoing task is confirming that the authentication path itself stays healthy, because a failed reverse proxy or identity provider locks engineers out of the dashboards and alerts they need during an incident. Monitor the proxy's availability, response times and authentication error rates, and monitor the identity provider's login and token endpoints as a separate dependency. Add a synthetic check that signs in through the proxy and queries the Prometheus API, then alert when it fails. Also verify that Alertmanager's UI and API still work through the proxy, since a proxy that forwards traffic but mishandles headers can break them silently. Ask your proxy vendor which health and error metrics it exposes and how to scrape them.
Certificates and credentials need an owner and a renewal date. List every TLS certificate in the chain, including the proxy's certificate, the certificates on Prometheus and Alertmanager, and any client certificates used by scrapers or API clients. Rotate them on a schedule your team can rehearse, and reload configuration after each change so scrapes do not fail in a gap. Basic authentication passwords for scrape endpoints and API users are stored as bcrypt hashes, so rotation means generating a new hash, updating the matching secret in the scrape configuration and retiring the old password. Keep plaintext copies in a secrets manager and out of version control. Basic authentication should only run over TLS, because without it the credentials travel in cleartext.
Access review keeps the access model accurate after launch. At a regular interval, compare group membership in the identity provider against the documented roles, remove leavers and reduce access for people who changed teams. Pull the proxy's access logs and check who reached administrative endpoints, and whether any service account authenticates from an unexpected source. Confirm that the proxy maps group claims to Prometheus access correctly, because a stale or mistaken mapping can grant more access than intended. Agree on log retention with your compliance lead, since the required period depends on the frameworks you are assessed against and this page does not set one.
Include the proxy in every Prometheus upgrade plan. Prometheus starts a new minor release cycle every 6 weeks, and after those 6 weeks a minor release generally no longer receives bug fixes, so a minor line needs to move on roughly that cadence. The long-term support line receives bug fixes for one year. The current LTS line is 3.13, supported until July 31, 2027, which makes it the simpler choice for teams that cannot upgrade every few weeks. Whichever track you choose, set a calendar, test the login flow, header forwarding and group mapping against the new version in staging, and schedule the proxy's own patches in the same window.
Three documents make the system recoverable by someone other than the people who built it. The access model lists each group, the Prometheus and Alertmanager capabilities it grants, and who approves changes. The break-glass procedure names the account or path that works when the identity provider is unavailable, who may use it, how each use is logged and how the credentials are reset afterward. The runbook for identity provider outages describes how the health checks above detect the failure, how on-call reaches Prometheus and Alertmanager during the outage, how alert notifications keep flowing without depending on SSO, and who communicates with stakeholders. Store break-glass credentials sealed, and test the runbook on a schedule your team sets.
Questions buyers ask about Prometheus SSO before hiring help
Does Prometheus have built-in single sign-on or does it need a proxy?
No, Prometheus has no built-in single sign-on. The usual approach is an authenticating reverse proxy in front of the web UI and API that handles OIDC or SAML login and passes only authenticated requests through. Alertmanager has no built-in SSO either, so it normally needs the same treatment. The Prometheus security model also notes there is no built-in CSRF protection on mutating endpoints, so the proxy and the access rules behind it need to account for that. Before you commit to a proxy, confirm that it supports your identity provider and protocol, and that it can separate human access from machine access for scrapes and API clients.
What drives the cost of Prometheus SSO implementation?
Prometheus has no license fee, so the cost sits in the work and the software around it. You pay for implementation effort, any proxy software you license, identity provider configuration, testing, documentation and the people who operate the result. The main drivers are the number of endpoints (Prometheus, Alertmanager, dashboards and any exporter UIs), how complex your identity provider setup is, how many IdP groups must map to roles, and whether scrape and API access need separate handling. The build is largely one-time. Certificate renewal, proxy patching, identity provider changes and periodic access reviews recur. Ask any quote to itemize these components so you can see what each one buys.
How long does Prometheus SSO work usually take to complete?
No general duration can be stated reliably, so confirm it against your own scope. The timeline depends on how many endpoints are protected, how many identity provider applications and group mappings are needed, how quickly your team can provide access and approvals, and how many change windows the cutover requires. Environments with several Prometheus instances, Alertmanager clusters or separate networks take longer than a single instance behind one identity provider. DeployOpen's engagements are typically fixed-scope, and the scope, deliverables and timeline are agreed in writing before work starts, so ask for a dated plan that lists the client dependencies alongside the vendor tasks.
Can an in-house team build Prometheus SSO without an outside partner?
Yes, many teams can, if they have the right skills in-house. The work touches an identity provider, a reverse proxy, TLS and certificate management, Prometheus scrape and API configuration, and network paths. A team that is strong in one of these areas but new to the others usually spends the most time on the boundaries, such as how scrapers authenticate, which paths stay open for machine access, and how exporters that accept URL targets are protected. Before deciding, list who will own the identity provider changes, the proxy configuration, the security tests and the ongoing patching. If any of those owners would be learning on the job, a written scope with a partner can reduce that risk, though the decision remains yours.
What does the work need from our team before it starts?
The work needs access and decisions that only your organization can provide. Expect to supply identity provider access to register applications, along with client identifiers and redirect URIs for OIDC or metadata for SAML. You will also need to map identity provider groups to read and administrative roles, confirm network paths between the proxy, Prometheus, Alertmanager and users, and provide DNS names and certificates. Change windows for cutover and named approvers for production changes should be agreed up front. Ask the partner to put these dependencies in the written scope, with an owner and a needed-by date for each one, so delays are visible early.
How does putting SSO in front of Prometheus affect scrapes?
Prometheus pulls metrics from targets over HTTP, so scrapes are server-initiated requests that the proxy must not block. A proxy in front of the Prometheus web UI and API does not stop Prometheus from scraping its targets. The risk comes when the proxy or new authentication rules are placed in front of exporters or other targets, because scrapes then fail unless machine access is allowed. A common pattern keeps human access behind SSO while scrapers and API clients use TLS with client certificates or basic authentication on separate paths or networks. Verify this in a test environment by confirming that every target still shows as up after the change, and that failed authentication is visible in logs.
Is basic authentication enough for Prometheus API and scrape access?
Basic authentication can work for machine access, but only over TLS. Prometheus supports HTTP basic authentication with bcrypt-hashed passwords, and it supports TLS and client certificate authentication with TLS 1.2 as the minimum. Without TLS, basic authentication sends credentials in cleartext, so it should never be used alone on a network path you do not fully control. Client certificates are often a stronger choice for scrapers, and human users should go through SSO rather than shared credentials. Confirm that every scraper, API client and automation tool in your environment supports the method you choose, because some tools have limited support for client certificates or custom headers.
How DeployOpen works on this
DeployOpen starts with the access model: which users reach the Prometheus web UI, API and Alertmanager, and which machine clients still need scrapes and API calls to work without a browser login. The work is then built inside your own infrastructure, tested against your identity provider and documented so your team can run it after handover.
How we scope
- Inventory every Prometheus and Alertmanager endpoint, including UI, query API, lifecycle and admin paths that need protection.
- Agree the identity provider, OIDC or SAML, and the group-to-role mapping before any configuration starts.
- Document in the written scope which clients keep TLS and basic authentication for scrapes and automation instead of SSO.
How we build
- Place an authenticating reverse proxy in front of the web UI and API, with TLS terminated and enforced end to end.
- Keep admin and lifecycle APIs disabled unless a documented need exists, and confirm the proxy blocks them from users.
- Test login, logout, session expiry and access denial for each role, and confirm scrape traffic still authenticates.
How we hand over
- Deliver configuration as code, with the proxy rules, Prometheus TLS settings and basic auth hashes documented.
- Provide a runbook for certificate renewal, identity provider changes, adding users and rotating credentials.
- Walk your platform and security teams through the access model, test evidence and known limits before sign-off.
How we support
- Ongoing support, upgrades and continuous testing are available as a retainer after go-live.
- Re-check the proxy and authentication settings whenever Prometheus or Alertmanager moves to a new release.
- Ask any support arrangement to state what it covers for identity changes, certificate expiry and incident response.

