中文文档

MinIO 外部访问管理插件

概述

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

一旦启用,MinIO 会将每个 API 调用的请求和凭据细节发送到配置的外部 HTTP(S) 端点,并查找 允许拒绝 的响应。 因此,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 trueresult : { allow : true } :

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

请求正文示例

以下 JSON 类似于作为 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 } }
Join Slack 商业支持购买咨询