hashicorp-vault - 为现有的非容器化 Windows 应用程序使用 Vault 入门
问题描述
我们有一堆目前处理秘密的 Windows 服务器应用程序,如下所示;我们的应用程序使用 C#。
- 我们将它们存储在代码中的设置文件中
- 我们使用证书加密存储它们
- 服务器拥有带有私钥的证书,因此它们可以解密秘密
我们正在考虑实施 Hashicorp Vault。只需将加密存储解密替换为将密钥存储在 KV 引擎中的 Vault 中,然后在我们的应用程序中获取它,这似乎很容易——这完全消除了该证书。由于我们在本地,我需要弄清楚我们的身份验证方法。
我们有不同的应用程序在不同的机器上运行,并且它有点动态(不像自动缩放场景那样多,但不是永久的 - 所以我们不能一次将服务器分配给角色并依赖于 Kerberos 身份验证)。
我不确定如何让 AppRole 在我们的场景中工作。我们没有“受信任的平台”或“受信任的实体”示例,没有 Nomad、Chef、Terraform 等。我们在域中有 Windows 机器,并且我们有一个可以查询的本土编排器“这个机器名称运行这些应用程序”,所以也许可以在那里做一些事情?
我是否在“编写您自己的身份验证插件”领域,与我们本土的协调器交谈?
编辑 - Reddit 上的某个人建议,如果我们的应用程序都与它们运行的 Windows 域帐户是一对一的,那么这是一个简单的解决方案,因为这样我们就可以使用遏制身份验证。这不是我们目前的架构方式,但我们必须以某种方式解决这个问题,这可能会做得很好。
第二次编辑 - 用“应用程序”替换“服务”,因为我们的大多数服务实际上并没有作为 Windows 服务运行,只是进程。启动器是 Windows 服务,但它启动的各个进程不是。
解决方案
本质上,您创建了一个“可信平台”(针对您的密钥保管库服务)。当您想要检索机密时,您的服务仍然可以拥有自己的身份,但委托给 gMSA。
推荐阅读
- c# - Telerik AsyncUpload 中的 PDF 文件预览
- python - 通过 cmd 工作时,telnet 连接通过 telnetlib 超时
- android - 在根项目“Demo2”中找不到任务“继续”
- amazon-web-services - 如何通过命令行缩小/放大aws ecs集群中的容器,我应该使用aws cli还是ecs-cli?
- ios - 如何在 swift 中为信使应用程序实现“istyping”?
- facebook - 在 React Native 中使用 facebook 登录
- c# - 如何构建涉及大量地理位置计算的应用程序?
- python - Django:如何遍历两个一对二多表关系?
- java - 如何使用定制的 CardView 动态填充 ListView?
- laravel - Laravel Eloquent 按特定格式比较日期