OpenID Connect 访问管理
MinIO 支持使用与 OpenID Connect (OIDC) 兼容的身份提供者 (IDP),例如 Okta、KeyCloak、Dex、Google 或 Facebook,用于外部管理用户身份。
对于由外部 OpenID Connect (OIDC) 兼容提供商管理的身份,MinIO 可以使用两种方法之一将策略分配给已认证的用户。
使用 JSON Web 令牌声明 作为 OIDC 身份验证流程的一部分返回,以标识要分配给已认证用户的 策略。
使用授权请求中指定的
RoleArn
来分配附加到提供商的 RolePolicy 的策略。
默认情况下,MinIO 拒绝访问用户分配的或继承的 策略 未明确允许的所有操作或资源。由 OIDC 提供商管理的用户必须在 JWT 声明中指定必要的策略。如果用户 JWT 声明没有匹配的 MinIO 策略,则该用户没有权限访问 MinIO 部署上的任何操作或资源。
MinIO 要查找的特定声明是作为 使用 OIDC 身份管理部署集群 的一部分配置的。此页面重点介绍创建与配置的 OIDC 声明匹配的 MinIO 策略。
创建与声明匹配的策略
使用 MinIO 控制台或 mc admin policy
命令创建与一个或多个声明值匹配的策略。
OIDC 策略变量
下表包含支持的策略变量列表,用于授权 OIDC 管理的用户。
每个变量对应于作为经过身份验证用户的 JWT 令牌的一部分返回的声明
变量 |
描述 |
---|---|
|
返回用户的 |
|
返回 ID 令牌中的发行者标识符声明。 |
|
返回 ID 令牌中的受众声明。 |
|
返回客户端身份验证信息中的 JWT ID 声明。 |
|
返回客户端身份验证信息中的用户主体名称声明。 |
|
返回用户的 |
|
返回用户的 |
|
返回用户的 |
|
返回用户的 |
|
返回用户的 |
|
返回用户的 |
|
返回用户的 |
|
返回用户的 |
|
返回用户的 |
|
返回用户的 |
|
返回用户的 |
|
返回用户的 |
|
返回用户的 |
|
返回用户的 |
|
返回用户的 |
|
返回用户的 |
|
返回用户的 |
有关这些范围的更多信息,请参阅 OpenID Connect Core 1.0 文档。您选择的 OIDC 提供者可能具有更具体的文档。
例如,以下策略使用变量在 Resource
字段中替换经过身份验证用户的 preferred_username
,以便用户只能访问与其用户名匹配的那些前缀
{
"Version": "2012-10-17",
"Statement": [
{
"Action": ["s3:ListBucket"],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::mybucket"],
"Condition": {"StringLike": {"s3:prefix": ["${jwt:preferred_username}/*"]}}
},
{
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::mybucket/${jwt:preferred_username}/*"]
}
]
}
MinIO 将 Resource
字段中的 ${jwt:preferred_username}
变量替换为 JWT 令牌中 preferred_username
的值。然后,MinIO 会评估策略并授予或撤销对请求的 API 和资源的访问权限。