我想知道 Docker 机密的安全级别,因为它们被认为是安全的。当我向服务授予对机密的访问权限时,如预期的那样,我可以看到临时文件系统安装在/var/lib/docker/containers/<container ID>/mounts/secrets
托管服务任务的节点上的容器路径 ( ) 上。但是,我能够捕获此路径内的文件并查看秘密的内容。
那时我想知道,是什么让秘密比配置更安全。据我所知,它们存储在 RAM 磁盘中这一事实是它们与配置之间的主要区别。配置和机密都在 raft 内部加密,唯一的区别是配置在安装到容器时存储在磁盘上的文件中,而不是驻留在 RAM 磁盘上的机密。但如果我能看到秘密的内容,真的会有什么不同吗?
答案1
很遗憾,有安全感这不是一个容易的术语。我更愿意谈谈风险评估和风险接受。一切都是为了回答问题,你有多偏执;您声称哪种解决方案是安全的。
根据文档,我们有:
当您向 swarm 添加机密时,Docker 会通过双向 TLS 连接将该机密发送到 swarm 管理器。该秘密存储在 Raft 日志中,并且是加密的。整个 Raft 日志在其他管理器之间复制,确保机密与集群管理数据的其余部分具有相同的高可用性保证。
秘密可用性。每个集装箱短暂性。您永远不知道容器在哪个节点上启动并运行,并且您不应该太关心它。也就是说,这个秘密应该在容器运行的任何地方都可用。
记忆中的秘密。有一篇关于在记忆中保守秘密的文章,这里问题是...如果你不信任你的系统和它的内存管理,那么你将面临更大的问题,而不仅仅是内存中保存的密码。
不同之处。
说,你可以实现几乎同样的事情,通过让你的秘密文件加密开放式SSL,解密并将未加密的内容放入内存中。所有这些都需要您手动完成。