跳转到主要内容

这是本节的多页打印视图。 .

返回本页常规视图.

Security Token Service (STS)

MinIO Security Token Service (STS) APIs 允许应用程序生成用于访问 MinIO 部署的临时凭证。

对于配置为使用外部身份管理器的 MinIO 部署,STS API 是 必需 的,因为该 API 可将外部 IDP 凭证转换为兼容 AWS Signature v4 的凭证。

STS API 端点

MinIO 支持以下 STS API 端点:

端点 支持的 IDP 说明
AssumeRoleWithWebIdentity OpenID Connect 使用 OIDC 提供方返回的 JWT token 生成 access key 和 secret key
AssumeRoleWithLDAPIdentity Active Directory / LDAP 使用为该 API 端点指定的 AD/LDAP 凭证生成 access key 和 secret key。
AssumeRoleWithCustomToken MinIO Identity Plugin 生成一个 token,用于外部身份提供方和 MinIO Identity Plugin

1 - AssumeRoleWithCustomToken

MinIO Security Token Service (STS) 的 AssumeRoleWithCustomToken API 端点会生成一个令牌,用于配合 MinIO External Identity Management Plugin 使用。

请求端点

AssumeRoleWithCustomToken 端点的格式如下:

POST https://minio.example.net?Action=AssumeRoleWithCustomToken[&ARGS]

以下示例使用了所有受支持的参数。 请将 minio.example.net 主机名替换为你的 MinIO 集群对应 URL:

POST https://minio.example.net?Action=AssumeRoleWithCustomToken
&Token=TOKEN
&Version=2011-06-15
&DurationSeconds=86000
&RoleArn="external-auth-provider"

请求查询参数

此端点支持以下查询参数:

参数

类型

说明

Token

string

必填

指定提交给外部身份管理器的 JSON Token。 MinIO 期望身份管理器解析该令牌,并判断是否使用该令牌对客户端请求进行认证。

Version

string

必填

指定 2011-06-15

RoleArn

string

必填

指定与此 STS 请求关联的 Identity Manager Plugin 配置 ARN。

更多信息请参见 MINIO_IDENTITY_PLUGIN_ROLE_IDidentity_plugin role_id

请注意,MinIO 在生成 RoleArn 时会自动为已配置的 ROLE_ID 添加前缀 idmp-。 如有需要,请在 ROLE_ID 中包含该字符串。

DurationSeconds

integer

可选

指定临时凭证在多少秒后过期。 默认值为 3600

  • 最小值为 900,即 15 分钟。

  • 最大值为 604800,即 7 天。

响应元素

MinIO 返回一个 AssumeRoleWithCustomTokenResult 对象,其中 AssumedRoleUser.Credentials 对象包含 MinIO 生成的临时凭证:

  • AccessKeyId - 应用程序用于认证的访问密钥。
  • SecretKeyId - 应用程序用于认证的 Secret Key。
  • Expiration - 凭证过期的 RFC3339 日期和时间。
  • SessionToken - 应用程序用于认证的会话令牌。某些 SDK 在使用临时凭证时可能要求此字段。

以下示例与 MinIO STS AssumeRoleWithCustomToken 端点返回的响应类似:

<?xml version="1.0" encoding="UTF-8"?>
<AssumeRoleWithCustomTokenResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/">
<AssumeRoleWithCustomTokenResult>
   <Credentials>
      <AccessKeyId>ACCESS_KEY</AccessKeyId>
      <SecretAccessKey>SECRET_KEY</SecretAccessKey>
      <Expiration>YYYY-MM-DDTHH:MM:SSZ</Expiration>
      <SessionToken>TOKEN</SessionToken>
   </Credentials>
   <AssumedUser>custom:Alice</AssumedUser>
</AssumeRoleWithCustomTokenResult>
<ResponseMetadata>
   <RequestId>UNIQUE_ID</RequestId>
</ResponseMetadata>
</AssumeRoleWithCustomTokenResponse>

错误元素

此 API 端点的 XML 错误响应与 AWS AssumeRoleWithWebIdentity response 类似。

2 - AssumeRoleWithLDAPIdentity

MinIO Security Token Service (STS) AssumeRoleWithLDAPIdentity API 端点使用 Active Directory 或 LDAP 用户凭据生成临时访问凭据。本文档介绍 MinIO 服务端 AssumeRoleWithLDAPIdentity 端点。有关如何使用兼容 S3 的 SDK 实现 STS,请参考对应 SDK 的文档。

MinIO STS AssumeRoleWithLDAPIdentity API 端点以 AWS AssumeRoleWithWebIdentity 端点为模型,并共享部分请求/响应元素。本文档介绍 MinIO 特有的语法,并为 所有共享元素提供指向 AWS 参考文档的链接。

请求端点

AssumeRoleWithLDAPIdentity 端点格式如下:

POST https://minio.example.net?Action=AssumeRoleWithLDAPIdentity[&ARGS]

