使用 OpenID 設定 MinIO 進行身份驗證
概觀
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 租戶位於同一 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 服務的存取權。
開啟您的瀏覽器到臨時網址,並在登入頁面輸入 JWT 權杖。您應該會看到租戶頁面

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

星號 *
表示必填欄位。下表提供這些欄位的一般指南
欄位 |
描述 |
---|---|
設定網址 |
OpenID |
客戶端 ID
密碼 ID
|
MinIO 在根據 OIDC 服務驗證 OIDC 使用者憑證時使用的客戶端和密碼 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。