iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >使用Docker容器的安全技巧有哪些
  • 132
分享到

使用Docker容器的安全技巧有哪些

2023-06-17 11:06:27 132人浏览 安东尼
摘要

这篇文章将为大家详细讲解有关使用Docker容器的安全技巧有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。首先,让我们看看限制容器的访问权限。访问管理-限制权限启动容器时,Docker将创建一组命名空

这篇文章将为大家详细讲解有关使用Docker容器安全技巧有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

首先,让我们看看限制容器的访问权限。

访问管理-限制权限

启动容器时,Docker将创建一组命名空间。 命名空间可防止容器中的进程看到或影响主机(包括其他容器)中的进程。  命名空间是Docker封一个容器与另一个容器的主要方式。

Docker也提供私有容器网络。 这样可以防止容器获得对同一主机上其他容器的网络接口的特权访问。

因此,Docker环境在某种程度上是孤立的,但对于您的用例而言,它可能不够孤立。

使用Docker容器的安全技巧有哪些

> Does not look safe

良好的安全性意味着遵循最小特权原则。 您的容器应具有执行所需功能的能力,但没有其他能力。  棘手的事情是,一旦您开始限制可以在容器中运行的进程,则容器可能无法执行其合法需要执行的操作。

有几种方法可以调整容器的权限。 首先,避免以root身份运行(如果必须以root身份运行,则应重新映射)。  其次,使用–cap-drop和–cap-add调整功能。

多数人需要做的是避免root和调整功能,以限制特权。 更高级的用户可能想要调整默认的AppArmor和seccomp配置文件。  我将在即将出版的有关Docker的书中讨论这些内容,但此处已将它们排除在外,以防止本文如期膨胀。

避免以root身份运行

Docker的默认设置是使映像中的用户以root用户身份运行。 许多人没有意识到这是多么危险。 这意味着攻击者更容易访问敏感信息和您的内核。

一般最佳做法是,不要让容器以root用户身份运行。

使用Docker容器的安全技巧有哪些

> Roots

"防止来自容器内部特权升级攻击的最佳方法是将容器的应用程序配置为以非特权用户身份运行。" — Docker文档。

您可以在构建时指定root以外的用户名,如下所示:

docker run -u 1000 my_image

-user或-u标志可以指定用户名或用户ID。 如果userid不存在,那就很好。

在上面的示例中,1000是任意的非特权用户标识。 在linux中,通常保留0到499之间的用户ID。  选择一个超过500的用户ID,以避免以默认系统用户身份运行。

最好从镜像的root用户更改用户,而不是从命令行设置用户。 这样,人们就不必记住在构建时进行更改。  仅在需要root附带功能的Dockerfile指令之后,在映像中包括USER Dockerfile指令。

换句话说,首先安装所需的软件包,然后切换用户。 例如:

FROM alpine:latest RUN apk update && apk add --no-cache git USER 1000 …

如果必须以超级用户身份在容器中运行进程,请将该超级用户重新映射到Docker主机上的特权较低的用户。 请参阅Docker文档。

您可以通过更改功能来授予用户所需的特权。

能力

功能是允许的流程包。

使用–cap-drop和–cap-add通过命令行调整功能。 最好的策略是使用–cap-drop  all删除容器的所有特权,并使用–cap-add重新添加所需的特权。

使用Docker容器的安全技巧有哪些

> Stop or Go

您可以在运行时调整容器的功能。 例如,要放弃使用kill来停止容器的功能,可以删除该默认功能,如下所示:

docker run --cap-drop=Kill my_image

避免为进程赋予SYS_ADMIN和SETUID特权,因为它们具有广泛的权力。  向用户添加此功能类似于授予root权限(避免这种结果是不使用root的全部目的)。

禁止容器使用1到1023之间的端口号是更安全的做法,因为大多数网络服务都在此范围内运行。  未经授权的用户可以侦听诸如登录之类的内容并运行未经授权的服务器应用程序。  这些编号较低的端口需要以root用户身份运行或被明确赋予CAP_NET_BIND_SERVICE功能。

要查找诸如容器是否具有特权端口访问权限之类的信息,可以使用inspect。 使用docker container inspect  my_container_name将为您显示有关容器分配的资源和安全配置文件的许多详细信息。

这是Docker参考,更多关于特权的信息。

与Docker中的大多数事情一样,最好在自动的自文档文件中配置容器。 使用Docker Compose,您可以在服务配置中指定功能,如下所示:

cap_drop: ALL

或者,您可以按照此处的讨论在kubernetes文件中对其进行调整。

