【问题标题】:Decrypting Spring property values In Docker在 Docker 中解密 Spring 属性值
【发布时间】:2017-03-11 22:42:22
【问题描述】:

Docker 1.12.1

Spring-Boot 1.3.2

我正在“dockerizing”我的 spring-boot 应用程序,它在 .yml 文件中有敏感数据。我不想将此内容以纯文本形式存储。但是当应用程序在 Docker 中启动时,它需要能够访问值的解密(纯文本)版本,以便这些值可以在应用程序中与 @Value 一起使用。

我从 spring cloud 中找到了这个 link,但它并不清楚我将如何以本地方式进行加密/解密,更不用说在引入 docker 时它是如何工作的了。

我的问题是这样的

  1. 我将如何加密敏感文本,使其在 Docker 中运行时能够被解密。
  2. 我将如何解密文本,以便在 docker 中启动应用程序时使用解密的值,甚至在本地启动应用程序时使用解密的值?

【问题讨论】:

  • 你目前是如何解密的?为什么这个过程不能在容器内发生?
  • 因为这个挑战,我的团队实际上并没有在本地运行应用程序。但是在 dev、qa 和 prod 中,我们使用 spring 云服务器来解密。当将值返回给应用程序时,Spring Cloud 会即时解密。我想知道我是否也应该对 Spring Cloud 实例进行 docker 化
  • 强烈反对将 Docker 投入生产(请随时阅读)。无论如何,我无法在 Spring 方面指导你,只是除了“因为我们可以”之外,没有真正看到容器化任何东西的用例
  • @cricket_007 docker 根本不会在 prod 中使用。用例是为了简单起见,将十几个微服务放在一起并在一个环境中运行,可以说是一起测试它们。这些服务由多个不同的公司构建。因此,如果所有东西都被 docker 化,您可以在任何地方根据需要启动这些应用程序。在我的案例中,我只发现 docker 在测试场景中很有用,而不是说这可能是其他有效用例的唯一方法。
  • 在没有 docker 的情况下运行时,加密文件存储在哪里?在 git 中?

标签: java spring docker spring-boot


【解决方案1】:
  1. jasypt-spring-boot-starter 加密您的内容
  2. 对于加密密钥,请使用 Maven 属性,例如 @secret.key@
  3. 从命令行构建 spring 时使用 -Dsecret.key=xxx 传递 secret.key,然后构建 docker 映像
  4. 确保必要的人可以访问您的容器以查看 secret.key。保护您的 secret.key。

【讨论】:

    猜你喜欢
    • 2019-09-23
    • 1970-01-01
    • 1970-01-01
    • 2015-12-29
    • 1970-01-01
    • 2011-04-15
    • 2011-11-07
    • 2020-06-11
    • 2021-02-12
    相关资源
    最近更新 更多