【问题标题】:How to provide credentials to a service which is need to use an thirdparty service如何向需要使用第三方服务的服务提供凭据
【发布时间】:2021-06-07 10:53:01
【问题描述】:
我需要一些关于架构设计或最佳实践方法的建议。
我有一项服务需要一些第三方服务的凭据。
Webapp 使用的我的服务当前将此凭据以加密模式保存在数据库中。
WebApp 和 MyService 将通过 MessageQueue (RabbitMQ) 进行通信。
如何从网络应用程序向我的服务提供这些凭据。或者我应该完全改变设计以及如何改变?
提前致谢
韩语
帖木儿
【问题讨论】:
标签:
authentication
architecture
microservices
【解决方案1】:
这是一个复杂的领域,不同的人对如何做到这一点有不同的想法;您设计的问题在于,可以嗅探您的 Web 应用程序和您的服务之间的流量的攻击者可以访问您的密钥。
您的应用程序和服务之间也有紧密的耦合,以及在开发、质量保证和生产环境之间管理凭据的所有乐趣。
许多托管策略包括为此目的的“密钥管理服务器” - 例如,AWS 有 https://aws.amazon.com/kms/。我建议阅读他们的用例。
另一个流行的解决方案是将密钥存储在环境变量中,并将它们作为构建/部署管道的一部分进行管理。
最后,一些框架(例如 Ruby on Rails)将这些详细信息存储在凭据文件中,并具有用于在源代码控制流程之外管理它们的工作流。