中文文档

配置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 终点。

有关这些变量的完整文档,请参阅 minio-server-envvar-external-identity-management-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 的 minio-sts-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 的密钥和秘密密钥,例如 PUT 、 GET 和 DELETE 操作。

应用程序可以根据需要使用以下命令生成临时访问凭据 minio-sts-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 并执行操作。

有关参考文档,请参阅 minio-sts-assumerolewithwebidentity 。

Join Slack 商业支持购买咨询