文档基于2025-10-10日社区最终版构建     
切换到英文版    进入演示系统    进入交流社区

MinIO Documentation

配置 MinIO 使用 OpenID 进行身份验证

概述

MinIO 支持使用 OpenID Connect (OIDC) 兼容的身份提供商 (IDP),例如 Okta、KeyCloak、Dex、Google 或 Facebook,用于外部管理用户身份。

本页面包含在 Kubernetes 和裸机基础设施中为 MinIO 部署配置 OIDC 的流程。

此过程涵盖:

  • 为外部 OIDC 提供商配置 MinIO 集群。

  • 使用 MinIOAssumeRoleWithWebIdentity安全令牌服务(STS)API,用于生成供应用程序使用的临时凭证。

此过程适用于所有兼容 OIDC 的提供商。 有关身份验证和 JWT 获取的具体说明或流程,请参阅您所选 OIDC 提供商的文档。

前提条件

OpenID-Connect (OIDC) 兼容身份提供者

本流程假定已存在OIDC提供商,例如Okta、KeyCloak、Dex、Google或Facebook。 有关配置这些服务的说明不在本流程讨论范围内。

MinIO 集群必须与 OIDC 提供者建立双向访问连接。

访问管理行为审查

确保每个计划与 MinIO 配合使用的用户身份都具有适当的索赔配置使得 MinIO 能够关联一个政策对于经过身份验证的用户。 没有分配策略的 OpenID 用户无权访问 MinIO 集群上的任何操作或资源。

对于基于JWT声明的身份验证,MinIO仅支持使用OIDC流程的OpenID 授权码流程.

访问 MinIO 集群

此过程使用mc用于在 MinIO 集群上执行操作。 安装mc在可以访问集群网络的机器上。 请参阅mc 安装快速入门有关下载和安装的说明mc此过程假设已配置alias对于 MinIO 集群。

使用 OpenID 外部身份管理配置 MinIO

  1. 创建一个新的OpenID配置

    使用mc idp openid add为 MinIO 集群创建新 OIDC 配置的命令。 以下示例命令假设使用 OIDC 提供商返回的 JWT 声明通过策略分配进行授权.

    mc idp openid add ALIAS \
      client_id=minio-oidc-client-id \
      client_secret=minio-oidc-client-secret \
      config_url="https://openid-provider.example.net/REALM/.well-known/openid-configuration" \
      claim_name="minio-policies" \
      scopes="openid,groups"
    

    您也可以配置RoleArn基于功能的机制,所有经过身份验证的用户都遵循由单一策略规定的role_policy设置。 例如,设置role_policy="readOnly"为所有已认证用户分配内置的只读策略。

  2. 查看 MinIO 服务器日志

    MinIO 进程会作为新配置的一部分重新启动。 检查日志以确保 OIDC 配置已成功持久化。

    如果配置role_policy对于一个或多个配置,输出包含用于STS API的ARN。

  3. 使用 OIDC 凭据生成 S3 兼容临时凭据

    MinIO 要求客户端使用身份验证AWS Signature Version 4 protocol支持已弃用的签名版本 2 协议。 具体而言,客户端必须提供有效的访问密钥和密钥才能访问任何 S3 或 MinIO 管理 API,例如PUT, GETDELETE操作。

    应用程序可以根据需要使用AssumeRoleWithWebIdentitySecurity Token Service (STS) API 端点及其返回的 JSON Web Token (JWT)OIDCprovider。

    应用程序必须提供登录的工作流程OIDCprovider 并检索与认证会话关联的 JSON Web Token (JWT)。 有关成功认证后如何获取和解析 JWT token 的具体操作,请参考 provider 文档。MinIO 提供了一个 Go 应用程序示例web-identity.go以一个管理此工作流程的示例。

    一旦应用程序获取到JWT令牌,请使用AssumeRoleWithWebIdentity生成临时凭证的端点:

    POST https://minio.example.net?Action=AssumeRoleWithWebIdentity
    &WebIdentityToken=TOKEN
    &Version=2011-06-15
    &DurationSeconds=86400
    &Policy=Policy
    
    • 替换TOKEN使用上一步返回的 JWT 令牌。

    • 替换DurationSeconds临时凭证过期前的持续时间(以秒为单位)。上面的示例指定了一个期限为86400秒,或24小时。

    • 替换Policy带有内联 URL 编码的 JSON政策进一步限制与临时凭证关联的权限。

      省略使用与OpenID用户关联的策略策略声明.

    您可以选择性地包含RoleArn参数,其中包含您首选的单策略 OIDC 配置的 ARN 字符串。

    API响应包含一个XML文档,其中包含访问密钥、密钥、会话令牌和过期日期。 应用程序可以使用访问密钥和密钥来访问MinIO并执行操作。

    查看AssumeRoleWithWebIdentity供参考的文档。