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

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

星號 *
標記為必填欄位。下表提供了這些欄位的一般指導原則。
欄位 |
描述 |
---|---|
組態 URL |
OpenID |
客戶端 ID
密鑰 ID
|
當 MinIO 針對 OIDC 服務驗證 OIDC 使用者憑證時所使用的客戶端 ID 和密鑰 ID。 |
聲明名稱 |
MinIO 用於識別要附加到經過驗證的使用者的原則的 OIDC 聲明。 |
完成此部分後,您可以完成 租戶部署 的任何其他必要部分。
3) 將原則指派給 OIDC 使用者
MinIO 預設不會將任何原則指派給 OIDC 使用者。 MinIO 使用指定的使用者聲明來識別要附加到經過驗證的使用者的一個或多個原則。如果聲明為空或指定部署中不存在的原則,則經過驗證的使用者對租戶沒有任何權限。
以下範例假設已為 MinIO 租戶設定了現有的 別名。
考量以下範例原則,該原則僅授予對 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 租戶主控台以 OIDC 憑證登入
MinIO 主控台支援驗證 OIDC 提供者、使用 MinIO AssumeRoleWithLDAPIdentity 安全性權杖服務 (STS) 端點產生臨時憑證,以及將使用者登入 MinIO 部署的完整工作流程。
如需有關存取租戶主控台的更多資訊,請參閱部署 MinIO 租戶:連線至租戶。
如果 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 租戶服務的主機名稱或 URL。將
TOKEN
取代為在上一個步驟中傳回的 JWT 權杖。將
DurationSeconds
取代為臨時憑證過期前的持續時間(以秒為單位)。上面的範例指定了86400
秒或 24 小時的期間。將
Policy
取代為內嵌的 URL 編碼 JSON 原則,以進一步限制與臨時憑證相關聯的權限。省略以使用與 OpenID 使用者原則聲明相關聯的原則。
API 回應包含一個 XML 文件,其中包含存取金鑰、密鑰、工作階段權杖和到期日。應用程式可以使用存取金鑰和密鑰來存取 MinIO 並執行作業。
如需參考文件,請參閱AssumeRoleWithWebIdentity。