設定 MinIO 使用 OpenID 進行驗證
概述
MinIO 支援使用與 OpenID Connect (OIDC) 相容的身分提供者 (IDP),例如 Okta、KeyCloak、Dex、Google 或 Facebook,進行外部使用者身分管理。本頁的程序提供以下說明:
設定 MinIO 租戶以使用外部 OIDC 提供者。
使用 OIDC 憑證存取租戶主控台。
使用 MinIO
AssumeRoleWithWebIdentity
安全性權杖服務 (STS) API,為應用程式產生臨時憑證。
此程序適用於與 OIDC 相容的提供者。請參閱您選擇的 OIDC 提供者文件,以取得有關驗證和 JWT 擷取的特定說明或程序。
先決條件
MinIO Kubernetes Operator
確保您的目標 Kubernetes 叢集已正確安裝並運作 MinIO Kubernetes Operator。本文件假設使用最新的穩定 Operator 版本 6.0.4。
OpenID-Connect (OIDC) 相容的身分提供者
此程序假設存在現有的 OIDC 提供者,例如 Okta、KeyCloak、Dex、Google 或 Facebook。設定這些服務的說明不在本程序的範圍內。
對於與 MinIO Tenant 位於相同 Kubernetes 集群內的 OIDC 服務,您可以使用 Kubernetes 服務名稱,讓 MinIO Tenant 建立與 OIDC 服務的連線。
對於 Kubernetes 集群外部的 OIDC 服務,您必須確保集群支援 Kubernetes 服務和 Pod 與外部網路之間的路由通訊。這可能需要額外設定或部署 Kubernetes 網路組件,以及/或啟用對公共網際網路的存取。
請確保每個要與 MinIO 一起使用的使用者身分都已配置適當的宣告 (claim),以便 MinIO 可以將原則 (policy)與已驗證的使用者關聯。沒有分配原則的 OpenID 使用者,對 MinIO 集群上的任何操作或資源都沒有存取權限。
MinIO Tenant
此程序假設您的 Kubernetes 集群擁有足夠的資源來部署新的 MinIO Tenant。
您也可以使用此程序作為指南,修改現有的 MinIO Tenant 以啟用 OIDC 身分管理。
部署具有 OpenID Connect 身分管理的 MinIO Tenant
1) 存取 Operator 主控台
暫時轉發本機和 MinIO Operator 主控台之間的流量,並檢索您的 Operator 部署的 JWT 權杖。有關說明,請參閱設定對 Operator 主控台服務的存取。
在您的瀏覽器中開啟臨時 URL,並在登入頁面中輸入 JWT 權杖。您應該會看到Tenants頁面。

點擊+ Create Tenant開始建立 MinIO Tenant。
如果要修改現有的 Tenant,請從清單中選擇該 Tenant。以下步驟將參考現有 Tenant 的必要章節和設定。
2) 完成身分提供者章節
若要使用 OIDC 啟用外部身分管理,請選擇身分提供者章節。然後您可以將單選按鈕變更為OIDC以顯示設定。

星號 *
表示必填欄位。下表提供了這些欄位的一般指南
欄位 |
描述 |
---|---|
設定網址 |
OpenID |
客戶端 ID
密鑰 ID
|
MinIO 在驗證 OIDC 使用者憑證時針對 OIDC 服務使用的客戶端 ID 和密鑰 ID。 |
宣告名稱 |
MinIO 用於識別要附加到已驗證使用者的原則的 OIDC 宣告。 |
完成此章節後,您可以完成Tenant 部署的任何其他必要章節。
3) 將原則分配給 OIDC 使用者
MinIO 預設不會將任何原則分配給 OIDC 使用者。 MinIO 使用指定的使用者宣告來識別一個或多個要附加到已驗證使用者的原則。如果宣告為空或指定了部署中不存在的原則,則已驗證的使用者對 Tenant 沒有任何權限。
以下範例假設已為 MinIO Tenant 設定現有的別名 (alias)。
請考慮以下範例原則,該原則僅授予對 data
儲存貯體的一般 S3 API 存取權限
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::data",
"arn:aws:s3:::data/*"
]
}
]
}
使用mc admin policy create
命令來建立 OIDC 使用者使用的原則
mc admin policy create minio-tenant datareadonly /path/to/datareadonly.json
MinIO 會將 datareadonly
原則附加到任何在設定的宣告中包含 datareadonly
的已驗證 OIDC 使用者。
有關使用 OIDC 使用者和群組進行存取控制的詳細資訊,請參閱OpenID Connect 存取管理。
4) 使用 MinIO Tenant 主控台使用 OIDC 憑證登入
MinIO 主控台支援驗證 OIDC 提供者的完整工作流程,使用 MinIO AssumeRoleWithLDAPIdentity 安全性權杖服務 (STS) 端點產生臨時憑證,並將使用者登入 MinIO 部署。
有關存取 Tenant 主控台的其他資訊,請參閱部署 MinIO Tenant:連線到 Tenant。
如果 OIDC 設定成功,主控台會顯示一個按鈕,讓您可以使用 OIDC 憑證登入。
輸入使用者的 OIDC 憑證並登入以存取主控台。
登入後,您可以執行已驗證使用者授權的任何操作。
您也可以建立存取金鑰,以支援必須在 MinIO 上執行操作的應用程式。存取金鑰是繼承其父使用者權限的長期憑證。父使用者可以在建立存取金鑰時進一步限制這些權限。
5) 使用 OIDC 憑證產生與 S3 相容的臨時憑證
應用程式可以使用AssumeRoleWithWebIdentity 安全性權杖服務 (STS) API 端點,以及 OIDC 提供者傳回的 JSON Web 權杖 (JWT),根據需要產生臨時存取憑證。
應用程式必須提供一個工作流程,以登入 OIDC 提供者並檢索與驗證會話相關聯的 JSON Web 權杖 (JWT)。有關成功驗證後如何取得和剖析 JWT 權杖,請參考提供者文件。 MinIO 提供了一個 Go 應用程式範例 web-identity.go,其中包含管理此工作流程的範例。
應用程式檢索到 JWT 權杖後,使用 AssumeRoleWithWebIdentity
端點產生臨時憑證
POST https://minio.example.net?Action=AssumeRoleWithWebIdentity
&WebIdentityToken=TOKEN
&Version=2011-06-15
&DurationSeconds=86400
&Policy=Policy
將
minio.example.net
替換為 MinIO Tenant 服務的主機名稱或 URL。將
TOKEN
替換為上一步傳回的 JWT 權杖。將
DurationSeconds
替換為臨時憑證到期前的秒數。上面的範例指定了86400
秒或 24 小時的期限。將
Policy
替換為內嵌的 URL 編碼 JSON 原則,該原則會進一步限制與臨時憑證相關聯的權限。略過以使用與 OpenID 使用者原則宣告相關聯的原則。
API 回應包含一個 XML 文件,其中包含存取金鑰、密鑰、會話權杖和到期日。應用程式可以使用存取金鑰和密鑰來存取 MinIO 並執行操作。
有關參考文件,請參閱AssumeRoleWithWebIdentity。