云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

网站服务器_mail服务器_企业级

小七 141 0

为什么政策是代码?

HashiCorp提倡用"基础设施即代码"的方法来管理基础设施。我们已经公开谈论过它,并在我们的HashiCorp之道上发表过。在HashiConf 2017大会上,我们宣布了Sentinel,一个"政策即代码"的框架。应用于基础设施的相同编码实践在实施和管理策略方面非常有效。在不牺牲强制执行的情况下,编纂策略消除了排队购票的需要。运营商采用HashiCorp Terraform这样的工具来提供管理基础设施的简单工作流。用户编写配置并运行一些命令来测试和应用更改。具有治理需求的组织通常会通过售票队列来中断此工作流,以实施策略。»什么是政策?政策是一个模糊的术语,可以跨越许多不同的范畴:合规政策。这些策略确保符合外部标准,如PCI-DSS、SOC或GDPR。外部行业工作组或政府机构制定并强制执行这些标准。安全策略。内部采用的安全策略保护数据隐私和基础设施的完整性。例如,确保只有某些应用程序在公共网络上运行或将特定端口暴露到Internet。卓越运营。这些策略可防止服务中断或降级。例如,策略可能要求至少两个服务实例,或验证新配置。历史上,大多数政策的定义和执行方式都是一样的。策略作者将业务需求转换为Word文档,其中包含应强制执行的特定规则。策略的执行基于票务工作流,即针对合规性或安全性团队提交票证。对于每个记录单,策略文档用于验证批准或拒绝的记录单。此工作流速度慢,容易出错,并且很难扩展正在审阅的策略数或票证数。端到端的自动化是困难的,因为售票工作流是异步和缓慢的,而且每个系统的实现往往是不同的。»什么是策略代码?我们的主要任务是基础设施即代码,即基础设施可以通过Terraform和Nomad等工具进行编码和自动化。这种方法允许对配置进行测试、同行评审、版本控制、自动化和重用,就像应用程序代码一样。将这种方法应用于政策似乎很自然,并带来同样的好处。将策略视为代码需要一种指定策略的方法和一种强制执行策略的机制。传统上,策略是在Word文档中定义并手动执行的。相反,Sentinel提供了一种简单的面向策略的语言来编写策略,并与Terraform Enterprise和Nomad Enterprise等工具集成以实施策略。下面是一个示例哨兵策略,它确保在"us-east-1"区域部署登台,同时将生产部署到"us-west-1":导入"tfplan"有效的_regions={"production":"us-west-1","staging":"us-east-1"}env_region=有效的_region[tfplan.variables.env]is_not_aws=func(类型){返回类型不是"aws"}//检查提供程序别名区域是否与环境区域匹配validate_aws_region=func(提供者){全部返回提供者.别名作为{a。配置区域是恩乌地区吗}}主=规则{全部tfplan.config.providers作为类型,提供程序{是不是_aws(类型)或validate_aws_region(提供者)}}该语言的目标是让编程背景有限的个人能够简单地读写。这促使我们编写自定义语言,而不是采用通用编程语言。»可测试性Sentinel的另一个好处是它还有一个完整的测试框架。考虑前面的例子,我们可以使用简单的json语法编写一个测试用例来验证它的正确性:"模拟":{"tfplan":{"变量":{"env":"生产"},"配置":{"提供商":{"aws":{"别名":[{"config":{"region":"us-west-1"}}]}}}}},"测试":{"主":正确}}然后,我们可以使用Sentinel命令行工具检查我们的策略:$sentinel测试-详细通过-登台.sentinel通过-测试/分段/不通过_aws.json文件跟踪:真的-准备。哨兵:15:1-规则"main"真的-准备。哨兵:17:3-是不是通过-测试/分段/pass.json文件跟踪:真的-准备。哨兵:15:1-规则"main"错误-准备:17号哨兵:3-是不是真的-准备。哨兵:17:20-验证_区域(v)通过-测试/分段/失败无效_区域.json跟踪:错误-准备。哨兵:15:1-规则"main"错误-准备。哨兵:17:3-是不是错误-准备。哨兵:17:20-验证_区域(v)使用这种方法,我们可以为通过和失败的场景构建多个测试用例,使我们能够轻松地验证我们的策略,而不必执行它。这也使我们能够改变政策,确保不会出现倒退。»执行策略一旦写入,策略就可以自动执行,而无需手动审阅。这种强制最好在更改路径中执行,这样就可以防止而不是检测到违反策略的情况。检测策略冲突需要一个单独的修复工作流,并且比完全防止问题更麻烦。以下是Terraform Enterprise的实施工作流示例:此工作流将策略定义和实施解耦,为操作员保持快速反馈循环。使用自动化可以避免手动审查过程中固有的人为错误,并允许大量的策略或更改。»结论使用票务队列和手动审阅策略强制执行可能会造成瓶颈更改。策略作为代码使用编码策略和自动执行。这种方法将基础设施扩展为代码,这带来了类似的好处。Sentinel是一个策略即代码的框架,我们引入并集成到Terraform Enterprise、Vault Enterprise、Nomad Enterprise和Consult Enterprise中。避免售票工作流允许组织提供更多的自助服务功能和端到端自动化,从而最大限度地减少开发人员和运营商的摩擦。了解有关Sentinel的更多信息:https://www.hashicorp.com/sentinel。