Linux功能的完整列表在这里。

如果要对容器特权进行更细粒度的控制,请在我即将出版的书中查看我对AppArmor和seccomp的讨论。  订阅我的电子邮件通讯,以便在可用时得到通知。

使用Docker容器的安全技巧有哪些

> Closed road

访问管理-限制资源

最好限制容器对内存和CPU等系统资源的访问。 没有资源限制,容器可以用尽所有可用内存。  如果发生这种情况,Linux主机内核将抛出"内存不足"异常并杀死内核进程。 这可能会导致整个系统崩溃。  您可以想象攻击者如何利用这些知识来尝试关闭应用程序。

如果您在同一台计算机上运行多个容器,则可以明智地限制任何一个容器可以使用的内存和CPU。 如果您的容器内存不足,则会关闭。  关闭容器可能会导致应用崩溃,这很不好玩。 但是,这种隔离可以防止主机内存不足,并且可以防止主机上的所有容器崩溃。 那是一件好事。

使用Docker容器的安全技巧有哪些

> Wind resource

适用于Mac v2.1.0的Docker Desktop CE具有默认资源限制。 您可以在Docker图标->首选项下访问它们。  然后单击"资源"选项卡。 您可以使用滑块来调整资源限制。

使用Docker容器的安全技巧有哪些

> Resource settings on Mac

另外,您可以通过指定–memory标志或-m的缩写来限制命令行中的资源,后跟一个数字和一个度量单位。

4m表示4兆字节,是最小的容器内存分配。 兆字节(MiB)略大于兆字节(1 MiB = 1.048576 MB)。  该文档目前不正确,但希望维护人员在您阅读本文时已接受我的PR进行更改。

要查看您的容器正在使用哪些资源,请在新的终端窗口中输入命令docker stats。 您会看到定期刷新运行中的容器统计信息。

使用Docker容器的安全技巧有哪些

> Stats

在后台,Docker正在使用Linux控制组(cgroup)来实现资源限制。 该技术已经过实战测试

在此处了解有关Docker上资源限制的更多信息。

镜像安全

从Docker Hub抓取镜像就像邀请某人进入您的家一样。 您可能想要对此有所了解。

使用Docker容器的安全技巧有哪些

> Someone's home

使用值得信赖的镜像

镜像安全的规则之一是仅使用您信任的镜像。 您如何知道哪些镜像是可信赖的?

可以肯定,流行的官方镜像相对安全。 此类镜像包括alpine,ubuntupythongolangredis,busybox和node。  每个都有超过1000万的下载量,并且很多人关注它们。

Docker解释:

Docker赞助了一个专门的团队,负责审查和发布正式映像中的所有内容。  该团队与上游软件维护者,安全专家以及更广泛的Docker社区合作,以确保这些映像的安全性。

减少攻击面

与使用正式基础镜像有关,您可以使用最小基础镜像。

由于内部代码较少,因此安全漏洞的可能性较小。 较小,较不复杂的基本图像更加透明。

与您的朋友的镜像(依赖于朋友的镜像,该镜像依赖于另一基本镜像)相比,查看Alpine镜像中发生的事情要容易得多。 短线更容易解开。

使用Docker容器的安全技巧有哪些

> Tangled

同样,仅安装您实际需要的软件包。 这样可以减少攻击面,并加快镜像下载和镜像构建速度。

需要签名的图像镜像

您可以使用Docker内容信任来确保对镜像进行签名。

Docker内容信任阻止用户使用带标签的镜像,除非它们包含签名。 可信来源包括来自Docker Hub的Official Docker  Images和来自用户可信来源的签名镜像。

使用Docker容器的安全技巧有哪些

> Signed

默认情况下禁用内容信任。 要启用它,请将DOCKER_CONTENT_TRUST环境变量设置为1。在命令行中,运行以下命令:

export DOCKER_CONTENT_TRUST=1

现在,当我尝试从Docker Hub下拉我自己的未签名映像时,它已被阻止。

Error: remote trust data does not exist for docker.io/discdiver/frames: notary.docker.io does not have trust data for docker.io/discdiver/frames

内容信任是防止riff窃的一种方法。 在此处了解有关内容信任的更多信息。

Docker通过其内容的加密校验和存储和访问图像。 这样可以防止攻击者创建图像冲突。 这是很酷的内置安全功能。

管理密码

您的访问受到限制,镜像安全,现在该管理您的密码了。"

管理敏感信息的规则1:请勿将其添加到您的镜像中。 在代码存储库,日志和其他地方找到未加密的敏感信息并不难。

