MinIO 金鑰加密服務
本網站提供有關 MinIO 的金鑰加密服務 (KES) 專案的資訊。
文件包含
- 架構和設定指南
- 最佳實務
- 一般文件
為何選擇 KES
KES 是一個無狀態且分散式的金鑰管理系統,適用於高效能應用程式。KES 作為現代應用程式(在 Kubernetes 上以容器方式運行)與集中式金鑰管理服務 (KMS) 之間的橋樑。預設情況下,我們將 KES 設計為簡單、可擴展且安全。相較於其他服務,KES 的組態選項更為簡化,因此不需要深入了解安全金鑰管理或密碼學原理。
如果您是 KES 的新手,建議從以下頁面之一開始
KES 存取控制
KES 使用相互 TLS 驗證 (mTLS) 來執行向 KES 伺服器發出請求的客戶端的驗證和授權。
驗證
客戶端和伺服器都會將其 x.509 憑證和對應的私密金鑰呈現給對方。僅當客戶端憑證有效且真實時,伺服器才會接受連線。
-
「有效」憑證是指格式正確且為最新的憑證(即,未過期)。
使用 mTLS 進行驗證還需要客戶端和伺服器的下列 擴充金鑰用法 延伸模組。
- 客戶端驗證 (
extendedKeyUsage = clientAuth
) - 伺服器驗證 (
extendedKeyUsage = serverAuth
)
- 客戶端驗證 (
-
「真實」憑證是由受信任的憑證授權單位 (CA) 發行的。客戶端和伺服器 *必須* 在其本機系統信任存放區中包含對等憑證 CA。
您可以使用 kes server --auth
選項啟動 KES 伺服器,以在測試或早期開發期間使用不受信任或自行簽署的憑證執行 mTLS。
MinIO 強烈建議僅允許在生產環境中使用受信任的憑證。
授權
KES 使用基於原則的存取控制 (PBAC) 來決定指定客戶端具有執行哪些操作的權限。每個原則都包含一個或多個身分,其中每個身分都對應於 x.509 憑證的 SHA-256 雜湊值。僅當符合以下條件時,伺服器才允許客戶端執行請求的操作
- KES 伺服器上的原則包含客戶端身分。
- 該原則明確允許請求的操作。
如果 KES 伺服器上不存在此類原則,*或者* 如果該原則未明確允許請求的操作,則 KES 伺服器會拒絕客戶端的請求。
KES 原則
KES 使用基於原則的存取控制 (PBAC),其中原則描述已驗證的客戶端可以執行的操作。
以下 YAML
文件提供 KES 伺服器組態文件中 :kesconf:policy
區段的範例。 minio-sse
原則包含支援 MinIO 伺服器端加密的適當 :API 端點
policy:
minio-sse:
paths:
- /v1/key/create/*
- /v1/key/generate/*
- /v1/key/decrypt/*
- /v1/key/delete/*
identities:
- <SHA-256 HASH>
-
policy.policyname.paths
陣列中的每個元素都代表原則授予存取權的API 端點
。 -
policy.policyname.identities
陣列中的每個元素都代表客戶端呈現的 x.509 憑證的 SHA-256 雜湊值。使用
kes identity of
命令來計算客戶端 x.509 憑證的身分雜湊值。
原則和身分之間存在一對多關係,其中一個原則可以包含多個身分。*但是*,給定的身分一次最多只能與一個原則關聯。
KES 伺服器提供兩種設定原則的方法
-
KES 組態檔的
policy
區段列出了 KES 伺服器的持續性原則。 -
kes policy
命令支援為 KES 伺服器建立臨時原則。kes identity
命令支援臨時修改與 KES 伺服器上的原則相關聯的身分。使用
kes policy
或kes identity
建立或修改的原則會在重新啟動 KES 伺服器後消失。
每個 KES 伺服器都有自己的組態檔,它會從中衍生所有持續性原則。在分散式 KES 部署中,每個伺服器都根據其組態檔具有自己的獨立且不同的原則身分集。這可能會導致身分根據客戶端連線的 KES 伺服器關聯到不同的原則。
請謹慎允許 KES 伺服器包含不同的原則,因為這可能會導致伺服器之間不一致的客戶端加密行為。MinIO 強烈建議同步分散式 KES 部署中組態檔的變更。
指南
教學課程
支援的 KMS 目標
- AWS Secrets Manager
- Azure KeyVault
- Entrust KeyControl
- Fortanix SDKMS
- Google Cloud Secret Manager
- Hashicorp Vault
- 本機檔案系統
- Thales CipherTrust Manager(前身為 Gemalto KeySecure)