问题
我们使用java文件,并将配置文件保存在s3桶中。我们的环境: DEV、QA、Stage和PROD各有自己的配置文件和s3桶。如果我添加一个新字段,如"Polling_RATE=5000",则必须手动将其添加到每个env中,因为这些配置文件还存储密码,因此它们不能绑定到应用程序或保存在中。并不是每个工程师都可以访问每个env,所以您必须记住在prod部署日期之前通知高级工程师(DEVOPS),以添加新字段以使应用程序工作。目前这是一个非常混乱的过程。
问题
是否有一种实用程序或架构设计模式来处理这个问题?如何在github中存储“版本控制”敏感配置字段?
发布于 2016-02-28 08:31:36
可识别的问题。
通常,具有敏感信息(如密码)的配置字段的更改频率要比非敏感配置字段少得多。一个可能的解决方案是将配置分成两部分:
一个替代S3的方法可以是运行一个私有的Git存储库(例如,AWS的CodecCommit )。您将有更好的版本控制和更容易的访问来执行更改,因为您已经在使用Git了。您仍然需要修复dev和or之间的分离访问权限,或者放弃它(因为DevOps是关于信任与合作的,这可能是个好主意)。您可以像我前面描述的那样,在这里应用类似的模式。
另一种解决方案可能是将敏感值的配置从属性文件移动到系统配置。当您已经使用了一个供应系统,如木偶或厨师,这将是自然的操作人员。或者将所有敏感值(如密码)设置为环境变量,并让应用程序将其作为系统属性读取。
希望这能有所帮助!
发布于 2016-02-29 02:20:39
我们一直在使用dynamodb来保存配置值。这种方法的优点是可以轻松地从控制台读取和验证这些值。另外一个优点是,我们定期检查dynamodb的值,因此如果需要更改任何值,我们只需更改它,应用程序就会自动选择新值,而不是重新启动它。敏感值是使用KMS密钥加密存储的,只有运行应用程序的ec2角色才有权使用该密钥解密。我们加强了Netflix档案项目,以满足我们的需要。也许你可以去看看。
https://stackoverflow.com/questions/35677943
复制相似问题