规则2:也不要将环境变量用于敏感信息。 任何可以在容器中运行docker inspect或exec的人都可以找到您的密码。  以root身份运行的任何人都可以。 希望我们已经进行了一些配置,以便用户不会以root用户身份运行,但是冗余是良好安全性的一部分。  通常,日志也会转储环境变量值。 您不希望您的敏感信息只泄露给任何人。

Docker卷更好。 建议使用它们在Docker文档中访问您的敏感信息。 您可以将卷用作保存在内存中的临时文件系统。 卷消除了docker  inspect和日志记录风险。 但是,root用户仍然可以看到秘密,任何可以执行到容器中的人都可以看到秘密。 总体而言,卷是一个很好的解决方案。

比卷更好,请使用Docker Secret。 Secret已加密。

使用Docker容器的安全技巧有哪些

> Secrets

一些Docker文档指出您只能在Docker Swarm中使用机密。 不过,您可以在没有Swarm的情况下在Docker中使用机密。

如果您只需要映像中的秘密,则可以使用BuildKit。 BuildKit是比当前用于构建Docker映像的构建工具更好的后端。  它大大缩短了构建时间,并具有其他不错的功能,包括对构建时机密的支持。

BuildKit相对较新-Docker Engine 18.09是BuildKit支持附带的第一个版本。  有三种方法可以指定BuildKit后端,因此您可以立即使用其功能。 将来,它将是默认的后端。

  • 使用export DOCKER_BUILDKIT = 1将其设置为环境变量。

  • 使用DOCKER_BUILDKIT = 1启动构建或运行命令。

  • 默认情况下启用BuildKit。 使用以下命令将/etc/docker/daemon.JSON中的配置设置为true:{" features":{"  buildkit":true}}。 然后重启Docker。

然后,您可以在构建时使用–secret标志使用机密,如下所示:

docker build –secret my_key = my_value,src = path / to / my_secret_file。

文件将您的Secret指定为键值对的位置。

这些Secret不会存储在最终映像中。 它们也从映像构建缓存中排除。 安全第一!

如果您需要运行容器中的Secret,而不仅仅是在构建映像时,请使用Docker Compose或Kubernetes。

使用Docker Compose,将secrets键值对添加到服务中并指定secret文件。 改写以下示例的有关Docker  Compose秘密的Stack Exchange答案的技巧。

带有Secret的示例docker-compose.yml:

version: "3.7"services: my_service: image: Centos:7 entrypoint: "cat /run/secrets/my_secret" secrets: - my_secretsecrets: my_secret: file: ./my_secret_file.txt

然后像往常一样使用docker-compose up –build my_service启动Compose。

如果您使用的是Kubernetes,它支持秘密。 Helm-Secrets可以帮助简化K8中的秘密管理。 此外,K8和Docker  Enterprise一样,都具有基于角色的访问控制(RBAC)。 RBAC使团队的访问秘密管理更易于管理和更安全。

Secret的最佳做法是使用机密管理服务,例如Vault。 Vault是HashiCorp的一项服务,用于管理对机密的访问。  它还限制了时间的Secret。 您可以在此处找到有关Vault的Docker映像的更多信息。

AWS Secrets Manager和其他云提供商的类似产品也可以帮助您管理云中的机密。

使用Docker容器的安全技巧有哪些

> Keys

请记住,管理机密的关键是保持。 绝对不要将它们添加到您的镜像中或将它们变成环境变量。

更新

与任何代码一样,使镜像中的语言和库保持最新,以从最新的安全修复程序中受益。

使用Docker容器的安全技巧有哪些

> Hopefully your security is more up to date than this lock

如果您在镜像中引用基础镜像的特定版本,请确保也保持最新。

相关地,您应该使Docker版本保持最新,以进行错误修复和增强,以允许您实施新的安全功能。

最后,保持主机服务器软件为最新。 如果您使用的是托管服务,则应该为您完成此操作。

更好的安全性意味着保持更新。

考虑Docker Enterprise

如果您的组织拥有一堆人和一堆Docker容器,那么您可以从Docker Enterprise中受益。 管理员可以为所有用户设置策略限制。  所提供的RBAC,监视和日志记录功能可能会使您的团队更轻松地进行安全管理。

借助Enterprise,您还可以在Docker Trusted ReGIStry中私有地托管自己的映像。  Docker提供了内置的安全扫描功能,以确保您的映像中没有已知的漏洞。

