文件

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 回應,其中包含 result true"result" : { "allow" : true } 的 JSON 主體

如果存取管理員拒絕授權請求,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 } }