MinIO IAM 以 AWS Identity and Access Management (IAM) 兼容性为核心构建,并向应用程序和用户呈现
该框架,无论环境如何 - 提供相同的功能 跨越不同的公共云、私有云和边缘。 MinIO 扩展了 AWS IAM 兼容性,
支持流行的外部身份提供商,例如 ActiveDirectory/LDAP、Okta 和 Keycloak,允许
管理员卸载身份管理 到他们组织的首选 SSO 解决方案。
在对象存储世界中,用户不登录数据存储——应用程序登录。 因此,MinIO IAM 旨在支持以手动(静态)和程序化(动态)应用程序为中心的身份管理。 对于手动身份创建,客户可以使用 MinIO 控制台。 对于编程身份创建,客户可以使用 MinIO 的 `mc` 命令行界面。
MinIO 支持内部角色管理功能。 使用 MinIO 的内部管理时,新用户身份的创建遵循访问密钥和秘密密钥凭证框架。 每次在 MinIO 集群上执行操作时,应用程序都将使用这些凭据进行身份验证。 MinIO 建议为每个应用程序创建一个用户,以通过利用用户身份验证和身份管理机制来减轻与泄露的长期用户凭证相关的安全风险。 MinIO不限制可管理的用户数量,用户数量对系统性能的影响可以忽略不计。
MinIO 还支持领先的第三方外部身份提供商 (IDP)。 这些独立系统专门用于创建、验证和管理用户身份。 支持的 IDP 包括:
当使用外部 IDP 时,应用程序必须使用 MinIO 安全令牌服务 (STS) API 来提供自动过期的用户凭证。 虽然应用程序需要实现 STS API 才能访问此功能,但一旦实现,应用程序就可以完全依赖外部 IDP 进行身份验证来访问 MinIO。 此外,STS 生成的自动过期凭据减轻了与泄露的长期用户凭据相关的安全风险。
除了内部和外部用户身份,MinIO 控制台还支持创建服务帐户。 服务帐户是简单的身份,由自动生成的访问密钥和秘密密钥组成。 服务帐户链接到创建它的用户帐户。
经过身份验证的用户可以生成任意数量的子服务帐户,每个子服务帐户都从父用户那里获得权限。 父用户可以在创建帐户期间进一步限制服务帐户权限。 服务帐户与 MinIO 的内部和支持的外部角色管理系统一起工作。 对于外部 IDP,服务帐户可以简化为应用程序提供新凭据的工作流程,方法是使管理员或应用程序所有者能够使用他们的外部凭据登录到 MinIO 控制台,并为其各种应用程序提供必要的服务帐户凭据。
验证应用程序的身份只是保护数据存储访问的一半。 另一个是对该应用程序有权访问的操作和资源设置严格的控制和指导方针。 MinIO 访问管理使用与 AWS IAM 兼容的基于策略的访问控制 (PBAC) 控制经过身份验证的应用程序的授权。
每个策略都是一个规则列表,定义了允许或拒绝的确切资源和操作。 MinIO 使用默认拒绝行为,减少了由于错误而暴露的可能性,因此给定的策略只需要描述允许的操作和资源的最小集合。 策略细化到单个操作或资源 - 例如只允许对特定存储桶甚至存储桶前缀执行 GET 操作。
每个用户身份都可以有一个明确分配的策略。 MinIO 还支持创建组。 每个组都有一个分配的策略,所有具有该组成员资格的用户都继承该策略。 给定用户的完整权限集是其明确分配和继承的策略的组合。 拒绝规则总是覆盖允许规则,因此即使一个组提供广泛的允许权限,用户明确分配的拒绝策略将覆盖那些继承的权限。
MinIO 访问管理不提供权限升级路径 - 应用程序只能通过明确分配的用户策略或继承的组策略获得管理员或应用程序所有者允许的内容。 对于使用 STS API 以使用外部身份提供者进行身份验证的应用程序,STS API 允许进一步缩减策略范围。 同样,服务帐户允许在从其父用户继承的权限之上限制权限。