DevSec のインフラストラクチャ・アズ・コードガイド
Published on 14 Jun 2022
コードを使用してインフラストラクチャを管理および配信するために使用されるテクノロジーと手法は、コードとしてのインフラストラクチャと呼ばれます。これにより、バージョン管理、コミュニティ レビュー、自動テスト、ラベル付け、継続的な展開、継続的な配信がすべて可能になります。
IaCの昇天
インフラストラクチャの提供と保守の従来の方法に対抗するため、DevOps 企業である Puppet は、2009 年に Infrastructure as Code (IaC とも呼ばれる) を立ち上げました。Puppet によると、「インフラストラクチャ管理の従来の手法 (手動の手順とドキュメント、脆弱な単一目的のスクリプト、グラフィカル ユーザー インターフェイス ベースのツール) はすべて、過去には有用でした」とのことです。
しかし、今日では、インフラストラクチャを継続的に拡張する必要性、一時的なインフラストラクチャの使用、アプリケーション システムの複雑さの増大により、制御を維持するための新しい方法が必要になっています。」IaC は現在、Ansible、Chef、Salt など、複数のビジネスの基盤となっています。
HashiCorp の有名なオープンソース IaC フレームワークである Terraform は、主にパブリック クラウド サービスのリソースを記述するために使用され、近年 IaC の成長を後押ししてきました。Terraform によって IaC は極めて柔軟かつアクセスしやすくなり、IaC エコシステムが従うべき道が開かれました。
同時に、クラウド プロバイダーは、インフラストラクチャのオーケストレーションと管理の簡素化と自動化を支援するために、独自の構成フレームワークを開発しました。インフラストラクチャ エンジニアは、AWS CloudFormation、Azure Resource Manager (ARM)、および Google の Cloud Deployment Manager を使用して、繰り返し可能なセットアップを設計できます。
どのように機能しますか?
IaC は宣言型 (提供される内容を説明する) の場合もあれば、命令型 (提供される方法を定義する) の場合もあります。Terraform と CloudFormation は宣言型フレームワークですが、AWS Cloud Development Kit (CDK) は命令型 IaC フレームワークです。Kubernetes も、構成をコードで記述できるという点で IaC と非常によく似ています。
各フレームワークには独自の標準と構文がありますが、IaC はリソース宣言、入力変数、出力値、構成設定、およびその他のパラメータで構成されます。IaC は多くの場合、JSON、HCL、または YAML ベースであり、コンピューティング、ネットワーク、ストレージ、セキュリティ、ID およびアクセス管理 (IAM) など、インフラストラクチャを起動するために必要なすべての構成が含まれています。
インフラストラクチャ・アズ・コードの利点
IaC はコードを使用してリソースを起動して動作させるために必要なものを指定するため、クラウド プロビジョニングを自動化し、繰り返し性を高めながら拡張できます。
オートメーション
企業は現在、多くのアプリを定期的に導入しており、それらの要求を満たすためのインフラストラクチャ要件は絶えず進化しています。IaC は、人手による設定をすべて自動化することで、クラウド プロビジョニングを効率化します。IaC は、手動のインフラストラクチャ設定を機械が読み取り可能なテンプレートに変換することで、開発者がインフラストラクチャを手動でプロビジョニングおよび維持する必要性をなくします。代わりに、エンジニアは自動化されたプロセスを使用して、新しいインフラストラクチャを作成、テスト、導入できます。
スケーラビリティ
IaC により、チームはクラウド サービスを大規模にセットアップすることがより簡単かつ信頼性が高くなり、構成ミスのリスクが減り、時間とコストが節約されます。自動化とコード構成により、クラウド サービスを一貫してインストールすることがはるかに簡単になります。また、使用されていないインフラストラクチャのプロビジョニング解除も簡単になり、総コンピューティング コストとメンテナンス支出が削減されます。
再現性
クラウド インフラストラクチャには一貫性が必要です。IaC はコンピューティング、ストレージ、およびネットワーク サービスを一貫して展開し、リソース全体、さらにはマルチクラウド設定全体で一貫性を維持できるようにします。この統一性により、人為的エラーが削減されると同時に、徹底したバージョン管理とログ記録が可能になります。繰り返し要素により、高品質の標準、セキュリティのベスト プラクティス、および業界ベンチマークへの準拠を維持しながら、より少ない作業でより多くのリソースを提供できます。
安全
IaC は、チーム間のコミュニケーションに重要な機会を提供します。統一された標準言語を使用して環境やクラウド全体にクラウド リソースを提供することで、開発者と運用担当者はより簡単に同じ認識を持ち、協力してクラウド ネイティブ アプリを安全に維持できるようになります。
Paloalto のホワイトペーパーをダウンロードして、Whitepapers Online でのみ公開されている「The DevSecGuide To Infrastructure As Code」の詳細をご覧ください。