[英]How to secure kubernetes secrets?
我試圖避免任何用戶都可以查看 kubernetes 秘密。 我試過密封的秘密,但這只是隱藏要存儲在版本控制中的秘密。 一旦我應用了那個秘密,我就可以使用下面的命令看到這個秘密。
kubectl get secret mysecret -o yaml
上面的命令仍然顯示 base64 編碼形式的秘密。
我如何避免有人使用上面的簡單命令看到秘密(即使是 base64 格式)。
您可以使用 Hashicrop Vault 或 kubernetes-external-secrets ( https://github.com/godaddy/kubernetes-external-secrets )。
或者,如果您只想限制,那么您應該創建一個只讀用戶並使用角色和角色綁定限制只讀用戶對秘密的訪問。
然后,如果有人試圖描述秘密,那么它將拋出訪問被拒絕的錯誤。
示例代碼:
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: test-secrets
namespace: default
rules:
- apiGroups:
- ""
resources:
- pods
verbs:
- get
- list
- watch
- create
- delete
- apiGroups:
- ""
resources:
- pods/exec
verbs:
- create
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: test-secrets
namespace: default
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: test-secrets
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: User
name: demo
上述角色無權訪問機密。 因此演示用戶訪問被拒絕。
使用 Kubernetes 內部工具無法實現這一點。 您將始終不得不依賴第三方工具。
Hashicorps Vault 是一種非常常用的解決方案,它非常強大並支持一些非常好的功能,比如動態秘密或信封加密。 但它在配置方面也可能變得非常復雜。 所以你需要自己決定你需要什么樣的解決方案。
我建議您使用Sealed-Secrets 。 它會加密您的秘密,您可以將加密的秘密安全地推送到您的存儲庫中。 它沒有這么大的功能列表,但它完全符合您的描述。
您可以通過 Init 容器將 Hashicrop Vault 機密注入 Kubernetes pod,並使用 sidecar 容器使它們保持最新。
更多細節在這里https://www.hashicorp.com/blog/injecting-vault-secrets-into-kubernetes-pods-via-a-sidecar/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.