如何在客户端位置使用Docker保护持久用户数据

56次阅读
没有评论

问题描述

正在开发一个系统,其中一个基于Docker的应用程序必须在客户端机器上(Ubuntu PC)运行,并且有一些需要在运行之间保持的敏感数据,希望限制对这些数据的访问。在原型开发中,用户将数据存储在主机文件系统中,并使用绑定挂载将该文件夹映射到应用程序容器中。
用户希望避免这样的情况:任何可以访问机器的人都可以复制一些用户数据,甚至查看数据。
在用户的情况下,这似乎是一个不同的用例,用户数据/ Docker卷被安全地隐藏在服务器机房和云实例的(防火墙)之间,因此用户无法找到如何限制对用户数据的访问的好方法,即使有物理访问权限。
用户对DevOps和部署系统非常陌生,因此希望得到解决此问题的任何见解!

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

如果您担心主机上的数据被破坏,那么我认为真正保护数据的唯一方法是在数据休息时对其进行加密。无论您是在数据库中还是在平面文件中进行加密,都是无关紧要的,数据都需要加密。如果机器属于客户端,您可能在机器本身上的操作空间有限,但是您应该尽量将其锁定。
以下是在您的情况下的一个好解决方案:
1. 使用加密算法对敏感数据进行加密。您可以选择使用对称加密或非对称加密,具体取决于您的需求。
2. 将加密后的数据存储在主机文件系统中。
3. 在应用程序容器中使用绑定挂载将加密后的数据文件夹映射到适当的位置。
4. 在应用程序中使用密钥来解密数据。
请注意,这种方法并不能完全阻止具有本地访问权限的人读取机器上的数据。但是,它可以确保即使数据被复制,也无法解密和查看数据。

方案2

使用Vault可以帮助您更好地保护敏感数据,并提供更多的安全功能。
您可以使用Hashicorp Vault来更好地保护敏感数据。Vault是一个用于安全访问和存储机密数据的工具。它可以帮助您管理和保护敏感数据,如密码、API密钥和其他机密信息。
以下是使用Vault的一般步骤:
1. 安装和配置Vault服务器。
2. 创建一个Vault密钥存储。
3. 将敏感数据存储在Vault中。
4. 在应用程序容器中使用Vault客户端来访问和解密数据。
使用Vault可以提供更高级别的安全性,例如访问控制、审计日志和自动密钥轮换等功能。您可以参考Vault的官方文档以获取更多详细信息和使用示例。
请注意,Vault并不是一个简单的密码保险箱,它提供了更多的安全功能和灵活性,以帮助您更好地保护敏感数据。

正文完