文档

MinIO 外部访问管理插件

概述

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

启用后,MinIO 会将请求和凭据详细信息发送到配置的外部 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 类似于作为 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 } }