中文文档

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

概述

MinIO 支持使用 OpenID Connect(OIDC)兼容的身份提供者(IDP),如 Okta、KeyCloak、Dex、Google 或 Facebook,以外部管理用户身份。 本页面的流程提供以下操作说明:

  • 配置 MinIO 集群以使用外部 OIDC 提供程序。

  • 使用 MinIO 控制台和 OIDC 凭据登录集群。

  • 使用 MinIO AssumeRoleWithWebIdentity 安全令牌服务(STS)API 为应用程序生成临时凭据。

此过程适用于兼容 OIDC 的提供程序。 有关身份验证和 JWT 检索的具体说明或程序,请参考您选择的 OIDC 提供程序的文档。

先决条件

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

此过程假定已存在 OIDC 提供程序,如 Okta、KeyCloak、Dex、Google 或 Facebook。 此过程的范围不包括配置这些服务的说明。

确保为打算与 MinIO 一起使用的每个用户身份配置了适当的 claim,以便 MinIO 可以将 policy 与经过身份验证的用户关联起来。 没有分配策略的 OpenID 用户无权访问 MinIO 群集上的任何操作或资源。

MinIO 部署

此过程假定存在一个运行 最新稳定版本 的 MinIO 集群。 有关新 MinIO 部署的更完整文档,请参考 安装和部署MinIO

此过程对于较旧版本的 MinIO 可能 正常工作。

安装和配置 mc ,并拥有访问 MinIO 集群的权限

此过程使用 mc 在 MinIO 集群上执行操作。 在具有网络访问权限的机器上安装 mc 。 请参考 mc Installation Quickstart 获取下载和安装 mc 的指导。

此过程假设已经配置了 MinIO 集群的 alias

Procedure

1) 设置 OpenID 配置设置

您可以使用环境变量 服务器运行时配置设置来配置 OIDC 提供程序。 这两种方法都需要启动/重启 MinIO 部署以应用更改。 f以下选项卡分别提供了所有必需和可选的 的环境变量和配置设置的快速参考:

MinIO 支持使用 环境变量 指定 OIDC(OpenID Connect) 提供程序设置。 minio server 进程将在下一次启动时应用指定的设置。 对于分布式部署,请使用 相同的 值, 始终在部署的所有节点上指定这些设置。

以下示例代码设置了与配置 OIDC(OpenID Connect) 提供程序用于外部身份管理相关的 所有 环境变量。 最低 必需 变量是 MINIO_IDENTITY_OPENID_CONFIG_URL:

export MINIO_IDENTITY_OPENID_CONFIG_URL="https://openid-provider.example.net/.well-known/openid-configuration"
export MINIO_IDENTITY_OPENID_CLIENT_ID="<string>"
export MINIO_IDENTITY_OPENID_CLIENT_SECRET="<string>"
export MINIO_IDENTITY_OPENID_CLAIM_NAME="<string>"
export MINIO_IDENTITY_OPENID_CLAIM_PREFIX="<string>"
export MINIO_IDENTITY_OPENID_SCOPES="<string>"
export MINIO_IDENTITY_OPENID_REDIRECT_URI="<string>"
export MINIO_IDENTITY_OPENID_COMMENT="<string>"

请将 MINIO_IDENTITY_OPENID_CONFIG_URL 替换为 OIDC 提供程序发现文档的 URL 终点。

有关这些变量的完整文档,请参阅 OpenID身份管理设置

MinIO支持使用 配置设置 <identity_openid>`来指定 :abbr:`OIDC(OpenID Connect) 提供程序设置。 minio server 进程在下一次启动时应用指定的设置 对于分布式部署,请使用 mc admin config 命令 将配置应用于部署中的所有节点。

以下示例代码设置了与配置外部身份管理的 OIDC 提供程序相关的 所有 配置设置。 最低 必需 设置是 identity_openid config_url:

mc admin config set ALIAS/ identity_openid \
   config_url="https://openid-provider.example.net/.well-known/openid-configuration" \
   client_id="<string>" \
   client_secret="<string>" \
   claim_name="<string>" \
   claim_prefix="<string>" \
   scopes="<string>" \
   redirect_uri="<string>" \
   comment="<string>"

请使用 OIDC 提供程序发现文档 的 URL 端点替换 config_url

要了解更完整的有关这些设置的文档,请参见 identity_openid.

2) 重新启动 MinIO 部署

您必须重新启动 MinIO 部署以应用配置更改。 使用 mc admin service restart 命令重新启动部署。

mc admin service restart ALIAS

ALIAS 替换为要重新启动的部署的 alias

3) 使用 MinIO 控制台以 OIDC 凭据登录

控制台支持完整的身份验证工作流程,包括向 OIDC(OpenID Connect) 提供程序进行身份验证、使用 MinIO 的 AssumeRoleWithWebIdentity 安全令牌服务(STS)端点生成临时凭据, 并将用户登录到 MinIO 部署。

RELEASE.2021-07-08T01-15-01Z 开始,MinIO 控制台已嵌入到 MinIO 服务器中。 您可以通过打开 MinIO 集群的根 URL 访问控制台。 例如, https://minio.example.net:9000 .

从控制台中,点击 BUTTON 开始 OpenID 身份验证 流程。

登录后,您可以执行经过身份验证的任何操作 用户已获得 授权.

您还可以为需要在 MinIO 上执行操作的支持应用程序创建 access keys 。 访问密钥是长期的凭据,它们继承其权限自父用户。 父用户可以在创建服务帐户时进一步限制这些 权限。

4) 使用 OIDC 凭据生成 S3 兼容的临时凭据

MinIO 要求客户端使用 AWS Signature Version 4协议 支持已弃用的 Signature Version 2 协议。 具体来说,客户必须提供有效的访问权限 用于访问任何 S3 或 MinIO 管理 API 的密钥和秘密密钥,例如 PUTGETDELETE 操作。

应用程序可以根据需要使用以下命令生成临时访问凭据 AssumeRoleWithWebIdentity 安全令牌服务 (STS) API 端点和返回的 JSON Web 令牌 (JWT) OIDC 提供者.

应用程序必须提供一个流程,用于登录到 OIDC 提供程序并检索与认证会话相关联的 JSON Web Token (JWT) 在成功认证后,请参考提供程序文档以获取 和解析 JWT 令牌。MinIO 提供了一个示例 Go 应用程序 web-identity.go 其中包含管理此工作流程的示例。

应用程序检索到 JWT 令牌后, 可以使用 AssumeRoleWithWebIdentity 端点生成临时凭证:

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

  • 请使用秒为单位的持续时间替换 DurationSeconds ,直到临时凭证过期。上面的示例指定了 86400 秒或 24 小时的时间段。

  • 请使用内联 URL 编码的 JSON policy 替换 Policy ,以进一步限制与临时凭证相关联的权限。

    请勿使用与 OpenID 用户关联的 policy claim.

API 响应由包含访问密钥、秘密密钥、会话令牌和 过期日期的 XML 文档组成。 应用程序可以使用访问密钥和秘密密钥访问 MinIO 并执行操作。

有关参考文档,请参阅 AssumeRoleWithWebIdentity

Join Slack 商业支持购买咨询