Active Directory / LDAP 访问管理
MinIO 支持配置单个 Active Directory 或 LDAP (AD/LDAP) 服务,用于对用户身份进行外部管理。 启用 AD/LDAP 外部身份管理会禁用 MinIO 内部 IDP。
对于由外部 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 的策略。
MinIO 提供了一个示例 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
Server 20261026合入了 LDAP 长 DN 修复(Server 20261018 不包含此修复)。当用户仅依赖组策略登录、但其规范化 DN 长度超过对象存储后端的文件名上限时,服务端会将纯 ASCII 路径分量超过 255 字节所触发的文件名超长错误视为“无个人策略映射记录”并继续加载组策略;完整路径超限(PATH_MAX)、不可读撤销记录及其他存储错误仍按 Fail-Closed 报错,对象后端也仍不支持写入超长路径记录。