使用 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 服務。
在您的瀏覽器中開啟臨時 URL,並在登入頁面輸入 JWT 令牌。您應該會看到租戶頁面。

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

星號 *
標示必填欄位。下表提供這些欄位的一般指南
欄位 |
描述 |
---|---|
組態 URL |
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 小時的期間。使用 URL 編碼的 JSON 政策取代
Policy
,該政策會進一步限制與臨時憑證相關聯的權限。省略以使用與 OpenID 使用者 政策聲明相關聯的政策。
API 回應包含一個 XML 文件,其中包含存取金鑰、密碼金鑰、工作階段權杖和到期日。應用程式可以使用存取金鑰和密碼金鑰來存取 MinIO 並執行作業。
請參閱 AssumeRoleWithWebIdentity 以取得參考文件。