コードとしてのインフラストラクチャ(IaC)とは?

基础设施即代码(Infrastructure as Code, IaC)是指以预先构建的模板形式利用代码来提供支持基于云的应用所需的基础设施资源的方法。。这是一种高重复性的方法,开发者可以用它来编写、测试和发布代码,创建应用程序运行的基础设施。。このプロセス全体を、継続的インテグレーション・継続的デプロイメント(CI/CD)ソフトウェアパイプラインの一部として自動化できます。

这是一种非常有用的方法,因为当你把新代码推到生产环境时,你不需要手动提供资源。。可重复的任务是自动化的,这样团队就能更快地完成产品。。

安装IaC可以让开发人员更快、更有效率地进行工作,但通常也有缺点。。这种速度的提高往往削弱了平台和DevOps团队的控制和监控,在某些情况下资源被不合理地提供,甚至在最坏的情况下以不安全的方式创建列表就会有泄露的风险。。こうした事態に対抗するためか、Forresterの最近のレポートによれば全球安全部门58%的高级决策者计划在2022年增加应用安全预算。。

但是,如果在开发周期中整合安全的话,SecOps会与DevOps步调一致,尽可能迅速地妥善保护工作负载,因此开发人员和安全负责人之间可能会产生摩擦。利玛窦。

コードとしてのインフラストラクチャツール(IaC)

それぞれの環境と目的は異なります。因为不同的工具有适合和不适合的地方,所以需要针对特定的需求调查最适合的工具。。值得注意的是,很多云服务商都在自己的平台上提供本地的工具和服务。。为了避免与采用特定平台时已经设置的功能重复,在进行调查时要考虑到这一点。。

当社のアプローチの詳細を確認:クラウドセキュリティとDevOpsおよびCI/CDツールの統合

Terraform

Terraform可以帮助用户定义资源和基础设施,这是一种人类可解读形式的声明文件。。我们不仅可以在多个云平台上管理基础设施的生命周期,还可以跟踪整个部署的资源变化。。

Chef Infra

Chef Infra允许用户定义可重复的、一致的、可重用的策略,并自动化地进行配置管理。。我们可以将设定和策略定义为代码,可以测试和强制,可以作为自动化管道的一部分大规模分发。。必要に応じて設定からの逸脱を検知し、修正することもできます。

Puppet

Puppet是一个使用声明代码来帮助管理和自动化服务器设置的工具,它可以扩展基础设施自动化以满足组织的IT需求。。用户可以描述他们想要的系统状态,而不是达到目标所需的步骤。。

AWS CloudFormation

AWS CloudFormation可以帮助用户使用DevOps来管理基础设施。CI/CD自动化可以实现自动化、测试和基础设施部署模板。。你也可以扩展和管理基础设施,包括在CloudFormation注册表、开发者社区和用户库中公布的云资源。。

Ansible

Ansible是一款开源命令行IT自动化软件应用,用于系统配置、软件部署、高级工作流调整,应用程序的部署和执行更新tem等。。Ansible最大限度地减少了所谓的“可移动部分”,传送使用OpenSSH,并且采用了人类可以解读的语言形式,用户可以立刻开始使用。。

SaltStack

SaltStack是一个基于Python的开源软件,用于执行和管理远程任务,帮助用户部署和配置复杂的IT系统。。将人类可解读的YAML和事件驱动型自动化结合起来,为ITOps、DevOps、NetOps和SecOps的各个部门带来好处。。

IaCのメリットは?

