Active Directory / LDAP 访问管理
MinIO 支持配置单个 Active Directory 或 LDAP (AD/LDAP) 服务,用于对用户身份进行外部管理。启用 AD/LDAP 外部身份管理会禁用普通用户的 MinIO 内部 IDP,但 root 用户 仍然保持有效;自 SILO 20261109(#272)起,启用 AD/LDAP 后 root 用户也可以登录内嵌 Console。
对于由外部 AD/LDAP 提供方管理的身份,SILO 加载显式关联到用户 Distinguished Name(DN)的现有策略。策略名称不需要与 DN 相同。
如果 AD/LDAP 配置包含查询组成员关系所需的设置,SILO 还会加载显式关联到返回的组 DN 的策略。
默认情况下,MinIO 会拒绝访问所有未被用户已分配或继承的 策略 明确允许的操作或资源。 管理员通过 mcli idp ldap policy attach 将现有策略关联到 LDAP 用户或组。 如果没有任何策略与用户 DN 或组 DN 匹配,MinIO 会阻止该部署上对所有操作和资源的访问。
MinIO 用于认证用户并获取其组成员关系的具体 AD/LDAP 查询,是在 使用 Active Directory / LDAP 身份管理部署集群 时配置的。 本页介绍如何创建 SILO 策略,并将它们显式关联到返回的 Distinguished Name。
认证与授权流程
使用 Active Directory / LDAP 凭证的应用程序登录流程如下:
-
将 AD/LDAP 凭证提供给 MinIO Security Token Service (STS) AssumeRoleWithLDAPIdentity API 端点。
-
MinIO 针对 AD/LDAP 服务器校验所提供的凭证。
-
SILO 加载显式关联到用户 DN 的策略。
如果配置为执行组查询,MinIO 还会查询该用户所属的 AD/LDAP 组列表。 SILO 加入显式关联到各个返回的组 DN 的策略。
-
MinIO 会在 STS API 响应中返回临时凭证,其形式为 access key、 secret key 和 session token。这些凭证的权限来自显式关联到已认证用户 DN 或 组 DN 的策略。
自 SILO 20261109(#275)起,AssumeRoleWithLDAPIdentity 会区分凭证认证失败与上游目录服务故障:无效的 LDAP 凭证返回 InvalidParameterValue(HTTP 400,并计入按来源地址限制的登录节流额度),而上游 LDAP 目录连接或服务错误返回 InternalError(HTTP 500,在服务端记录错误日志且不消耗登录节流配额)。
SILO 提供了一个示例 Go 应用程序 ldap.go,用于处理完整的登录流程。
AD/LDAP 用户也可以创建与其 AD/LDAP 用户 Distinguished Name 关联的 访问密钥。 访问密钥是长期有效的凭证,会继承父用户的权限。 父用户在创建访问密钥时还可以进一步限制这些权限。 使用以下方法之一创建新的访问密钥:
使用 mc admin user svcacct add 命令创建访问密钥。 将用户 Distinguished Name 指定为要关联访问密钥的用户名。
将策略映射到用户 DN
以下命令使用 mc idp ldap policy attach 将现有 MinIO 策略 关联到 AD/LDAP 用户 DN。
- MinIO 会将
consoleAdmin策略分配给 DN 匹配cn=sisko,cn=users,dc=example,dc=com的已认证用户, 从而授予其对 MinIO 服务器的完全访问权限。 - MinIO 会将
readwrite和diagnostics两个策略分配给 DN 匹配cn=dax,cn=users,dc=example,dc=com的已认证用户,从而授予其对 MinIO 服务器的一般读写访问权限,以及 诊断性管理操作的访问权限。 - MinIO 不会为 DN 匹配
cn=quark,cn=users,dc=example,dc=com的 已认证用户分配任何策略,并会拒绝其对所有 API 操作的访问。
将策略映射到组 DN
以下命令使用 mc idp ldap policy attach 将现有 MinIO 策略 关联到 AD/LDAP 组 DN。
- MinIO 会将
consoleAdmin策略分配给任何属于cn=ops,cn=groups,dc=example,dc=comAD/LDAP 组的认证用户,从而授予其对 MinIO 服务器的完全访问权限。 - MinIO 会将
diagnostics策略分配给任何属于cn=engineering,cn=groups,dc=example,dc=comAD/LDAP 组的认证用户,从而授予其对 诊断性管理操作的访问权限。
规范化长 DN
SILO 20261026 引入了 LDAP 长 DN 修复,SILO 20261109(RELEASE.2026-11-09T00-00-00Z,#271)进一步将其扩展到多盘纠删码集合部署。当用户依赖组策略授权、且其规范化 DN 在对象存储 IAM 后端中的纯 ASCII 单段文件名超过 255 字节时,服务端会将触发的文件名超长错误视为“无个人策略映射记录”并继续评估组策略;完整路径超限(PATH_MAX)、不可读撤销记录及其他存储错误仍按 Fail-Closed 拒绝访问,对象后端也仍不支持写入超长路径记录。
存储身份记录的组关系刷新
自 SILO 20261109(RELEASE.2026-11-09T00-00-00Z)起,当 LDAP 用户通过已存储的身份记录(fromStored)进行认证或刷新时,只要缓存的组列表超过 1 小时(ldapStoredGroupRefreshInterval = 1h),服务端就会重新向 LDAP 查询组成员关系,并在刷新失败时按 Fail-Closed 拒绝访问。组关系刷新会直接更新持久化身份记录(#321–#323),防止过期的节点缓存恢复已被移除的组成员关系;同时,只要提交者的凭证仍然有效,正在运行的批处理作业不会因 LDAP 组刷新而中断(#318–#320)。参见 LDAP 规范化长 DN。