ソフトウェア開発プロセスの基本原則の一つがインフラストラクチャであり、ソフトウェアプログラムの信頼性ある動作に直接貢献します。サーバー、ロードバランサー、ファイアウォール、データベース、さらには複雑なコンテナクラスターまでもがこのインフラストラクチャに含まれます。
インフラストラクチャの要素は、本番環境だけでなく開発プロセス全体に適用されます。これらはテストツール、CI/CDプラットフォーム、ステージング環境など、多くのプラットフォームや技術で構成されています。ソフトウェア製品の複雑さは、こうしたインフラストラクチャの考慮事項とともに増大します。

本記事では、IaCスキャンに関する必須知識、その仕組み、用途、必要性を網羅します。
IaCスキャンとは?
IaCスキャンは、IaCテンプレートやインフラ構成内のセキュリティ上の欠陥を分析・特定し、クラウド、インフラ、アプリケーションのデプロイメントを保護します。
IaCスキャンツールは、ネットワーク、インフラストラクチャ、アプリケーションコードベースの各コンポーネントを自動的に評価し、脆弱性や設定ミスを検出することでIaCセキュリティを提供します。これにより、本番環境におけるデータ損失、サイバー攻撃、ダウンタイム、デプロイメントエラーから保護します。IaCツールは確立されたセキュリティポリシーとベストプラクティスを活用し、システム内の悪意ある要素や潜在的なセキュリティリスクの特定を支援します。
最小権限の原則、ネットワークセグメンテーション、データ暗号化、リソース認可ポリシーなどは、このルールセットを作成するために活用できるセキュリティベストプラクティスの一部です。プレプロダクション環境におけるIaCスキャンは、ソフトウェア開発の初期段階でこの一貫したセキュリティルールセットとスキャナースクリプトを使用し、IaCセキュリティを実現します。
IaCスキャンの仕組みとは?
長年にわたり、組織はソフトウェア構成分析(SCA)や静的アプリケーションセキュリティテスト(SAST)技術を用いて、コードベースのエラーや脆弱性をスキャンしてきました。ほとんどのSCAおよびSASTツールの問題点は、機能コードベースをスキャンするために設計されているため、IaCスクリプトを優先しないことです。
その結果、IaCテンプレートやコードベース専用のスキャンツールが必要となります。使用するスキャナーに関わらず、手順の基本的な流れは同じです。
IaCスキャンは、ビルドステップ前の開発ワークフローへの統合から始まります。その後、セキュリティスキャンを実行してIaCテンプレートの設定エラーやセキュリティ上の欠陥をチェックします。これには、元のテンプレートと異なるインフラストラクチャ変更を新規コミットで検査することが必要です。
IaCスキャンの一環として、テンプレート、モジュール、ファイルなどのIaCコンポーネントは、事前定義されたセキュリティポリシーとベストプラクティスのリストと比較されます。その後、IaCスキャンツールは、不正な構成や法的要件を満たさない設定といった形で、欠落している変数を探します。DevSecOpsチームは、IaCデプロイメント完了前に解決すべき問題について迅速に通知を受けられます。
なぜIaCセキュリティスキャンが必要なのか?
IaCスキャンの利点について説明する前に、Infrastructure-as-Code(IaC)全般に関連するセキュリティリスクについて見ていきましょう。
- 複雑な環境:現代の企業ネットワークには、オンプレミスデータセンター、ハイブリッドクラウド環境、マルチクラウド環境が含まれることが多く、複雑なインフラストラクチャを形成します。これにより、効率的で安全かつ管理しやすいIaCコードベースの開発が困難になります。
- コンプライアンス違反:現代の開発では、組織がHIPAA、PCI DSS、GDPRなどの様々な規制基準やセキュリティ管理策を遵守することが求められます。IaCプロセスにおいてこれらの管理策が実施されない場合、コンプライアンス違反が発生します。
- 進化するサイバー脅威:現代のITインフラの進歩とサイバーセキュリティ環境の拡大に伴い、サイバー脅威は進化しています。IaCエンジニアは、最新のサイバー脅威からインフラを確実に保護するという課題に直面しています。
- 広範な攻撃対象領域、潜在的なデータ漏洩リスク:IaCテンプレートには脆弱性や誤ったデプロイが含まれる可能性があり、攻撃対象領域を拡大し、データを漏洩させる恐れがあります。例えば、IaCコードベース内に隠されたシークレットにより、重要な資産がソース管理からインターネットに晒される可能性があります。
では、IaCスキャンはどのように役立つのでしょうか?
クラウドセキュリティ は、開発完了後の後付け対策ではなくなりました。DevOpsチームは、セキュリティパラダイムを左にシフトさせ、DevSecOpsを形成しています。
DevSecOpsはソフトウェア開発ライフサイクル全体にセキュリティを統合します。これにより、インフラストラクチャ・アズ・コード(IaC)テンプレートやコンテナイメージに、非常に早い段階でセキュリティを組み込むことが可能になります。
IaCスキャンはソフトウェアのプレプロダクション段階で実施されるため、設定ミスによるセキュリティ侵害の潜在的なコストと影響を軽減します。その結果、IaC スキャンは、組織のセキュリティパラダイムを検知から予防へとシフトさせる、シフトレフトのクラウドセキュリティ戦略に貢献します。IaCスキャンを利用する開発者は、以下のような様々なメリットを得られます:
- IaCスキャンは、インフラを攻撃に晒す可能性のある設定ミス、不適切なデプロイ、セキュリティホールの開発者による特定と検出を支援します。
- IaCスキャンにより、開発者は事前定義されたセキュリティルールや公認の規制基準に対してシステムを検証できます。
- 組織は一般的に、IaCスキャンを活用してセキュリティのシフトレフトパラダイムを構築し、潜在的なサイバー攻撃を防止できます。
- IaCスキャンツールがインフラストラクチャの脆弱性や設定ミスを検出すると、開発者に通知し、修正プロセスをガイドすることで、より安全なデプロイを実現します。
- IaCスキャンはCI/CDパイプラインに組み込まれ、疑わしいプルリクエストやビルドを拒否するガードレールを実装することで、設定ミスが本番環境にリリースされるのを防ぎます。
SentinelOneをIaCスキャンに活用する理由とは?
クラウドコンピューティングはイノベーションとビジネス変革を推進します。しかし脅威の情勢が進化し続ける中、セキュリティ上の課題が山積しています。攻撃対象領域の拡大と高まるセキュリティ懸念により、組織は予期せぬ事態への備えをどうすべきか頭を悩ませています。
インフラストラクチャ・アズ・コード(IaC)スキャンは、現代の企業セキュリティ戦略において重要な要素です。これは、今日IaCが広く普及していることに起因します。IaC テンプレートのスキャンは、データ侵害の原因となることが知られている見落としや設定ミスを特定することで、IaC に関連するセキュリティリスクの軽減に役立ちます。しかし、IaC だけでは、クラウドセキュリティの全体的な態勢を改善するには不十分です。そこで SentinelOne の統合型クラウドネイティブアプリケーション保護プラットフォーム(CNAPP) が包括的なクラウド保護を実現します。
最先端の攻撃的セキュリティエンジンは、ゼロデイ攻撃を検知し、攻撃者の視点から脅威を分析します。SentinelOneのCNAPPには、Infrastructure-as-Codeスキャン、コンプライアンス監視、脆弱性管理、Dockerイメージとシークレットスキャン、サーバーレスセキュリティ、コンテナセキュリティ、クラウド設定ミスの修正をカバーします。SentinelOneのCNAPPはさらに一歩進んで、シフトレフトセキュリティを強制し、インシデント後の対応計画と分析を適用します。誤検知ゼロ、証拠に基づく報告、AIベース攻撃のブロック、インフラ可視性の向上を実現します。
IaCスキャンに関するよくある質問
IaCスキャンは、Terraform、CloudFormation、ARMテンプレートなどのインフラストラクチャコードをデプロイ前にセキュリティや設定ミスがないかチェックします。コードを解析し、ルールやポリシーに照らしてパターンを照合し、オープンなネットワークポートやハードコードされた認証情報などのリスクのある設定をフラグ付けします。スキャンはローカル環境、CIパイプライン、プルリクエストレビューの一部として実行可能で、クラウドリソースが稼働した後にではなく、早期に問題を検出できます。
IaCスキャンは、クラウド設定が最初からセキュリティルールに準拠していることを保証します。DevOpsチームは変更を迅速にプッシュするため、公開S3バケットのような誤った設定が紛れ込む可能性があります。スキャンはチェックを自動化するため、手動レビューだけに依存する必要がありません。
設定ミスを検知し、ポリシーを強制し、ミスによる影響範囲を縮小します。これにより、DevOpsのスピードで進んでもサービスを厳重に保護し続けられます。
スキャンを実行すると、ツールはIaCファイルを読み取り、作成予定の資源のモデルを構築します。その後、各資源に対して組み込みまたはカスタムのルールセットを適用します。ルール違反(例:不安全なSSHアクセスや暗号化未設定)を検出すると、ファイル名と行番号を記載したアラートをログに記録します。これらのアラートを確認し、コードを修正して再スキャンを繰り返し、全てが合格するまで続けます。
IaCスキャナーは、過度に許可されたIAMロールから暗号化されていないストレージボリュームまであらゆる問題を検出します。開放されたセキュリティグループ、SSL/TLS強制の欠如、脆弱なパスワードポリシー、ハードコードされたシークレットをフラグ付けします。リソースのタグ付けやバケットのバージョン管理強制といったベストプラクティスの検証を行うツールもあります。具体的な検出範囲は、選択したツールとルールセットによって異なります。
スキャンをCI/CDフローに統合し、すべてのプルリクエストをチェック対象にします。ベンダーのデフォルトルールから開始し、自社ポリシーに合わせてカスタマイズします。アラートは深刻度で優先順位付けし、ブロック要因を優先的に修正、再発する問題を追跡します。ルールセットを最新状態に保ち、コードと同様にバージョン管理してください。最後に、チームに一般的な検出結果を教育し、最初から安全なテンプレートを作成できるようにしましょう。
スキャンが正当なものをフラグ付けした場合(例:ジャンプホストの開放ポートでポリシーが許可している場合)、例外としてマークするか、そのリソースに対して特定のルールを無効化するコメントを追加します。ほとんどのスキャナーはインライン抑制や中央集約型ホワイトリストをサポートしています。抑制理由を文書化し、例外を定期的に見直し、状況が変わった場合は削除して無制限なドリフトを回避してください。
インフラストラクチャコードの記述を開始したら、すぐにIaCスキャンを有効化すべきです。ローカル開発環境に追加し、コミット前に問題が検出されるようにします。次にCI/CDパイプラインとマージチェックに組み込みます。既存スタックがある場合は、現在のテンプレートに対してスキャンを実行し、隠れたリスクを捕捉し、段階的に全てを監視下に置きます。

