什么是政策即代码?
政策即代码是一种政策管理方法,在这种方法中,政策是通过代码来定义、更新、共享和执行的。通过利用基于代码的自动化,而不是依赖人工流程来管理政策,政策即代码可以让团队更快地行动起来,并减少因人为失误而造成错误的可能性。
与此同时,对安全等领域采用 "策略即代码 "的方法,可以用不同类型的利益相关者(如开发人员和安全工程师)都能理解的方式来定义和管理策略。
本页介绍了策略即代码的工作原理、其重要性以及如何在安全环境中利用它。
定义政策即代码
要理解 "政策即代码 "的含义,首先必须了解 "政策 "的定义。
在这种情况下,政策是指管理 IT 操作或流程的任何类型的规则、条件或指令。例如,策略可以是一条规则,规定必须满足哪些条件,代码才能通过安全控制并得到部署。或者,它可以是一套程序,在响应安全事件时自动执行。
政策即代码是指使用代码来定义和管理规则和条件。在 "策略即代码 "方法中,团队使用某种编程语言(如 Python、YAML 或 Rego)编写策略。具体语言通常取决于你使用的政策即代码管理和执行工具。
当工程师需要进行更新时,他们会通过修改现有代码来实现。他们还可以与其他人共享代码,让他们通过版本控制系统(VCS)了解自己的策略。最后但并非最不重要的一点是,他们可以使用政策即代码执行引擎来确保政策得到执行。执行引擎可以是独立的政策即代码,也可以内置到 更大的平台中。
政策即代码与基础设施即代码
政策即代码 "的概念听起来可能与 " 基础设施即代码 "或 IaC类似。IaC 使用基于代码的文件来自动完成基础设施的设置和配置,多年来一直是 IT 运营团队的常用做法。
IaC 有利于需要配置基础设施的 IT 运营小组,而 "政策即代码 "则可以改善安全运营、合规性管理、数据管理以及更多方面。
政策即代码的好处
与手动管理规则、条件和程序的替代方法相比,"政策即代码 "具有若干严重性优势:
- 效率:当政策被写成代码时,它们可以在几乎无限的大规模范围内自动共享和执行。这比要求工程师每次都手动执行策略要有效得多。如果政策是用简洁明了的代码定义的,而不是用人的语言描述的,有些工程师对其的解释可能与其他人不同,那么更新和共享政策的效率也会更高。
- 速度自动执行策略的能力还意味着 "策略即代码 "的运行速度比手动方法更快。
- 可见度:当政策以代码的形式定义时,所有利益相关者都可以很容易地使用代码来了解系统内发生的事情。例如,他们只需检查哪些基于代码的策略已经到位,就可以审查警报或补救规则,而不必询问其他工程师并等待答复。
- 合作:通过提供统一、系统的政策管理手段,政策即代码简化了协作。这不仅包括同一小组内部的协作,还包括不同类型小组之间的协作--尤其是开发人员(他们习惯于从代码的角度思考和工作)与其他领域(如安全或 IT 运营)专家之间的协作。
- 准确性:当团队使用代码定义和管理策略时,就能避免在手动管理系统时出现配置错误的风险。
- 版本控制:如果你跟踪不同版本的策略文件,当它们发生变化时,策略即代码可以确保在新的策略版本产生问题时,你可以很容易地恢复到较早的配置。
- 测试和验证:当策略被写入代码时,就很容易使用自动审计工具对其进行验证。这样,"策略即代码 "就能帮助降低在生产环境中引入关键错误的风险。
如何使用 "政策即代码
目前,利用 "策略即代码 "的最简单方法是,无论你想通过 " 策略即代码 " 方法管理哪个域,都可以采用 原生支持 "策略即代码 "的工具 。
例如,在安全领域,Prisma Cloud、Bridgecrew 和 Checkov 允许小组使用 Code to Cloud 定义安全策略。它们还能自动扫描和审核策略文件,以便在部署前发现配置错误或漏洞。这种方法是这些工具简化 云安全态势管理的一种方式。
您可能还想了解 Open Policy Agent等工具,该工具旨在提供一个通用框架,将策略即代码应用于任何领域。然而,迄今为止,供应商对这种基于社区的 "策略即代码 "框架的采用仍然有限,这就是为什么寻找支持本机策略即代码的供应商工具是在安全或任何其他 IT 领域实施策略即代码方法的最简单途径。