你在构建Docker镜像吗?这里是如何避免将敏感信息泄漏到Docker镜像中的


本技巧是您应采用的完整10 Docker图像安全最佳实践的一部分。感谢阅读和与我一起工作的Omer Levi Hevroni。

有时,在Docker镜像中构建应用程序时,您需要秘密,例如SSH私钥,以从私有存储库中提取代码,或者您需要令牌来安装私有软件包。

如果将它们复制到Docker中间容器中,它们将缓存在添加它们的层上,即使您稍后将其删除。这些代币和钥匙必须保持在外面 Dockerfile

使用多阶段构建

通过利用Docker对多阶段构建的支持,获取并管理稍后处理的中间图像层中的秘密,以便不会有敏感数据到达图像构建。

使用代码将秘密添加到所述中间层,例如以下示例:

FROM:ubuntu作为中间WORKDIR / app COPY secret / key / tmp / RUN scp -i / tmp / key build @ acme / files。来自ubuntu WORKDIR / app COPY  - 来自middle / app。 

使用Docker秘密命令

使用Docker中的alpha功能来管理安装敏感文件的秘密而不缓存它们,类似于以下内容:

#syntax = docker / dockerfile:1.0-experimental FROM alpine#显示默认秘密位置的秘密RUN --mount = type = secret,id = mysecret cat / run / secrets / mysecre#显示自定义秘密位置的秘密RUN --mount = type = secret,id = mysecret,dst = / foobar cat / foobar 

小心递归副本

将文件复制到正在构建的图像时,您也应该注意。

例如,以下命令以递归方式将整个构建上下文文件夹复制到Docker映像,这也可能最终复制敏感文件:

复制。 。 

如果文件夹中包含敏感文件,请将其删除或使用 .dockerignore 忽略它们:

private.key appsettings.json 

原始博客文章包含高分辨率的可打印PDF,如下面所示的代码段。看看这个

资讯来源:由0x资讯编译自DEV,原文:https://dev.to/lirantal/are-you-building-docker-images-here-s-how-to-avoid-leaking-sensitive-information-into-docker-images-99g ,版权归作者所有,未经许可,不得转载
你可能还喜欢