OpenID Connect 访问管理
MinIO 支持使用与 OpenID Connect (OIDC) 兼容的 IDentity Provider (IDP)(例如 Okta、KeyCloak、Dex、Google 或 Facebook)来外部管理用户身份。
对于由外部 OpenID Connect (OIDC) 兼容提供商管理的身份,MinIO 可以使用两种方法之一将策略分配给经过身份验证的用户。
使用 JSON Web Token 声明 在 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 提供程序可能具有更具体的文档。
例如,以下策略使用变量来替换经过身份验证的用户的 preferred_username
作为 Resource
字段的一部分,以便用户只能访问与其用户名匹配的那些前缀
{
"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 和资源的访问权限。