AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 924431
Accepted
user8472
user8472
Asked: 2018-08-02 04:20:00 +0800 CST2018-08-02 04:20:00 +0800 CST 2018-08-02 04:20:00 +0800 CST

CI/CD 环境中的凭证管理

  • 772

设置:我有一个当前在服务器上手动部署的应用程序。它需要几个凭据(外部服务、令牌和 AES 密钥和 IV 等的客户端机密),我目前已将这些凭据存储在使用gpg. 每当我重新启动应用程序时,我gpg都会在控制台中解锁 -key,然后服务将从应用程序脚本中再次解密文件(gpg-agent将密码短语保留在内存中一段有限的时间)并通过管道解析它们。

这种方法的优点是gpg访问它们所需的凭据和-passphrase 都不会持久保存到磁盘,而只保存在内存中。因此,即使具有完全的 root 访问权限,也无法恢复凭据。gpg唯一的机会是在-key 保持解锁的短时间内获得访问权限。

缺点是(a)没有其他用户可以启动服务(除非我们共享我的帐户)和(b)应用程序不能通过任何自动方式启动。

github上有一个creds项目,和我正在做的类似,但仍然存在上述缺点。可以使用多个gpg密钥对文件进行加密,然后尝试使用所有密钥对其进行解密,直到一个成功。

问题:有什么更好的方法来处理以下凭据:(a) 多个用户无需共享密钥或帐户即可访问,(b) 可由 CI/CD 系统访问(每次部署时我都没有控制台), (c) 只将密码数据保存在内存中?具有多个键的“解决方法”gpg看起来像一个复杂的 hack,并且不适用于 CI/CD 系统。

credentials
  • 1 1 个回答
  • 1376 Views

1 个回答

  • Voted
  1. Best Answer
    fuero
    2018-08-04T06:56:13+08:002018-08-04T06:56:13+08:00

    我将讨论机密而不是凭据,因为您可能还想保护其他敏感信息。您的问题是否专门针对 CI/CD 系统并不重要,无论我们是在谈论使用 X.509 证书进行身份验证、保存数据库凭据还是保护构建代理的访问令牌,问题都是一样的。

    没有规范的方法来处理这个问题,因为应用程序和组织的需求在什么构成秘密以及如何处理它们方面存在差异。某些应用程序可能只提供文件存储秘密的其他方式。

    一些应用程序在磁盘上加密机密,但由于它们通常必须是对称的,这或多或少是装饰性的。

    所以,你可以做什么?

    • 您的第一道防线是您的操作系统的 DAC(自主访问控制)和 MAC(强制访问控制)——如果我们谈论的是 Linux,POSIX 权限是 DAC,而 LSM(如 App Armor、SELinux 或 GRSecurity)是 MAC。

    • 根据CIS或DISA STIG等适当标准审核您的操作系统。

    • 想到使用HSM或OpenPGP 智能卡来存储用于加密磁盘上的机密的 PGP 密钥。像这样的设备保证密钥永远不会离开硬件。

    请记住,没有单一的措施可以保证 HSM 中的密钥安全 - 物理访问仍然会危及它们。硬件密钥存储设备必须与物理安全性和适当的操作程序相结合,以加强其安全性。

    检查主要浏览器的根 CA 策略(Chrome、Firefox、Edge/IE)。他们强制使用硬件加密设备以及如何操作它们以及您必须通过哪些审核的一些限制和规则。

    • 使用Vault之类的软件按需获取秘密,但这需要应用程序支持。否则,您只是将其再次存储在磁盘上。不过,Vault 可以添加到组合中的是一个可执行的 TTL 用于秘密以及自行轮换它们的能力。
    • 3

相关问题

  • 难倒:从 Win2003 访问 Win2008 -- 域与否

  • 我们如何绕过始终需要凭据的托管交换服务器的“安全功能”?

  • SQL 代理作业:使用具有不同凭据的映射驱动器

  • 客户应用程序、公司系统和第三方应用程序的凭证管理/存储?

  • 以其他用户身份运行“共享文件夹”(fsmgmt.msc)

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve