我知道这是一个普遍的问题,但经过大量搜索后,我没有喜欢的解决方案。我正在为我的学生创建一个简单的面向服务的体系结构示例。我们正在使用数字海洋。将有三台独立的服务器,它们需要找出彼此的IP地址和各种秘密令牌(例如Twitter访问令牌)。我想说明一个想法,即不要将此类信息放入代码库中。
我的计划是在所有战略要地使用环境变量。但是,如何使这些环境变量“自动”和“可维护地”设置?
建议?
无论选择哪种方式,您都必须提供一种验证对机密访问权限的方法。
或者“我已经在白板上写了Twitter访问令牌”
或者“机密存储在服务中,这是您验证对它们的访问的方式”。
对于后者,私有的Git仓库不是最糟糕的解决方案。您可以向您的学生(帐户)提供对存储库的访问权限。他们将分两步:从GitHub存储库中获取令牌,将令牌应用于Digital Ocean资源。
[存在替代方案,包括HashiCorp的Vault参见tutorial。我最近也使用了Google的Secret Manager。这些是第三方服务,而不是Digital Ocean直接提供的功能。
[我怀疑在simplifying流程中也存在一个隐式问题,这将需要委托auth。可能有一种方法(尽管我不知道)将auth委托给Digital Ocean,以便您可以提供一种与特定Digital Ocean帐户相反的机制(类似于上述示例)。