【转载】详解Docker 最低特权编排原则,安全与效率并行!(一)

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: Docker 平台和容器已经逐渐成为打包、部署和管理应用程序的标准。为了让容器在集群中于多节点间协调运行,这就需要一个关键的功能:容器编排(container orchestrator)。小编将分两篇为大家详细讲解这一重要功能。

写在前面

Docker 平台和容器已经逐渐成为打包、部署和管理应用程序的标准。为了让容器在集群中于多节点间协调运行,这就需要一个关键的功能:容器编排(container orchestrator)。本主题将分两篇为大家详细讲解这一重要功能。下篇《详解Docker 最低特权编排原则,安全与效率并行!(二)》链接为:https://yq.aliyun.com/articles/228215

编排功能

image

编排功能(Orchestrators)负责关键的集群和调度任务,例如:

  • 管理容器调度和资源分配
  • 支持服务发现和无中断应用程序部署
  • 分发让应用程序运行所必需的资源

不幸的是,在这种环境中,编排的分布式特性与资源的短暂特性让安全的编排成为一项具有挑战性的任务。在这篇文章里,我将详细解读这个常常被人们所忽略的重要方面——编排的安全模型,我还会演示如何利用Docker 企业版(EE)内置的编排工具——Swarm 来如何克服上述困难。

活跃模型和威胁模型

在Docker 企业版(EE)中使用Swarm Mode的主要目的是为用户提供一个内置安全功能的编排。为了实现这一目标,我们开发了首款容器编排工具,它的设计理念就是要时刻保持占用最低特权原则,以提高主机整体的运行效率。

计算机科学中,每一个参与者都需要在分布式系统中遵循最低特权原则,它要求参与者仅可以访问符合其合法目的的必要信息和资源,不能多也不能少。

最低特权原则——一个进程只能访问符合其合法目的所必需的信息和资源。

Docker企业版(EE)中的Swarm 为每一个节点都分配了相应的角色(无论是管理人员还是工作人员)。这些角色分别为节点限定了其粗颗粒度的权限等级,即管理任务级别和执行任务级别。但是,不管它的角色是什么,节点都只能访问其执行必要任务所需的信息和资源,并且具有强制加密的访问保障机制。因此利用这种机制可以更加轻松的保护集群免遭黑客的致命攻击,如通过控制底层通信网络或者盗用集群节点的攻击方式。

默认安全核心

IT领域有一个安全准则,它规定:如果不是默认的,就没有人会使用它。 Docker Swarm Mode将这一理念带入产品中,并配有默认机制来解决编排生命周期中最困难和最重要的三个方面(本篇将介绍前两个方面):

  • 信任引导和节点介绍;
  • 节点身份签发和管理;
  • 对认证、授权、加密过的信息进行存储和分发;

下面,让我们分别来看这几个方面:

信任引导和节点介绍

安全集群的第一步是对成员资格和身份进行严格的控制。没有这一步,管理员就不能利用其节点管理者的身份,对节点之间的工作负载进行严格的分离。这意味着未经授权的节点将不能被允许加入集群,而已经成为集群中的节点则不允许更改其身份,从而杜绝了伪装成其它节点的可能。

为了满足这一需求,就需要通过Docker 企业版(EE)的Swarm Mode来管理节点以对其进行严格的控制并维持其固定的身份。所需的属性是通过使用两个关键的构建模块进行加密保护:

  1. 为集群成员提供安全连接令牌;
  2. 将唯一标识嵌入到由中央主机认证授权签发的证书中;

加入Swarm

要加入Swarm,节点就需要一个安全连接令牌。令牌对集群中每个操作角色都是唯一的——目前有两种类型的节点:工作人员节点和管理员节点。由于这种分离,具有工作人员身份的节点将不允许作为管理人员加入集群。获取特殊令牌的唯一方法就是让集群管理员通过Swarm管理的API界面进行交互式地申请。

令牌是安全、随机生成的,它同时还具有一种特殊的语法,使得管理员更容易检测到泄漏的令牌:利用一个特殊的前缀,您就可以的轻松的监控日志和存储库中的泄漏问题。幸运的是,即使发生泄漏,令牌也很容易进行更新,我们建议您经常轮转它们——特别是在集群短时间内不会更新换代的情况下。

image

信任引导

作为建立其身份的一部分,新节点将申请一个由网络管理员所签发的全新身份。但是,根据我们威胁模型的假设,即所有通信都可以被第三方截获。这就引出了一个问题: 一个节点如何判断它是否在与一个合法的管理员对话?

image

幸运的是,Docker有一个内置的保护机制来防止这种情况发生。连接令牌包含CA证书的散列就是主机连接Swarm的保障机制。因此,主机可以使用单向TLS,并使用散列来验证它是否在与正确的Swarm进行连接:如果管理员显示的不是通过与散列匹配的CA证书,则该节点就清楚不能与其连接了。

