与传统管理程序相比,Docker 提供了巨大的优势。但是,它的大部分组件都与主机内核共享。因此,如果不采取适当的安全措施,主机系统可能面临被入侵的风险,并让攻击者控制它。在本文中,我们将研究 Docker 中的一些最佳实践。
在技术驱动的世界,无论w ^ ^ h的措施你拿,安全性可以在任何级别突破,没有人能完全排除安全隐患。但是,我们可以通过遵循一些最佳流程来降低风险,以确保我们关闭了攻击者在 Docker 中访问我们主机的所有大门。
以只读方式安装卷
最佳实践之一是,如果容器没有保存数据,则将主机文件系统挂载为只读。我们可以通过简 单地用做ro
标志使用坐骑-v
参数或readonly
与--mount
争论。
docker run --mount source=volume-name,destination=<PATH_TO_CONTAINER>,readonly python:3.9
或者
docker run -v volume-name:<Path_to_container>:ro python:3.9;
限制资源使用
Docker 中最好的功能之一是可以灵活地为容器分配预定义的资源使用策略。这仅在群模式下受 支持。
我们可以通过在部署部分声明允许的使用来限制容器的 CPU 使用。这是官方文档中的示例。
version:"3.8"
services:
redis:
image:redis:alpine
deploy:
resources:
limits:
cpus:'0.50'
memory:50Mreservations
:
cpus:'0.25'memory
:20M
这样,我们将确保任何容器都不会使用超过阈值的主机资源,并且其他服务将在主机上运行而不会造成任何损害。
没有root权限
容器不应以根级访问权限运行。基于角色的访问控制系统将减少意外访问在同一命名空间中运行的其他进程的可能性。许多组织使用活动目录/SSO/角色来限制访问,并根据用户角色提供适当的访问。
通常,我们可以使用 Linux 的内置命令动态创建临时非 root 用户。
从 python:3.5
RUN groupadd -r myuser && useradd -r -g myuser myuser
<这里做你必须做的事情作为一个根用户,比如安装包等>
用户 myuser
或者在使用镜像运行容器时,
<span style="background-color:#f2f2f2"><span style="color:rgba(0, 0, 0, 0.8)"><span style="color:#292929">码头工人运行-u 1947 蟒蛇:3.9</span></span></span>
这将以非 root 用户身份运行容器。
可信图片来源
检查从 Docker Hub 拉取的每个镜像的真实性。使用 Docker Content Trust来检查镜像的真 实性。Docker Content Trust 是 Docker 1.8 中的一项新功能。默认情况下它是禁用的,但一旦启用,您就可以从 Docker Hub 注册表中验证所有 Docker 镜像的完整性、真实性和发布日期。
启用 Docker 内容信任export DOCKER_CONTENT_TRUST=1
并尝试拉取这个未签名的镜像docker pull <Not_trusted_image>
。
<span style="background-color:#f2f2f2"><span style="color:rgba(0, 0, 0, 0.8)"><span style="color:#292929"># docker pull <Not_trusted_image>
Using default tag: latest
错误:docker.io/<Not_trusted_image> 的远程信任数据不存在:notary.docker.io 没有 docker.io/jpetazzo/clock 的信任数据</span></span></span>
Docker 会检查镜像是否安全,如果不安全则会抛出错误。
以上是我在 Docker 世界中学习的摘录,请分享您的想法
七爪网七爪网-专注于分销商城,小程序定制,网站开发,定制开发,成品源码的源码交易平台