vault Secrets Operator(VSO)是一个开源解决方案,它允许Kubernetes集群中的Pods直接从HashiCorp Vault安全地获取并使用秘密信息。VSO通过观察自定义资源定义(CRD)的变化,能够实时同步Vault中的秘密到Kubernetes Secrets中,从而确保应用程序在无需直接访问Vault的情况下也能安全地使用这些数据
VSO的主要特点包括全面支持Vault秘密引擎、安全通信(支持TLS/mTLS与Vault之间的通信)、利用Pod的ServiceAccount进行身份验证、自动同步与刷新秘密、秘密轮换功能,以及内置的Prometheus监控集成
使用VSO时,可以通过创建和配置CRDs来同步Vault和Kubernetes Secrets。例如,VaultStaticSecret
CRD用于同步Vault中的静态秘密,而VaultDynamicSecret
CRD用于同步动态秘密,如数据库凭据或云服务账户
VSO支持从Vault的多个实例同步秘密,并且支持所有Vault秘密引擎。此外,VSO还支持跨Vault命名空间的身份验证,这对于使用Vault企业版1.13+的用户特别有用
为了开始使用VSO,你可以使用Helm或Kustomize进行部署,并创建相应的CRD实例来配置秘密的同步。VSO还提供了示例和文档,帮助用户快速上手并了解端到端的工作流程
总的来说,Vault Secrets Operator提供了一种强大且灵活的方式来管理Kubernetes集群中的秘密,同时利用Vault的安全特性和灵活性
Vault Secrets Operator 在 Kubernetes 集群中如何实现秘密的自动同步和刷新?
-
安装 VSO:首先,使用 Helm chart 在 Kubernetes 集群中安装 VSO。这可以通过以下命令完成:
helm install vault-secrets-operator hashicorp/vault-secrets-operator --create-namespace --namespace vault-secrets-operator --version 0.1.0
-
配置 Vault 连接和认证:创建
VaultConnection
和VaultAuth
CRDs,提供连接到 Vault 服务器的配置信息和认证配置apiVersion: secrets.hashicorp.com/v1beta1 kind: VaultConnection metadata: namespace: vso-example name: vault-connection spec: address: vault.vault.svc.cluster.local:8200
-
创建同步资源:根据需要同步的 secrets 类型,创建相应的 CRDs,例如
VaultStaticSecret
、VaultDynamicSecret
或VaultPKISecret
,这些 CRDs 指定了如何从 Vault 中同步 secrets 到 Kubernetes SecretsapiVersion: secrets.hashicorp.com/v1beta1 kind: VaultStaticSecret metadata: namespace: vso-example name: vault-static-secret spec: vaultAuthRef: vault-auth mount: secret path: myapp/config destination: name: myapp-secret create: true
-
自动同步:VSO 通过观察其支持的 CRDs 的变化来同步 Vault 中的秘密到 Kubernetes Secrets。这意味着任何在 Vault 中的秘密更改都会自动复制到目标 Kubernetes Secret 中
-
自动刷新:对于
VaultStaticSecret
类型的 secrets,VSO 支持通过 Vault 事件即时更新 Kubernetes Secrets。这可以通过订阅 Vault 事件来实现,尽管设置刷新间隔(例如refreshAfter
)仍然是推荐的,因为事件消息的传递并不是保证的 -
秘密轮换:VSO 支持自动秘密轮换,适用于
Deployment
、ReplicaSet
和StatefulSet
等 Kubernetes 资源类型。这确保了 secrets 定期更新,提高了安全性 -
监控集成:VSO 内置了 Prometheus 指标,方便系统监控
通过这种方式,VSO 可以作为一个 Kubernetes Operator 来自动化 secrets 管理任务,减少服务管理负担,并提供安全的 secrets 管理解决方案