Kubernetes免费提供了其中一些功能,但是Docker Enterprise对容器和映像具有附加的安全功能。 最好的是,Docker  Enterprise 3.0于2019年7月发布。它包括具有"明智的安全默认设置"的Docker Kubernetes服务。

其他提示

  • 永远不要以特权方式运行容器,除非您有特殊需要,例如需要在Docker容器中运行Docker,而且您知道自己在做什么。

  • 在Dockerfile中,建议使用COPY而不是ADD。 ADD会自动提取压缩文件,并可以从URL复制文件。 COPY没有这些功能。  尽可能避免使用ADD,这样您就不会受到来自远程URL和Zip文件的攻击。

  • 如果您在同一服务器上运行任何其他进程,请在Docker容器中运行它们。

  • 如果您使用网络服务器和api创建容器,请仔细检查参数,以免创建您不想要的新容器。

  • 如果公开REST API,请使用httpsssh保护API端点。

  • 考虑使用Docker Bench for Security进行检查,以了解您的容器遵循其安全准则的程度。

  • 仅将敏感数据存储在卷中,而不能存储在容器中。

  • 如果将单主机应用程序与网络一起使用,请不要使用默认的桥接网络。 它具有技术缺陷,不建议用于生产。  如果发布端口,则可以访问桥接网络上的所有容器。

  • 将Lets Encrypt用于HttpS证书进行服务。 在此处查看有关Nginx的示例。

  • 仅在需要读取卷时,才将卷挂载为只读。 请参阅此处的几种方法。

摘要

您已经了解了许多使Docker容器更安全的方法。 安全不是一成不变的。 它需要保持警惕,以确保镜像和容器的安全。

使用Docker容器的安全技巧有哪些

> Keys

考虑安全性时,请记住AIM:

(1) 访问管理

  • 避免以超级用户身份运行。 如果必须使用root,则重新映射。

  • 删除所有功能,然后重新添加所需的功能。

  • 如果您需要细粒度的权限调整,请进入AppArmor。

  • 限制资源。

(2) 镜像安全

  • 使用官方的,流行的,最小的基本镜像。

  • 不要安装不需要的东西。

  • 要求对镜像进行签名。

  • 保持Docker,Docker映像和其他与Docker相关的软件的更新。

(3) 机密Secret管理

  • 使用Secret或卷。

  • 考虑一个机密管理器,例如vault。

使用Docker容器的安全技巧有哪些

> Bullseye!

保持Docker容器安全意味着实现安全的目标。

不要忘了让Docker,您的语言和库,您的图像以及您的主机软件保持更新。 最后,如果您作为团队的一部分运行Docker,请考虑使用Docker  Enterprise。

关于“使用Docker容器的安全技巧有哪些”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: 使用Docker容器的安全技巧有哪些

