Active Directory/LDAP Identity Management
MinIO AIStor supports configuring one or more Active Directory or LDAP (AD/LDAP) services for external management of user identities. You can configure multiple LDAP providers to support different groups of users or organizational units within your environment.
Multiple LDAP Configurations
Support for multiple LDAP configurations requires AIStor Server version RELEASE.2025-12-20T04-58-37Z or later and AIStor Client (mc) version RELEASE.2025-12-19T20-11-44Z or later.
Steps to integrate your AD/LDAP service:
-
Configure your MinIO AIStor cluster for AD/LDAP integration.
-
Access the Console UI with AD/LDAP credentials.
-
Generate temporary credentials for application access with the
AssumeRoleWithLDAPIdentitySecurity Token Service (STS) API
See the documentation for your AD/LDAP provider for detailed information about configuring user identities.
Prerequisites
-
Access to MinIO AIStor Cluster
These instructions use
mcto perform actions on your MinIO AIStor cluster. Installmcon a machine with network access to the cluster. Make sure to configure analiasfor your cluster. -
AD/LDAP identity provider access
MinIO AIStor must have bidirectional network connectivity to the target AD/LDAP service.
MinIO AIStor requires a read-only access key with which it binds to perform authenticated user and group queries. Ensure each AD/LDAP user and group has a corresponding policy on the MinIO AIStor deployment. An AD/LDAP user with no assigned policy and with membership in groups with no assigned policy has no permission to access any action or resource on the MinIO cluster.
Configure AD/LDAP for MinIO AIStor
-
Create the AD/LDAP configuration
The
mc idp ldapcommand controls AD/LDAP configurations for a MinIO AIStor deployment.The following example sets all configurations for an AD/LDAP provider. The minimum required settings are:
-
server_addr -
lookup_bind_dn -
lookup_bind_password -
user_dn_search_base_dn -
user_dn_search_filter
mc idp ldap add ALIAS \ server_addr="ldaps.example.net:636" \ lookup_bind_dn="CN=xxxxx,OU=xxxxx,OU=xxxxx,DC=example,DC=net" \ lookup_bind_password="xxxxxxxx" \ user_dn_search_base_dn="DC=example,DC=net" \ user_dn_search_filter="(&(objectCategory=user)(sAMAccountName=%s))" \ group_search_filter="(&(objectClass=group)(member=%d))" \ group_search_base_dn="ou=MinIO Users,dc=example,dc=net" \ tls_skip_verify="off" \ server_insecure=off \ server_starttls="off" \ srv_record_name="" \ comment="Test LDAP server"To add a named LDAP configuration, specify the configuration name after the alias:
mc idp ldap add ALIAS PARTNERS \ server_addr="ldaps.partners.example.net:636" \ lookup_bind_dn="CN=xxxxx,OU=xxxxx,OU=xxxxx,DC=partners,DC=net" \ lookup_bind_password="xxxxxxxx" \ user_dn_search_base_dn="DC=partners,DC=net" \ user_dn_search_filter="(&(objectCategory=user)(sAMAccountName=%s))" \ comment="Partner organization LDAP"For more complete documentation on these settings, see
mc idp ldap.mc idp ldapoffers additional features and improved validation overmc admin config setruntime configuration settings.mc idp ldapsupports the same settings asmc admin configand theidentity_ldapconfiguration key.The
identity_ldapconfiguration key remains available for existing scripts and tools.You can specify environment variables. The server process applies the specified settings on the next startup.
For distributed deployments, you must specify the same values for all settings across all nodes. Any differences between node configurations results in startup or configuration failures.
The following example code sets all environment variables for an AD/LDAP provider. The minimum required variables are:
-
MINIO_IDENTITY_LDAP_SERVER_ADDR -
MINIO_IDENTITY_LDAP_LOOKUP_BIND_DN -
MINIO_IDENTITY_LDAP_LOOKUP_BIND_PASSWORD -
MINIO_IDENTITY_LDAP_USER_DN_SEARCH_BASE_DN -
MINIO_IDENTITY_LDAP_USER_DN_SEARCH_FILTER
export MINIO_IDENTITY_LDAP_SERVER_ADDR="ldaps.example.net:636" export MINIO_IDENTITY_LDAP_LOOKUP_BIND_DN="CN=xxxxx,OU=xxxxx,OU=xxxxx,DC=example,DC=net" export MINIO_IDENTITY_LDAP_USER_DN_SEARCH_BASE_DN="dc=example,dc=net" export MINIO_IDENTITY_LDAP_USER_DN_SEARCH_FILTER="(&(objectCategory=user)(sAMAccountName=%s))" export MINIO_IDENTITY_LDAP_LOOKUP_BIND_PASSWORD="xxxxxxxxx" export MINIO_IDENTITY_LDAP_GROUP_SEARCH_FILTER="(&(objectClass=group)(member=%d))" export MINIO_IDENTITY_LDAP_GROUP_SEARCH_BASE_DN="ou=MinIO Users,dc=example,dc=net" export MINIO_IDENTITY_LDAP_TLS_SKIP_VERIFY="off" export MINIO_IDENTITY_LDAP_SERVER_INSECURE="off" export MINIO_IDENTITY_LDAP_SERVER_STARTTLS="off" export MINIO_IDENTITY_LDAP_SRV_RECORD_NAME="" export MINIO_IDENTITY_LDAP_COMMENT="LDAP test server"To configure additional named LDAP providers, append the configuration name to each environment variable. The name is case-sensitive and must be consistent across all variables. By convention, use uppercase, for example
_CORP:# Partners LDAP configuration (name: "partners") export MINIO_IDENTITY_LDAP_SERVER_ADDR_PARTNERS="ldaps.partners.example.net:636" export MINIO_IDENTITY_LDAP_LOOKUP_BIND_DN_PARTNERS="CN=xxxxx,OU=xxxxx,DC=partners,DC=net" export MINIO_IDENTITY_LDAP_USER_DN_SEARCH_BASE_DN_PARTNERS="dc=partners,dc=net" export MINIO_IDENTITY_LDAP_USER_DN_SEARCH_FILTER_PARTNERS="(&(objectCategory=user)(sAMAccountName=%s))" export MINIO_IDENTITY_LDAP_LOOKUP_BIND_PASSWORD_PARTNERS="xxxxxxxxx" export MINIO_IDENTITY_LDAP_COMMENT_PARTNERS="Partner organization LDAP"See also the complete Active Directory/LDAP Settings.
For Kubernetes deployments using the MinIO AIStor Operator, configure LDAP settings using environment variables in the ObjectStore custom resource.
Enhanced in Operator RELEASE.2025-10-16T16-46-38Z
Support for securely referencing values from Kubernetes Secrets using
valueFrom.secretKeyRefrequires Operator versionRELEASE.2025-10-16T16-46-38Zor later.For security, store sensitive values like the LDAP bind password in a Kubernetes Secret and reference it using
valueFrom.secretKeyRef. This keeps credentials separate from the ObjectStore specification.For complete configuration examples and best practices, see Environment Variable Configuration.
You can work with the Console UI.
For distributed deployments, configuring AD/LDAP in the console applies the configuration to all nodes in the deployment.
-
Log in to the console as either the root user or a user with the
consoleAdminpolicy. -
Go to Identity > LDAP > Edit Configuration.
The minimum required settings are:
-
Server Address
-
Lookup Bind DN
-
Lookup Bind Password
-
User DN Search Base
-
User DN Search Filter
Not all configuration options are available in the console. For additional settings, use
mc idp ldapor environment variables. -
When configuring AD/LDAP group lookups, configure specific filters that return the minimum number of relevant groups for the purpose of supporting authentication.
Filters that return large group assignments increase the size of associated calls and resources. Functions sensitive to large request or response bodies may exhibit unexpected behaviors as a result.
-
-
Restart the deployment
You must restart the deployment to apply the configuration changes.
If you configured AD/LDAP from the console, no additional action is required. The console automatically restarts the deployment after you save the new configuration.
For the client or environment variable configuration, run
mc admin service restartto restart the deployment:mc admin service restart ALIASReplace
ALIASwith the alias of the deployment to restart. -
Log in to the console with AD/LDAP credentials
The Console UI supports the full workflow of authenticating to the AD/LDAP provider, generating temporary credentials using the
AssumeRoleWithLDAPIdentitySecurity Token Service (STS) endpoint, and logging the user in.Go to the root URL for the deployment, for example
https://minio.example.net:9000.After you log in, you can perform any action for which your account is authorized.
-
Generate STS credentials for application authentication
Clients must authenticate using AWS Signature Version 4 protocol with support for the deprecated Signature Version 2 protocol. Clients must present a valid access key and secret key to access any S3 or MinIO AIStor administrative API, such as
PUT,GET, andDELETEoperations.You can create access keys to support applications that must perform operations on MinIO AIStor. Access keys are long-lived credentials that inherit their permissions from the parent user.
Alternatively, applications can generate temporary access credentials as needed with the
AssumeRoleWithLDAPIdentitySecurity Token Service (STS) API endpoint and AD/LDAP user credentials. See the example Go applicationldap.gofor this workflow.POST https://minio.example.net?Action=AssumeRoleWithLDAPIdentity &LDAPUsername=USERNAME &LDAPPassword=PASSWORD &Version=2011-06-15 &Policy={} &ConfigName=CONFIGNAME-
Replace
LDAPUsernamewith the username of the AD/LDAP user. -
Replace
LDAPPasswordwith the password of the AD/LDAP user. -
Replace
Policywith an inline URL-encoded JSON policy that further restricts the permissions associated to the temporary credentials.Omit to use the policy whose name matches the Distinguished Name (DN) of the AD/LDAP user.
-
Replace
ConfigNamewith the name of the LDAP configuration to authenticate against.Omit to use the default LDAP configuration (
_).
The API response consists of an XML document containing the access key, secret key, session token, and expiration date. Applications can use this access key and secret key to access and perform operations on MinIO.
See
AssumeRoleWithLDAPIdentityfor reference documentation. -
Disable AD/LDAP integration
You can enable or disable the configured AD/LDAP connection as needed.
Run mc idp ldap disable to deactivate a configured connection.
Run mc idp ldap enable to activate a previously configured connection.
For deployments with multiple LDAP configurations, specify the configuration name:
mc idp ldap disable ALIAS NAME
mc idp ldap enable ALIAS NAMEReplace NAME with the desired configuration to modify.
If you do not specify a configuration NAME, then the command applies to the default configuration (internally named _).
If you disable the default configuration, then MinIO AIStor does not use a default LDAP configuration. Any other existing named configurations continue to function.
You can also enable or disable AD/LDAP from the console.