文档基于2025-10-10日社区最终版构建     
切换到英文版    进入演示系统    进入交流社区

MinIO Documentation

MinIO External Access Management Plugin

概述

MinIO 访问管理插件提供了一个REST通过 webhook 服务进行授权卸载的接口。

一旦启用,MinIO 会将每个 API 调用的请求和凭证详情发送到配置的外部 HTTP(S) 端点,并寻找以下响应:ALLOW or DENY因此,MinIO 可以将访问管理委托给外部系统,而不是依赖 S3。基于策略的访问控制.

配置设置

您可以通过以下环境变量或配置设置来配置 MinIO 外部访问管理插件。

指定以下内容环境变量部署中的每个 MinIO 服务器:

MINIO_POLICY_PLUGIN_URL="https://external-authz.example.net:8080/authz"

# All other envvars are optional
MINIO_POLICY_PLUGIN_AUTH_TOKEN="Bearer TOKEN"
MINIO_POLICY_PLUGIN_ENABLE_HTTP2="OFF"
MINIO_POLICY_PLUGIN_COMMENT="External Access Management using PROVIDER"

使用以下配置设置:mc admin config set命令:

mc admin config set policy_plugin \
   url="https://external-authz.example.net:8080/authz" \

   # All other config settings are optional
   auth_token="Bearer TOKEN" \
   enable_http2="off" \
   comment="External Access Management using PROVIDER"

认证与授权流程

应用程序的登录流程如下:

  1. 客户端在执行API调用时包含认证信息

  2. 配置的 Identity Manager 对客户端进行身份验证

  3. MinIO 使得POST调用配置的访问管理插件URL,该URL包含API调用的上下文和身份验证数据

  4. 成功授权后,访问管理器会返回一个200 OK返回一个JSON响应体,内容为以下两者之一:result true or "result" : { "allow" : true }:

如果访问管理器拒绝授权请求,MinIO 会自动阻止并拒绝该 API 调用。

请求体示例

以下 JSON 类似于作为 POST 请求的一部分发送到已配置的访问管理器 webhook 的请求体。

{
   "input": {
      "account": "minio",
      "groups": null,
      "action": "s3:ListBucket",
      "bucket": "test",
      "conditions": {
         "Authorization": [
         "AWS4-HMAC-SHA256 Credential=minio/20220507/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=62012db6c47d697620cf6c68f0f45f6e34894589a53ab1faf6dc94338468c78a"
         ],
         "CurrentTime": [ "2022-05-07T18:31:41Z" ],
         "Delimiter": [ "/" ],
         "EpochTime": [
         "1651948301"
         ],
         "Prefix": [ "" ],
         "Referer": [ "" ],
         "SecureTransport": [ "false" ],
         "SourceIp": [ "127.0.0.1" ],
         "User-Agent": [ "MinIO (linux; amd64) minio-go/v7.0.24 mc/DEVELOPMENT.2022-04-20T23-07-53Z" ],
         "UserAgent": [ "MinIO (linux; amd64) minio-go/v7.0.24 mc/DEVELOPMENT.2022-04-20T23-07-53Z" ],
         "X-Amz-Content-Sha256": [ "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" ],
         "X-Amz-Date": [ "20220507T183141Z" ],
         "authType": [ "REST-HEADER" ],
         "principaltype": [ "Account" ],
         "signatureversion": [ "AWS4-HMAC-SHA256" ],
         "userid": [ "minio" ],
         "username": [ "minio" ],
         "versionid": [ "" ]
      },
      "owner": true,
      "object": "",
      "claims": {},
      "denyOnly": false
   }
}

响应体示例

MinIO 要求来自访问管理服务的响应体满足以下两种格式之一:

{ "result" : true }

{ "result" : { "allow" : true } }