以下示例使用了所有受支持参数。请将 minio.example.net 主机名替换为你的 MinIO 集群对应的 URL:

POST https://minio.example.net?Action=AssumeRoleWithLDAPIdentity
&LDAPUsername=USERNAME
&LDAPPassword=PASSWORD
&Version=2011-06-15
&Policy={}

请求查询参数

该端点支持以下查询参数:

参数

类型

说明

LDAPUsername

string

必需

指定要进行认证的 AD/LDAP 用户名。

LDAPPassword

string

必需

指定 LDAPUsername 对应的密码。

Version

string

必需

指定 2011-06-15

DurationSeconds

integer

可选

指定临时凭据在多少秒后过期。默认值为 3600

  • 最小值为 900(15 分钟)。

  • 最大值为 604800(7 天)。

如果省略 DurationSeconds,MinIO 在使用默认时长前会先检查 JWT token 中是否包含 exp claim。有关 JSON web token 过期时间的更多信息,请参见 RFC 7519 4.1.4: Expiration Time Claim

Policy

string

可选

指定 URL 编码的 JSON 格式 policy,作为内联会话策略使用。

  • 最小字符串长度为 1

  • 最大字符串长度为 2048

临时凭据的最终权限是以下两者的交集:与 LDAPUsername 的 Distinguished Name (DN) 匹配的 policy,以及指定的内联策略。 应用只能执行其被明确授权的操作。

内联策略可以指定 DN 策略允许权限的子集。应用可获取的权限绝不会超过 DN 策略中定义的权限。

省略该参数则仅使用 DN 策略。

有关 MinIO 认证与授权的更多信息,请参见 Access Management

响应元素

此 API 端点的 XML 响应与 AWS 的 AssumeRoleWithLDAPIdentity response. 类似。具体而言,MinIO 返回 AssumeRoleWithLDAPIdentityResult 对象,其中 AssumedRoleUser.Credentials 对象包含 MinIO 生成的临时凭据:

  • AccessKeyId - 应用用于认证的访问密钥。
  • SecretKeyId - 应用用于认证的密钥。
  • Expiration - 凭据过期时间,采用 RFC3339 日期时间格式。
  • SessionToken - 应用用于认证的会话令牌。某些 SDK 在使用临时凭据时可能需要此字段。

以下示例与 MinIO STS AssumeRoleWithLDAPIdentity 端点返回的响应类似:

<?xml version="1.0" encoding="UTF-8"?>
<AssumeRoleWithLDAPIdentityResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/">
<AssumeRoleWithLDAPIdentityResult>
   <AssumedRoleUser>
      <Arn/>
      <AssumeRoleId/>
   </AssumedRoleUser>
   <Credentials>
      <AccessKeyId>Y4RJU1RNFGK48LGO9I2S</AccessKeyId>
      <SecretAccessKey>sYLRKS1Z7hSjluf6gEbb9066hnx315wHTiACPAjg</SecretAccessKey>
      <Expiration>2019-08-08T20:26:12Z</Expiration>
      <SessionToken>eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhY2Nlc3NLZXkiOiJZNFJKVTFSTkZHSzQ4TEdPOUkyUyIsImF1ZCI6IlBvRWdYUDZ1Vk80NUlzRU5SbmdEWGo1QXU1WWEiLCJhenAiOiJQb0VnWFA2dVZPNDVJc0VOUm5nRFhqNUF1NVlhIiwiZXhwIjoxNTQxODExMDcxLCJpYXQiOjE1NDE4MDc0NzEsImlzcyI6Imh0dHBzOi8vbG9jYWxob3N0Ojk0NDMvb2F1dGgyL3Rva2VuIiwianRpIjoiYTBiMjc2MjktZWUxYS00M2JmLTg3MzktZjMzNzRhNGNkYmMwIn0.ewHqKVFTaP-j_kgZrcOEKroNUjk10GEp8bqQjxBbYVovV0nHO985VnRESFbcT6XMDDKHZiWqN2vi_ETX_u3Q-w</SessionToken>
   </Credentials>
</AssumeRoleWithLDAPIdentityResult>
<ResponseMetadata/>
</AssumeRoleWithLDAPIdentityResponse>

错误元素

此 API 端点的 XML 错误响应与 AWS 的 AssumeRoleWithLDAPIdentity response.

3 - AssumeRoleWithWebIdentity

MinIO Security Token Service (STS) AssumeRoleWithWebIdentity API 端点使用由 已配置的 OpenID Identity Provider (IDP) 返回的 JSON Web Token (JWT) 生成临时访问凭证。本文档说明 MinIO 服务器的 AssumeRoleWithWebIdentity 端点。关于如何使用 S3 兼容 SDK 实现 STS,请参阅对应 SDK 的文档。

MinIO STS AssumeRoleWithWebIdentity API 端点参考了 AWS AssumeRoleWithWebIdentity 端点,并共享部分请求/响应元素。本文档说明 MinIO 特有语法,并链接到 AWS 参考文档以获取 所有共享元素的说明。

