我进行了多次搜索,以确保application.properties
中所有敏感数据的安全,最终决定使用HashiCorp的Spring Cloud Vault。
在我看来,我可以将所有的秘密等保存为这个机制中的键值对。然而,我不能确定和理解以下几点。你能帮我一下吗?
-
在保持Vault中所有敏感数据的同时,我认为我们需要在Spring Boot应用程序中提供一个令牌来访问这些数据。因此,对于生产环境,假设我将应用程序发送给客户,那么他们应该通过环境变量提供这个令牌吗?或者还有其他安全的选择吗?
-
应用程序如何使用保存在Vault中的秘密?它检索他们,只要它需要或检索在启动,然后保持它们在内存等,在服务器或Docker容器(基于配置)?
Vault令牌应该作为环境变量注入。如果你有一个像k8或OpenShift这样的平台,Vault令牌本身可以作为秘密存储。
Springboot在启动时从Vault加载秘密文件。
下面是我们的DeploymentConfig模板文件的一个片段:
kind: DeploymentConfig
spec:
strategy:
spec:
containers:
- name: {{ .Release.Name }}
env:
- name: VAULT_API
valueFrom:
secretKeyRef:
name: global-secrets
key: vaultapi
- name: VAULT_TOKEN
valueFrom:
secretKeyRef:
name: global-secrets
key: vaulttoken