文档

MinIO 外部访问管理插件

概述

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

启用后,MinIO 会将每个 API 调用的请求和凭据详细信息发送到配置的外部 HTTP(S) 端点,并查找 ALLOWDENY 的响应。因此,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. 配置的标识管理器对客户端进行身份验证

  3. MinIO 对配置的访问管理插件 URL 发出 POST 调用,其中包含 API 调用的上下文和身份验证数据

  4. 授权成功后,访问管理器将返回一个 200 OK 响应,其中包含一个 JSON 正文,内容为 result true"result" : { "allow" : true }

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

请求正文示例

以下 JSON 与发送到配置的访问管理器 webhook 的 POST 中的请求正文类似。

{
   "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 } }