本文链接: https://www.lsjlt.com/news/288625.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 使用Docker容器的安全技巧有哪些
    这篇文章将为大家详细讲解有关使用Docker容器的安全技巧有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。首先,让我们看看限制容器的访问权限。访问管理-限制权限启动容器时,Docker将创建一组命名空...
    99+
    2023-06-17
  • 优化Docker镜像安全性的技巧有哪些
    这篇文章主要为大家展示了“优化Docker镜像安全性的技巧有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“优化Docker镜像安全性的技巧有哪些”这篇文章吧。1前言当你是刚开始使用 Dock...
    99+
    2023-06-29
  • 保护Docker容器安全的方法有哪些
    这篇文章主要讲解了“保护Docker容器安全的方法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“保护Docker容器安全的方法有哪些”吧!应用程序的容器化涉及将应用程序代码及其依赖项(...
    99+
    2023-06-17
  • React容器的技巧有哪些
    这篇文章主要讲解了“React容器的技巧有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“React容器的技巧有哪些”吧!React 带键的片段有时,需要...
    99+
    2022-10-19
  • centos服务器的安全技巧有哪些你
    centos服务器的安全技巧有哪些你,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。有一些常识是每个系统管理员都应该烂熟于心的,所以下面的几点在本文将不会提及:务必保证系统是 最...
    99+
    2023-06-05
  • 维护服务器安全的技巧有哪些
    维护服务器安全的技巧有:1、及时更新服务器系统并打上安全补丁,避免出现系统漏洞被攻击;2、需要做好服务器管理员账号密码保护措施,避免被黑客轻易破解利用;3、需要给服务器安装和设置防火墙,提高防御能力;4、定期对服务器进行数据备份操作,避免数...
    99+
    2022-10-22
  • 服务器安全维护的技巧有哪些
    服务器安全维护的技巧有:1、定期对服务器上的数据进行备份,且将备份数据放置在不同服务器上;2、定期对网络的代码进行检查,看是否被黑客放置了网页木马和ASP木马等;3、定期维护服务器硬件,注意增加服务器内存或硬盘时,要考虑服务器的兼容性和稳定...
    99+
    2022-10-02
  • 服务器安全防御的技巧有哪些
    服务器安全防御的技巧有:1、定期检查并修复系统和程序的漏洞,避免漏洞被黑客利用攻击;2、对重要端口进行设置,如3389、21、80等...
    99+
    2023-02-08
    服务器安全防御 服务器
  • Linux服务器安全小技巧有哪些
    这篇文章主要介绍了Linux服务器安全小技巧有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1. 物理系统的安全性配置BIOS,禁用从CD/DVD、外部设备、软驱启动。下...
    99+
    2023-06-13
  • PHP安全编码的技巧有哪些
    这篇文章主要介绍了PHP安全编码的技巧有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇PHP安全编码的技巧有哪些文章都会有所收获,下面我们一起来看看吧。PHP 安全编码总结笔记SQL注入: 代码中的 HTT...
    99+
    2023-07-05
  • VPS服务器提升安全的技巧有哪些
    VPS服务器提升安全的技巧有:1、需要定期给VPS服务器更换密码,避免被黑客轻易破解利用;2、需要给VPS服务器配置防火墙,提高服务器防御能力;3、需要做好VPS服务器数据备份操作,防止数据丢失无法恢复;4、不要使用VPS服务器运行未知来源...
    99+
    2022-10-15
  • 确保云服务器安全的技巧有哪些
    确保云服务器安全的技巧有:1、确保云服务器供应商遵守相关的安全标准,以保护客户的数据和系统;2、审核云服务器供应商的服务是否合理;3、明确自身与云服务器供应商的角色;4、对服务器内部数据进行全面保护,可以使用SSL加密;5、创建公共云服务器...
    99+
    2022-10-12
  • 云服务器安全防护技巧有哪些
    云服务器安全防护技巧有:1、及时安装系统补丁,避免漏洞被蓄意攻击利用;2、安装防火墙,并根据自身的网络环境设置防火墙;3、安装杀毒软件,并定期或及时升级杀毒软件;4、关闭不需要的服务和端口,如Telnet等;5、定期对服务器数据进行备份,以...
    99+
    2022-10-09
  • 有哪些确保云服务器安全的小技巧?
    云服务器早已被大多数企业主们认可,是因为云服务器可以给他们企业的发展带来更大广泛的优势。可以提供无与伦比的灵活性,提升投资收益率。在节约人力财力的同时,可以使IT团队专注于更多的关键业务项目。但云服务器也会存有安全隐患,由于公共服务器是部署...
    99+
    2023-06-04
  • 使用CSS兼容IE8的小技巧有哪些
    本篇文章为大家展示了使用CSS兼容IE8的小技巧有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。使CSS兼容IE8的小技巧IE8Beta1已出,其中我们能看到很...
    99+
    2022-10-19
  • docker优化性能的技巧有哪些
    以下是一些优化Docker性能的技巧: 使用多阶段构建:多阶段构建可以减小镜像的大小,从而提高构建和部署的性能。 使用合适的...
    99+
    2023-10-25
    docker
  • 维护香港服务器安全技巧有哪些
    维护香港服务器安全技巧有:1、及时更新服务器系统补丁;2、对服务器管理员账号密码进行保护;3、在香港服务器上安装配置防火墙;4、监测香港服务器的系统日志;5、定期对香港服务器数据进行备份;6、安装网络杀毒软件排查服务器病毒;7、关闭香港服务...
    99+
    2022-10-11
  • linux下高级SSH安全技巧有哪些
    本篇文章给大家分享的是有关linux下高级SSH安全技巧有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。SSH服务器配置文件是/etc/ssh/sshd_conf。在你对它...
    99+
    2023-06-13
  • 国外的云服务器有哪些安全防护技巧
    国外云服务器的安全防护技巧有:1、及时安装系统补丁,避免漏洞被蓄意攻击利用;2、安装防火墙,并根据自身的网络环境设置防火墙;3、安装杀毒软件,并定期或及时升级杀毒软件;4、关闭不需要的服务和端口,如Telnet等;5、定期对云服务器数据进行...
    99+
    2022-10-06
  • docker容器内安装TensorRT的问题有哪些
    这篇文章将为大家详细讲解有关docker容器内安装TensorRT的问题有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Ubuntu上卸载已安装的版本:   sudo&n...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作