Documentation

Configure LDAP authentication

LDAP authentication signs users in by binding their credentials against an LDAP or Active Directory server. Telegraf Controller can read user attributes and group membership from the directory and use them to assign roles and provision accounts.

Available with Telegraf Enterprise

LDAP authentication is only available with Telegraf Enterprise. If you are interested in learning more about Telegraf Enterprise, contact us.

Prerequisites

  • A valid Telegraf Enterprise license applied to your Telegraf Controller instance.
  • A reachable LDAP server (ldap:// or ldaps://) and a service-account bind DN that can search the user subtree.
  • Permission to modify the Telegraf Controller startup environment.
  • The Owner role to change LDAP settings from the Settings page.

LDAP transport settings change only at startup

Server URL, bind credentials, search base and filter, TLS options, and attribute mappings are read at startup and cannot be changed at runtime. Provisioning, default role, allowed domains, and group-to-role mappings are runtime-editable from the Settings page.

MFA is enforced by your LDAP server

Telegraf Controller does not implement multi-factor authentication directly for LDAP. If your LDAP or Active Directory server requires MFA during bind, users complete that challenge as part of the LDAP sign-in flow. Configure MFA in your directory server, not in Telegraf Controller.

Configure LDAP at startup

Set the LDAP environment variables before starting Telegraf Controller. The variables in the following table are the minimum required to enable LDAP authentication.

VariableDescriptionRequired
AUTH_LDAP_ENABLEDSet to true to enable LDAP authentication.Yes
AUTH_LDAP_URLLDAP server URL (ldap:// or ldaps://).Yes
AUTH_LDAP_BIND_DNService account distinguished name used for searches.Yes
AUTH_LDAP_BIND_PASSWORDPassword for the service account.Yes
AUTH_LDAP_USER_SEARCH_BASEBase DN under which user entries live.Yes
AUTH_LDAP_USER_SEARCH_FILTERLDAP filter with {{username}} placeholder.No
AUTH_LDAP_START_TLSIf true, upgrade an ldap:// connection with StartTLS.No
AUTH_LDAP_CA_CERT_PATHPath to a CA certificate that signs the LDAP server.No
AUTH_LDAP_REJECT_UNAUTHORIZEDIf false, skip TLS verification (development only).No
AUTH_LDAP_ATTR_USERNAMEDirectory attribute for the user’s login name.No
AUTH_LDAP_ATTR_EMAILDirectory attribute for the user’s email address.No
AUTH_LDAP_ATTR_DISPLAY_NAMEDirectory attribute for the user’s display name.No
AUTH_LDAP_ATTR_GROUPSDirectory attribute containing group memberships.No

For the full description of each variable, including defaults, see Authentication and security configuration options.

Apply the configuration

Add the LDAP variables to your systemd unit file (typically /etc/systemd/system/telegraf-controller.service):

[Service]
Environment=AUTH_LDAP_ENABLED=true
Environment=AUTH_LDAP_URL=ldaps://ldap.example.com:636
Environment=AUTH_LDAP_BIND_DN=cn=svc-controller,ou=services,dc=example,dc=com
Environment=AUTH_LDAP_BIND_PASSWORD=changeme
Environment=AUTH_LDAP_USER_SEARCH_BASE=ou=people,dc=example,dc=com
Environment=AUTH_LDAP_USER_SEARCH_FILTER=(uid={{username}})

Reload systemd and restart the service:

sudo systemctl daemon-reload
sudo systemctl restart telegraf-controller

Export the variables, or pass equivalent flags on the command line:

export AUTH_LDAP_ENABLED=true
export AUTH_LDAP_URL=ldaps://ldap.example.com:636
export AUTH_LDAP_BIND_DN='cn=svc-controller,ou=services,dc=example,dc=com'
export AUTH_LDAP_BIND_PASSWORD=changeme
export AUTH_LDAP_USER_SEARCH_BASE='ou=people,dc=example,dc=com'
export AUTH_LDAP_USER_SEARCH_FILTER='(uid={{username}})'

telegraf_controller --no-interactive

Set the variables in PowerShell, or pass equivalent flags on the command line:

$env:AUTH_LDAP_ENABLED="true"
$env:AUTH_LDAP_URL="ldaps://ldap.example.com:636"
$env:AUTH_LDAP_BIND_DN="cn=svc-controller,ou=services,dc=example,dc=com"
$env:AUTH_LDAP_BIND_PASSWORD="changeme"
$env:AUTH_LDAP_USER_SEARCH_BASE="ou=people,dc=example,dc=com"
$env:AUTH_LDAP_USER_SEARCH_FILTER="(uid={{username}})"

./telegraf_controller.exe --no-interactive

After Telegraf Controller starts, sign in as an owner and confirm:

  • Settings > LDAP Authentication shows the redacted connection details.
  • The sign-in page offers an LDAP option.

Call the public status endpoint to confirm the provider is registered:

curl -s http://localhost:8888/api/auth/status
Telegraf Controller LDAP authentication settings

Configure provisioning

Provisioning rules decide what happens the first time an LDAP user signs in. Configure them on the Settings > LDAP Authentication panel.

SettingDescriptionDefault
Provisioning strategyinvite_only, domain_restricted, or auto_create. See Provisioning strategies.invite_only
Default roleRole assigned when no group mapping matches the user.viewer
Allowed email domainsComma-separated list, required when the strategy is domain_restricted.(none)
Auto-link by verified emailWhen enabled, link an LDAP user to an existing local user whose email matches.Disabled
On no group matchuse_default_role admits the user with the default role; reject denies the sign-in.use_default_role

To update provisioning settings:

  1. Sign in as an Owner or Administrator.
  2. Navigate to the Settings page.
  3. In the LDAP Authentication section, update the values.
  4. Click Save.

The new values take effect on the next sign-in attempt.

Configure group-to-role mapping

Group-to-role mappings translate directory group membership into Telegraf Controller roles.

  1. On the Settings page, scroll to LDAP Authentication > Group role mappings.
  2. Click Add mapping and provide:
    • Provider ID: a label that identifies the LDAP instance. Use the default default unless you run multiple directories.
    • Group name: the value Telegraf Controller receives in the AUTH_LDAP_ATTR_GROUPS attribute (for example cn=telegraf-admins,ou=groups,dc=example,dc=com or the bare telegraf-admins, depending on your directory).
    • Role: administrator, manager, or viewer.
  3. Click Save.

When a user signs in, Telegraf Controller matches each of their groups against the mappings and assigns the highest matching role. Users without a matching group fall back to Default role or are rejected, depending on On no group match.

Owner role is not assignable through mappings

The Owner role is reserved for the bootstrap owner and accounts created by Transfer ownership. Group mappings cannot promote a user to Owner.

Bootstrap the owner against LDAP

You only need to bootstrap an LDAP-backed owner if you plan to disable local authentication. Otherwise, the default local owner can administer LDAP from the Settings page without limitation.

On first startup, set both of the following alongside the standard owner variables:

export OWNER_AUTH_PROVIDER=ldap
export OWNER_EXTERNAL_ID='uid=alice,ou=people,dc=example,dc=com'
VariableDescription
OWNER_AUTH_PROVIDERSet to ldap to bootstrap the owner with LDAP as the primary provider.
OWNER_EXTERNAL_IDThe user’s LDAP distinguished name (DN). This must match the DN the LDAP server returns when the user signs in.

The owner can sign in through LDAP and also retains a local password hash as a recovery credential. See Configure local authentication for the disable-local procedure.

Provider examples

Active Directory

OpenLDAP

FreeIPA

Disable LDAP

To disable LDAP authentication, remove AUTH_LDAP_ENABLED (or set it to a value other than true) and restart Telegraf Controller.

  • POST /api/auth/login/ldap returns 403 Forbidden after restart.
  • Existing LDAP-provisioned user accounts remain in the database. They cannot sign in through LDAP until LDAP is re-enabled, but they continue to appear in the Users list.
  • API tokens issued to LDAP users continue to work until the owning user is disabled or deleted.

Audit events

LDAP sign-in and sign-out emit the following audit events. They appear in the audit log when audit logging is enabled.

EventDescription
user.loginRecorded after a successful LDAP sign-in.
user.logoutRecorded when a user signs out.

For details on enabling and reviewing audit events, see Audit logs.


Was this page helpful?

Thank you for your feedback!


InfluxDB OSS 2.9.0: API tokens are hashed by default

Stronger token security in InfluxDB OSS 2.9.0 — tokens are hashed on disk by default. Existing tokens are hashed on first startup and can’t be recovered afterward. Capture any plaintext tokens you still need before you upgrade.

View InfluxDB OSS 2.9.0 release notes

Hashed tokens authenticate exactly like unhashed tokens — clients and integrations keep working.

Also new in 2.9.0:

  • Configurable backup compression
  • Restore support for backups containing hashed tokens
  • Tighter Edge Data Replication queue validation
  • Flux upgrade
  • Compaction reliability improvements

Key enhancements in Explorer 1.9

Explorer 1.9 is now available with InfluxQL support, an AI-assisted Flux to SQL converter (beta), and new live sample data simulators.

View Explorer 1.9 release notes

Explorer 1.9 includes new features and improvements that make it easier to query, visualize, and manage data.

Highlights:

  • Flux to SQL converter (beta): Convert Flux queries to SQL with an AI-assisted converter.
  • InfluxQL support: Query data with InfluxQL in the Data Explorer and dashboards, and save and load InfluxQL queries.
  • InfluxQL visualizations: Render line and bar charts from InfluxQL results with per-tag series grouping.
  • Query error history: Review a history of query errors in the query tool.
  • Live sample data simulators: Generate continuous live sample data with new bird data and signal generator simulators.

For more details, see Explorer 1.9 release notes

InfluxDB 3.10 is now available

InfluxDB 3 Core 3.10 adds an automatic catalog format upgrade, a configurable query-concurrency limit, and processing engine improvements.

Key updates in InfluxDB 3 Core 3.10:

  • Catalog format upgrade: the on-disk catalog automatically upgrades from format v2 to v3 on first 3.10 startup. Migration is one-way—back up your catalog before upgrading.
  • --max-concurrent-queries: limit concurrent queries (adjustable at runtime).
  • GET /ready endpoint for readiness probes.
  • Processing engine: cross-database queries and trigger lockdown flags.

For more information, see the InfluxDB 3 Core release notes.

InfluxDB 3.10 is now available

InfluxDB 3 Enterprise 3.10 adds automated backup and restore, row-level deletions, and user management, with an automatic catalog format upgrade and performance preview improvements.

Key updates in InfluxDB 3 Enterprise 3.10:

  • Catalog format upgrade: the on-disk catalog automatically upgrades from format v2 to v3 on first 3.10 startup. Migration is one-way—back up your catalog before upgrading.
  • Automated backup and restore (beta)
  • Row-level deletions
  • User management (authentication and RBAC) — preview
  • Performance preview improvements

Backup and restore, row-level deletions, and the performance preview require the Enterprise storage engine upgrade (opt-in beta). Beta and preview features are subject to breaking changes and aren’t recommended for production use.

For more information, see the InfluxDB 3 Enterprise release notes

Telegraf Enterprise is now generally available

Telegraf Enterprise is now generally available, along with Telegraf Controller v1.0.

Telegraf Enterprise combines Telegraf Controller, a centralized management console for Telegraf, with official support from InfluxData. Manage configurations, monitor fleet health, and operate tens of thousands of Telegraf agents from a single system.

InfluxDB Docker latest tag changing to InfluxDB 3 Core

On September 15, 2026, the latest tag for InfluxDB Docker images will point to InfluxDB 3 Core. To avoid unexpected upgrades, use specific version tags in your Docker deployments.

If using Docker to install and run InfluxDB, the latest tag will point to InfluxDB 3 Core. To avoid unexpected upgrades, use specific version tags in your Docker deployments. For example, if using Docker to run InfluxDB v2, replace the latest version tag with a specific version tag in your Docker pull command–for example:

docker pull influxdb:2