MinIO IAM 以 AWS Identity and Access Management (IAM) 兼容性为核心构建,并将其
框架呈现给应用程序和用户,无论环境如何 - 在不同的公有云、私有云和边缘提供相同的功能。
MinIO 通过支持流行的外部身份提供商(如 ActiveDirectory/LDAP、Okta 和 Keycloak)扩展了 AWS IAM 兼容性,允许
管理员将身份管理卸载到其组织首选的 SSO 解决方案。
管理员将身份管理卸载到其组织首选的 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 允许进一步减少策略范围。同样,服务帐户允许在从其父用户继承的权限之上限制权限。