节点身份的签发和管理

节点在Swarm 中的身份会嵌入到每个节点所持有的x509证书中。根据最低特权原则,证书的私钥将严格限制在其发起的主机上。值得注意的是,除自己所持有的私钥之外,管理员无权访问任何其它证书的私钥。

身份签发

要在不共享私钥的情况下接收证书,就需要新主机首先发出一个证书签名请求(CSR),然后由管理员将其转换成证书。现在,这个证书就是节点在新主机上的身份证明,拥有该证书的节点就是该群集的正式成员了!

image

当与安全引导机制一起使用时,默认情况下,这种为连接节点进行身份签发的机制是安全的。所有通信方都是经过验证的、经过授权的,并且没有在明文中交换任何敏感信息。

身份续约

然而,将节点安全地连接到Swarm只是其中的一部分。为了最大限度地减少证书泄漏或被盗的影响,并且消除管理CRL列表的复杂性,Swarm Mode 只为其节点提供短期的身份验证证书。这些证书的默认有效期为3个月,但是可以根据您的需要自由配置时间!

image

使用这个有效期很短的证书意味着证书更新不能是一个手动的过程,因为它通常用于大多数PKI系统。使用Swarm,所有证书都将以一种不中断的方式进行自动更新。这个过程很简单:使用相互验证过的TLS连接去证明特定身份的所有权,Swarm节点定期生成新的公钥/私钥,并发送相应的CSR以进行签名,创建一个全新的证书,但不会改变其原有身份。(未完待续......)

目录
相关文章
|
10天前
|
关系型数据库 MySQL Docker
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
62 24
|
12天前
|
关系型数据库 MySQL Docker
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
77 6
|
4月前
|
存储 安全 数据安全/隐私保护
在Docker中,Docker安全么?
在Docker中,Docker安全么?
|
1月前
|
应用服务中间件 PHP nginx
Docker-compose 编排lnmp(dockerfile) 完成Wordpress
通过使用Docker Compose,我们可以轻松编排LNMP环境并部署WordPress。本文详细介绍了各组件的Dockerfile和配置文件编写,并通过docker-compose.yml文件实现了整个环境的自动化部署。这种方法不仅简化了部署过程,还提高了环境的可移植性和一致性。希望本文能帮助你更好地理解和使用Docker Compose来管理和部署复杂的应用程序。
100 3
|
4月前
|
缓存 运维 安全
在Docker中,构建镜像应该遵循哪些原则?
在Docker中,构建镜像应该遵循哪些原则?
|
5月前
|
Java Nacos Docker
使用docker compose 编排微服务发布
使用docker compose 编排微服务发布
77 3
|
5月前
|
Ubuntu Devops 云计算
ubuntu docker-compose编排容器并且设置自启动
使用Docker Compose编排容器并设置为Ubuntu系统的自启动服务,不仅优化了应用的部署流程,也提升了运行时的可管理性和可靠性。通过上述步骤,您可以轻松实现这一目标。维护此类服务时,记得定期检查和更新您的 `docker-compose.yml`文件,确保所有的服务都符合当前的业务需求和技术标准。在云计算和微服务架构不断演进的今天,掌握Docker Compose等工具对于DevOps和软件工程师来说,变得尤为重要。
239 3
|
6月前
|
Cloud Native 安全 Docker
云上攻防-云原生篇&Docker安全&系统内核&版本&CDK自动利用&容器逃逸
云上攻防-云原生篇&Docker安全&系统内核&版本&CDK自动利用&容器逃逸
130 5
|
7月前
|
监控 安全 数据安全/隐私保护
【Docker专栏】Docker容器安全:防御与加固策略
【5月更文挑战第7天】本文探讨了Docker容器安全,指出容器化技术虽带来便利,但也存在安全隐患,如不安全的镜像、容器逃逸、网络配置不当等。建议采取使用官方镜像、镜像扫描、最小权限原则等防御措施,并通过安全的Dockerfile编写、运行时安全策略、定期更新和访问控制等加固容器安全。保持警惕并持续学习安全实践至关重要。
701 7
【Docker专栏】Docker容器安全:防御与加固策略
|
7月前
|
前端开发 API 数据库
【Docker专栏】Docker Compose实战:编排多容器应用
【5月更文挑战第7天】Docker Compose是Docker的多容器管理工具,通过YAML文件简化多容器应用部署。它能一键启动、停止服务,保证开发、测试和生产环境的一致性。安装后,创建`docker-compose.yml`文件定义服务,如示例中的web和db服务。使用`docker-compose up -d`启动服务,通过`docker-compose ps`、`stop`、`down`和`logs`命令管理服务。
148 6
【Docker专栏】Docker Compose实战:编排多容器应用
下一篇
DataWorks