为什么 Comcast 开源了其 DNS 管理工具

这个开源 DNS 管理工具由电信巨头构建并为其服务,但正在建立自己的地位,并欢迎更多贡献者。
98 位读者喜欢这个。
An intersection of pipes.

Opensource.com

Comcast 采用 DevOps 实践导致了对支持应用程序、后台办公、数据中心和我们网络的基础设施的自动化和配置的增加。这些实践要求团队快速行动并自力更生。基础设施不断被颠覆,网络流量在其周围不断移动。良好的 DNS 记录管理对于支持这种程度的自主性和自动化至关重要,但是一个庞大而多元化的企业如何在快速行动的同时安全地管理其 DNS 资产?

挑战

在 2016 年之前,DNS 记录管理主要通过在线工单系统完成——用户提交 DNS 更改的工单,这些工单由一个单独的 DNS 技术人员团队手动审查和实施。这个系统经常需要对许多 DNS 请求进行手动干预,这非常耗时。

DNS 更改的周转时间为数小时,这不适合基础设施自动化。大型互联网公司可以管理数百万条 DNS 记录,这使得 DNS 技术人员实际上不可能验证每天请求的数千个 DNS 更新的正确性。这增加了对关键 DNS 记录进行意外错误更新的可能性,最终将导致停机事件。

此外,工程团队非常熟悉他们的 DNS 需求——比服务于整个企业的单个 DNS 技术人员团队更熟悉。因此,我们需要使工程团队能够自助服务他们自己的 DNS 记录,快速(在几秒钟内)实施更改,同时确保所有更改都安全地完成。

解决方案

VinylDNS 在 Comcast 构建,随后开放,旨在使工程团队能够在他们愿意的情况下进行自动化,同时提供 DNS 运营商和 Comcast 安全团队要求的安全性和管理控制。

安全即生活方式

VinylDNS 完全是为了自动化和增强安全性。在 Comcast,VinylDNS 团队与 Comcast 的 DNS 和工程团队以及安全团队密切合作,以满足严格的工程和安全要求。实施了令人难以置信的访问控制阵列,为 DNS 运营商和工程团队提供了极大的灵活性来控制他们的 DNS 资产。

在 DNS 区域级别实施的访问控制允许任何团队控制谁可以更新其 DNS 区域。当 DNS 区域被注册并授权给 VinylDNS 组时,只有该组的成员才能更改该 DNS 区域中的 DNS 记录。此外,访问控制列表 (ACL) 规则提供了极大的灵活性,允许其他 VinylDNS 用户管理该区域中的记录。这些 ACL 规则可以使用正则表达式掩码或无类别域间路由 (CIDR) 规则和 DNS 记录类型来定义,这些规则将对特定用户和组对特定 DNS 区域中特定记录的访问进行锁定。

满足自动化的需求

一个 具象状态传输 (REST) API 与系统一起构建。这使用请求签名来帮助消除中间人攻击。一旦 Comcast 的工程团队了解到 VinylDNS 提供的自动化类型,许多团队就开始构建工具,通过其 API 直接与 VinylDNS 集成。不久之后,他们中的大多数人都在使用与 VinylDNS API 集成的有机开发的工具来支持他们的 DNS 需求。

在大型企业规模下运行

很快,VinylDNS 正在管理数百万条 DNS 记录和数千个 DNS 区域,并支持数百名工程师。当我们寻求扩展 VinylDNS 以支持 Comcast 的其余部分时,我们意识到了一些挑战。

  1. 某些 DNS 记录是禁区,被认为太关键,不能以任何方式管理,只能手动管理。
  2. ACL 规则模型虽然灵活,但不可能在 Comcast 的整个 DNS 足迹(拥有数百万个 DNS 区域和数亿条 DNS 记录)中设置和维护。
  3. 许多 DNS 域被认为是“通用的”,并且不锁定到单个组。反向区域也是如此,因为 IP 空间通常可以自由分配给任何人。
  4. 某些 DNS 更改请求仍然需要手动审查和批准,即,您不能真正自动化一切。
  5. 某些配置 DNS 记录的团队与负责其生命周期的工程师不是同一批人。最终停用 DNS 记录的工程师在创建时可能是未知的。
  6. 某些团队要求 DNS 更改在未来的某个时间安排。例如,维护可能在非工作时间完成,而进行维护的员工可能无法访问 VinylDNS。

为了解决这些问题,VinylDNS 添加了更多访问控制和功能。共享区域允许通用访问,同时通过记录所有权维护安全性。记录所有权确保创建 DNS 记录的一方是唯一可以管理该记录的一方。仅此功能就使我们能够将大部分 DNS 反向空间移入 VinylDNS。

添加了手动审查以支持对某些 DNS 区域和记录进行更严格的治理。例如,敏感的 DNS 区域可能需要在实施更改之前进行审查,而不是立即应用所有更改。

添加了高价值域支持,以阻止 VinylDNS 永远无法更新某些 DNS 记录。例如,像 www.comcast.com 这样的高价值 DNS 记录无法通过 VinylDNS 管理,并且需要无法通过自动化平台实现的极端治理。

添加了全局 ACL,以支持创建 DNS 记录的团队不负责维护和停用这些 DNS 记录的情况。这允许通过完全限定域名 (FQDN) 和 IP 地址对某些 DNS 域进行覆盖。

最后,计划的更改允许用户计划在未来某个时间进行 DNS 更改。

结果

VinylDNS 现在管理着 Comcast 的大部分内部 DNS 空间,管理着数百万条 DNS 记录和数千个 DNS 区域,并支持数千名工程师。此外,我们利用与各种工具和编程语言的集成,包括 Java、Python、Go 和 Ruby(其中大多数是开源的)。

展望未来

还有几个额外的功能开发机会,Comcast 已计划将其作为平台持续发展的一部分。对于在公共云设置中管理的 DNS 资产,也需要相同级别的访问控制和治理。此外,我们正在研究管理 DNS 区域(创建和删除)的能力,这对于 IPv6 反向区域是必需的。最后,我们正在寻求为我们的 DNS 运营商创建一个强大的管理体验,他们希望利用 VinylDNS 数据库中存在的数据。

开放

VinylDNS 是一个由 Comcast 开源 发布和管理的开源项目。VinylDNS 及其配套生态系统由 Comcast 多个组织的工程师构建,利用了我们的内部开源程序。它是免费使用的,根据 Apache License 2.0 许可。我们欢迎所有贡献者,从代码到错误到功能请求,从新项目到项目想法。您可以在 Gitter 上联系我们的团队

接下来阅读什么

域名系统 (DNS) 简介

了解全球 DNS 系统如何使我们能够为我们每天连接的全球机器网络分配令人难忘的名称。

pauljamescleary
Comcast 高级首席工程师,构建 Scala 和函数式编程系统。函数式编程倡导者。VinylDNS 的作者。

评论已关闭。

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 许可。
© . All rights reserved.