我已经获得了Redhat OpenShift在线启动程序vps,用于托管我的不和谐机器人。我已经将它上传到了github,减去了我的不和谐标记和其他API密钥,当然:^)
我如何让OpenShift使用存储和读取客户端机密? 如果有帮助,我正在使用nodejs8框架。
答案 0 :(得分:1)
秘密在诸如GitHub之类的源代码版本控制托管服务中没有位置。
关于OpenShift,它包含Secrets,这是一种编码64位配置映射,您可以在其中注入机密信息。
但是,应该将长期的机密信息存储(以OpenShift机密注入)应该存储在适当的保险柜中。
例如,如文章“ Hashicorp Vault”所述的Managing Secrets on OpenShift – Vault Integration
其余部分描述了该解决方案,但是即使您不使用该特定主机,总体思路(外部保管库类型的存储)仍然存在:
- Init Container(在启动pod的主容器之前运行)通过加密连接从Vault控制器请求wrapped token。
包装的凭证使您可以传递凭证,而无需任何中间人来实际查看凭证。- 保险柜控制器从Kubernetes API服务器检索吊舱详细信息。
- 如果吊舱存在并且包含vaultproject.io/policies批注,则Vault控制器将调用Vault并生成一个唯一的包装令牌,该令牌可以访问批注中提到的Vault策略。此步骤要求信任Pod作者以习惯正确的策略。生成的令牌具有可配置的TTL。
- Vault Controller使用从Kubernetes API通过加密连接获得的Pod IP来“回调”初始化容器,并将新创建的包装令牌传递给它。请注意,Vault Controller不信任容器,它仅信任主API。
- Init容器会解开令牌以获取允许访问凭据的保险柜令牌。
- 将Vault令牌写入两个容器(emptyDir)之间共享的卷中的一个知名位置,并且Init容器出口。
- 主容器从令牌文件中读取令牌。现在,主容器可以使用令牌检索令牌创建时考虑的策略允许的所有机密。
- 如果需要,主容器会更新令牌以防止令牌过期。