文件

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 類似於作為 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 } }