【问题标题】:Encrypt the docker images and ship them to client加密 docker 镜像并将它们发送给客户端
【发布时间】:2023-01-31 14:48:35
【问题描述】:

我们有一个使用 mongo db 的 spring boot 应用程序。我们需要在客户拥有并安装在他们场所的机器上安装这个完整的应用程序。我们需要以一种无法从中提取任何内容的方式对应用程序进行加密。我们计划通过使用 docker 来做到这一点。截至目前,我们正计划创建一个 docker-compose 文件并将其提供给客户。我们将在我们这边创建图像并将它们推送到存储库。因为我们可以提取容器并从中获取数据,因此这种方法对我们不起作用。有没有办法在 docker 本身的帮助下完成工作,这样文件就不会被提取? 我们需要抽象的文件是我们的 jar 文件和数据库。

我们已经创建了一个 compose 文件,它将创建两个容器,一个用于 spring-boot 应用程序,另一个用于 mongo。 我们还尝试提取容器,我们很容易从中提取 jar 以及我们在脚本中提到并复制到 /docker-entrypoint-initdb.d/ 中的数据库凭据。 需要做一些事情,以便不会提取凭据和 jar 文件。

【问题讨论】:

    标签: mongodb spring-boot docker-compose dockerfile docker-registry


    【解决方案1】:

    为了保护您的 Spring Boot 应用程序及其数据,您可以考虑以下事项:

    使用嵌入到映像中的应用程序 jar 文件和数据库凭据构建 Docker 映像。

    使用数据库加密机制对静态数据进行加密,例如 MongoDB 中的透明数据加密。

    使用 Jasypt 等工具加密凭据和其他敏感信息,并将它们存储在环境变量中。

    使用多阶段 Docker 构建来构建应用程序 jar 并将其嵌入到 Docker 映像中,同时将构建工件和源代码与最终映像分开。

    考虑使用私有 Docker 注册表来存储图像,访问权限仅限于授权人员。

    为 Docker 注册表设置适当的身份验证和授权,并将对注册表的访问限制为仅需要的人员。

    使用网络分段和防火墙规则进一步限制对 Docker 容器的访问。

    通过执行这些步骤,您可以保护您的应用程序和数据,使攻击者难以从容器中提取敏感信息。

    【讨论】:

      猜你喜欢
      • 2017-11-14
      • 2018-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多