文件

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