如上所述,IaC在云环境中的主要优势在于速度,但如果进一步深入挖掘,还可以发现其具体的商业优势。。

  • 手動設定のテンプレート化:过去,每当开发人员准备部署应用程序时,他们都需要手动提供基础设施。。IaCは、テンプレートを使用してこのプロセスを自動化します。SecOps建立了安全控制,使用这样的模板建立了护栏,我们可以快速有效地利用可重复的代码。。
  • リスクの軽減:风险是不可能完全消除的,但可以通过构建符合组织安全标准和最佳实践的可重复模板,降低人为失误和脆弱性的风险。。
  • 無駄な支出の削減:由于人为的错误,经常会供应错误配置的资源,或者供应过剩的基础设施资源。。在资源量上安装护栏可以避免与过度供应的资源相关的不必要的支出。。
  • より強力なチームの構築:IaCにより、コスト削減だけでなく、技術的・運用面での効率向上も実現します。最大的好处可能是减少了DevOps和SecOps之间的摩擦。。如果将安全自然地整合到流程中,那么安全组织在运行前“检查开发人员的工作”的感觉就会消失,从而产生更加积极的工作环境和团队的伙伴意识。。

現代の企業の大半が達成しようとしているマクロ的な利益としては、壮大な「シフトレフト」が挙げられます。これは、DevOpsとSecOpsを真のDevSecOps将安全转移到CI/CD管道,将安全和合规从事后应对转变为预防措施。。

宣言型 vs 命令型 IaC

通过以上的说明,我们可以知道定义IaC的方法有很多。。再深入一点,有两种常见的分类:宣言型IaC和命令型IaC。。简单地说,这些是指如何指导开发人员在IaC自动化平台上做什么。。

宣言型 IaC

在这个方法中,用户宣布他们想要的结果,并让系统根据预先建立的模板和规则来实现这个结果。。因此,用户对设定过程的技术知识要求变少,通过委托提高效率。。在这里,用户基本上是在说:“你希望这个结果在过程完成后发生,但你不在乎你怎么做。”。另外,它还有一个好处,那就是用户可以更有战略地接近整个应用的形成和部署。。

简单地说,IaC在性质上是描述定义代码运行的云基础设施的语句。。声明型IaC是达到期望结果的更快更简单的方法,通常是最常用的方法。。

命令型 IaC

由用户来定义每个步骤,这听起来像是一个很大的缺点,有时也确实很难做到。。在这种形式下,用户需要对编程语言有很深的了解,也需要完美地执行每一个步骤来让整个程序发挥作用。。它的优点是,用户可以更详细地控制自动化过程和代码,并根据具体情况的需求来定制设置过程。。

其中,对控制器做出“重复该循环,检查该边界条件,在满足条件的情况下执行该操作,在不满足条件的情况下执行该其他操作”等正确的指示。包括:。命令式编程本质上是一种微观管理,通常是由人主导的。。

IaCの課題とは?

即使IaC的使用提高了开发生命周期的速度和效率,也要确保安全。。因此,在过程中尽早实现安全控制和检查是必不可少的。。这样你就可以在问题出现之前检测出模板中的问题,从而避免创建不符合组织标准的资源。。我们来看看IaC的一些问题(不用担心,它的好处更大)。。

  • テンプレートに含まれるセキュリティリスク:構築されたテンプレートにエラーがないとは限りません。为了避免创建危险资源,我建议你在使用前确认一下模板。。
  • 分析の組み込み:在引入IaC之后,我们还需要集成扫描工具,以便在漏洞出现之前检测出错误。。幸运的是,静态IaC分析和动态IaC分析都可以用来分析代码,确定错误设置,以及评估IaC模板运行的云环境。。
  • IaCの強化:在实现和使用IaC时,你可能会花费一定的时间来学习,浪费开发人员的资源,并且创建一个与你的团队所熟悉的工作流程完全不同的工作流程。。此外,为了确保IaC模板存储库具有全面性,能够切实地适应整个开发团队的需求,为了保持模板的最新状态,全体利益相关者团队必须按照计划进行应对。的重要性。。
  • 人的な摩擦:如果你实施IaC,你需要继续使用安全工具来确保你的基础设施不受错误配置和漏洞的影响,这可能会让开发人员更难处理混乱和速度下降。。安全性决定了开发人员如何快速地确认IaC模板并无缝兼容。。

IaCセキュリティについてもっと読む

Rapid7的云安全平台确认如何提供IaC安全

Rapid7ブログの最新のクラウドインフラストラクチャトピック

2022年クラウド誤設定レポート:最新のクラウドセキュリティ侵害と攻撃の傾向