文件

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