首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为微服务创建公钥存储?

如何为微服务创建公钥存储?
EN

Stack Overflow用户
提问于 2017-03-05 11:49:54
回答 2查看 2K关注 0票数 4

我在码头环境中实现了一套微服务。这些服务中的每个都使用JWT令牌相互通信。当服务A调用服务B时

  1. 服务A,使用他的私钥签署令牌并传递给服务B
  2. 服务B从公钥存储获取ServiceA的公钥,并验证令牌。

公钥/私钥生成过程由微服务本身完成,然后将公钥传递给公钥存储。所以公钥商店唯一要做的事,

  1. 存储服务发送的公钥
  2. 应请求向服务发送正确的公钥

我要做的是类似于图中所示的内容。

上面的图片来自:https://www.youtube.com/watch?v=dBdZrw2pPvc&t=462s

因此,我的问题是,这类公开金钥商店是否有标准的实施?如果是这样的话,他们是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-05 15:01:15

如果安全不重要:

如果安全很重要:

老实说,还有很多选择,但这些都是DevOps社区最著名和最受审查的。

票数 4
EN

Stack Overflow用户

发布于 2017-03-10 20:38:54

披露:我是Conjur的首席技术官。

考虑一下工作流程:

  1. 一个A服务容器启动了。
  2. 它生成一个新的密钥对。
  3. 它向公钥存储区提交公钥。
  4. 公钥存储库接收公钥。
  5. 公钥商店将它接收到的公钥与身份"service-a“关联。
  6. 服务A向服务B签署请求。
  7. 服务B向密钥商店查询服务A的已知公钥。
  8. 密钥商店提供公钥。
  9. 服务B验证签名与其中一个密钥匹配。

公钥存储必须确保:

  • 以防篡改的方式储存公钥。
  • 以同样防篡改的方式将每个公钥与服务标识关联起来。
  • 为管理员提供一些操作密钥存储的方法(例如,死容器的deroll密钥)。
  • 保存所有发生的事情的审计记录。

但也有一些是相当困难的。在步骤(5)中,当密钥存储收到服务A的密钥时,它需要验证密钥实际上来自服务A,而不是来自冒名顶替者。换句话说,它必须对请求进行身份验证。

如何做到这一点取决于基础设施的细节。如果您使用的是原始Docker (而不是Kubernetes),则可以使用服务器上的代理将容器的IP地址与机器上的容器列表(docker ps)关联起来。这将告诉您容器的图像,容器应该告诉您服务的身份。

这个问题有很多微妙之处,每个容器环境的解决方案都有所不同。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42608033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档