Java 在Docker中解密Spring属性值

Java 在Docker中解密Spring属性值,java,spring,docker,spring-boot,Java,Spring,Docker,Spring Boot,Docker 1.12.1 弹簧靴1.3.2 我正在“docking”我的spring boot应用程序,它在.yml文件中有敏感数据。我不想将此内容存储为纯文本。但当应用程序在Docker中启动时,它需要能够访问值的解密(纯文本)版本,以便这些值可以与应用程序中的@Value一起使用 我从SpringCloud中发现了这一点,但还不清楚如何以本地方式进行加密/解密,更不用说在引入docker时如何进行加密/解密了 我的问题是 我将如何对敏感文本进行加密,使其在Docker中运行时能够被解密 如

Docker 1.12.1

弹簧靴1.3.2

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

我从SpringCloud中发现了这一点,但还不清楚如何以本地方式进行加密/解密,更不用说在引入docker时如何进行加密/解密了

我的问题是

  • 我将如何对敏感文本进行加密,使其在Docker中运行时能够被解密
  • 如何解密文本,以便在docker中启动应用程序时使用解密值,或者甚至在本地启动应用程序时使用解密值
  • jasypt spring启动程序可加密您的内容
  • 对于加密密钥,请使用maven属性,如@secret.key@
  • 当您从命令行构建spring时,将secret.key与-Dsecret.key=xxx一起传递,然后构建docker映像
  • 确保必要的人员可以访问您的容器以查看secret.key。保护你的秘密
  • jasypt spring启动程序可加密您的内容
  • 对于加密密钥,请使用maven属性,如@secret.key@
  • 当您从命令行构建spring时,将secret.key与-Dsecret.key=xxx一起传递,然后构建docker映像
  • 确保必要的人员可以访问您的容器以查看secret.key。保护你的秘密

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