設定 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 租戶位於同一 Kubernetes 叢集內的 OIDC 服務,您可以使用 Kubernetes 服務名稱,以允許 MinIO 租戶建立與 OIDC 服務的連線。
對於 Kubernetes 叢集外部的 OIDC 服務,您必須確保叢集支援 Kubernetes 服務和 Pod 與外部網路之間的路由通訊。這可能需要配置或部署額外的 Kubernetes 網路元件,以及/或啟用對公共網際網路的存取。
請確保每個預期用於 MinIO 的使用者身分都已配置適當的 聲明 (claim),以便 MinIO 可以將 策略 (policy) 與已驗證的使用者關聯。沒有指定策略的 OpenID 使用者,無權存取 MinIO 叢集上的任何動作或資源。
MinIO 租戶 (Tenant)
此程序假設您的 Kubernetes 叢集有足夠的資源來部署新的 MinIO 租戶。
您也可以將此程序作為修改現有 MinIO 租戶以啟用 OIDC 身分管理功能的指南。
部署具備 OpenID Connect 身分管理的 MinIO 租戶
1) 存取 Operator 控制台
暫時轉送本機主機和 MinIO Operator 控制台之間的流量,並檢索您的 Operator 部署的 JWT 令牌。有關說明,請參閱 設定存取 Operator 控制台服務。
在您的瀏覽器中開啟臨時 URL,並在登入頁面中輸入 JWT 令牌。您應該會看到租戶 (Tenants)頁面

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

星號 *
標記為必填欄位。下表提供這些欄位的一般指南
欄位 |
描述 |
---|---|
配置 URL |
OpenID |
客戶端 ID (Client ID)
密鑰 ID (Secret ID)
|
MinIO 在針對 OIDC 服務驗證 OIDC 使用者憑證時使用的客戶端 ID 和密鑰 ID。 |
聲明名稱 (Claim Name) |
MinIO 用於識別要附加到已驗證使用者的策略的 OIDC 聲明。 |
完成該區段後,您可以完成租戶部署的其他任何必要區段。
3) 將策略指派給 OIDC 使用者
MinIO 預設不會將任何策略指派給 OIDC 使用者。MinIO 使用指定的使用者聲明來識別要附加到已驗證使用者的一個或多個策略。如果聲明為空或指定部署中不存在的策略,則已驗證的使用者在租戶上沒有任何權限。
以下範例假設已為 MinIO 租戶設定現有的別名 (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 租戶控制台以 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。