请求端点

AssumeRoleWithWebIdentity 端点格式如下:

POST https://minio.example.net?Action=AssumeRoleWithWebIdentity[&ARGS]

以下示例使用了所有受支持参数。请将 minio.example.net 主机名替换为你的 MinIO 集群对应 URL:

POST https://minio.example.net?Action=AssumeRoleWithWebIdentity
&WebIdentityToken=TOKEN
&Version=2011-06-15
&DurationSeconds=86000
&Policy={}

请求查询参数

该端点支持以下查询参数:

参数

类型

说明

WebIdentityToken

string

必填

指定由 已配置的 OpenID Identity Provider 返回的 JSON Web Token (JWT)。

Version

string

必填

指定 2011-06-15

DurationSeconds

integer

可选

指定临时凭证过期前的秒数。 默认为 3600

  • 最小值为 900,即 15 分钟。

  • 最大值为 604800,即 7 天。

如果省略 DurationSeconds,MinIO 在使用默认时长前会先检查 JWT token 中的 exp claim。有关 JSON Web Token 过期时间的更多信息,请参见 RFC 7519 4.1.4: Expiration Time Claim

Policy

string

可选

指定 URL 编码、JSON 格式的 policy, 作为内联会话策略使用。

  • 最小字符串长度为 1

  • 最大字符串长度为 2048

临时凭证的最终权限是 JWT claim 中指定策略与所给内联策略的交集。应用只能执行那些已被显式授权的操作。

内联策略可以指定 JWT claim 策略所允许权限的子集。 应用绝不会获得超出 JWT claim 策略所指定范围的权限。

省略该参数则仅使用 JWT claim 策略。

有关 MinIO 认证与授权的更多信息,请参见 Access Management

RoleArn

string

可选

用于所有用户认证请求的角色 Amazon Resource Number (ARN)。 如果使用该参数,必须通过 role_policy 配置参数或 MINIO_IDENTITY_OPENID_ROLE_POLICY 环境变量, 为 RoleArn 对应的 provider 定义匹配的 OIDC RolePolicy。

使用时,所有有效的授权请求都会假定同一组由 RolePolicy 提供的权限。 你可以使用 OpenID Policy Variables 创建策略, 以编程方式管理每个用户可访问的内容。

如果未提供 RoleArn,MinIO 会尝试通过基于 JWT 的 claim 进行授权。

响应元素

该 API 端点的 XML 响应与 AWS AssumeRoleWithWebIdentity response 类似。具体而言,MinIO 返回 AssumeRoleWithWebIdentityResult 对象, 其中 AssumedRoleUser.Credentials 对象包含 MinIO 生成的临时 凭证:

  • AccessKeyId - 应用用于认证的访问密钥。
  • SecretKeyId - 应用用于认证的 Secret Key。
  • Expiration - 凭证过期的 RFC3339 日期和时间。
  • SessionToken - 应用用于认证的会话 token。某些 SDK 在使用临时凭证时可能需要此字段。

以下示例与 MinIO STS AssumeRoleWithWebIdentity 端点返回的响应类似:

<?xml version="1.0" encoding="UTF-8"?>
<AssumeRoleWithWebIdentityResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/">
<AssumeRoleWithWebIdentityResult>
   <AssumedRoleUser>
      <Arn/>
      <AssumeRoleId/>
   </AssumedRoleUser>
   <Credentials>
      <AccessKeyId>Y4RJU1RNFGK48LGO9I2S</AccessKeyId>
      <SecretAccessKey>sYLRKS1Z7hSjluf6gEbb9066hnx315wHTiACPAjg</SecretAccessKey>
      <Expiration>2019-08-08T20:26:12Z</Expiration>
      <SessionToken>eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhY2Nlc3NLZXkiOiJZNFJKVTFSTkZHSzQ4TEdPOUkyUyIsImF1ZCI6IlBvRWdYUDZ1Vk80NUlzRU5SbmdEWGo1QXU1WWEiLCJhenAiOiJQb0VnWFA2dVZPNDVJc0VOUm5nRFhqNUF1NVlhIiwiZXhwIjoxNTQxODExMDcxLCJpYXQiOjE1NDE4MDc0NzEsImlzcyI6Imh0dHBzOi8vbG9jYWxob3N0Ojk0NDMvb2F1dGgyL3Rva2VuIiwianRpIjoiYTBiMjc2MjktZWUxYS00M2JmLTg3MzktZjMzNzRhNGNkYmMwIn0.ewHqKVFTaP-j_kgZrcOEKroNUjk10GEp8bqQjxBbYVovV0nHO985VnRESFbcT6XMDDKHZiWqN2vi_ETX_u3Q-w</SessionToken>
   </Credentials>
</AssumeRoleWithWebIdentityResult>
<ResponseMetadata/>
</AssumeRoleWithWebIdentityResponse>

错误元素

该 API 端点的 XML 错误响应与 AWS AssumeRoleWithWebIdentity response 类似。