本文の内容は、2024年9月23日に ashish chakrabortty が投稿したブログ(https://sysdig.com/blog/shift-left-with-the-sysdig-extension-for-visual-studio-code/)を元に日本語に翻訳・再構成した内容となっております。
攻撃者はセキュリティの盲点を悪用し、従来の防御をすり抜けて攻撃を仕掛け、企業の業務、さらには企業の評判にまで影響を及ぼします。最近の例としては、Revival Hijack サプライチェーン攻撃が挙げられます。この攻撃では、脅威アクターが以前に削除されたパッケージの名前を使用して新しい PyPi プロジェクトを登録しました。
この差し迫った脅威に対抗する一つの方法は、「シフトレフト」を行い、開発プロセスの早い段階でコードのセキュリティポスチャーを管理することです。この目的をサポートするために、Sysdig は Visual Studio Code (VSCode) の拡張機能を導入しており、現在 Visual Studio Marketplaceで入手できます。
この記事では、拡張機能をインストールし、Dockerfiles、Docker-compose、Kubernetes マニフェストをスキャンする方法を学びます。拡張機能を使用すると、次のことが可能になります。
- ソフトウェアパッケージ内の脆弱性を発見する
- インフラストラクチャー・アズ・コード(IaC)プロジェクトをスキャンする
- Sysdigの脆弱性管理(VM)ポリシーへの準拠を評価する
Sysdig で開発者を支援
Sysdig 拡張機能は、セキュリティのベスト プラクティスを統合してランタイム前セキュリティを実現することで、開発者に予防策を提供します。コード作成とセキュリティレビュー間のフィードバックループを削減することで、平均修復時間 (MTTR) などの指標を改善します。また、コードが本番環境に到達する前に、脆弱性とコンプライアンスのギャップに対処します。
初期設定
この新しい拡張機能を構成するための最初の手順は次のとおりです。
- VSCode MarketplaceからSysdig Scanner拡張機能をダウンロードします。
- インストールしたら、コマンドパレットを起動します(
⌘ +Shift+P
MacおよびCtrl+Shift+P
Linuxの場合) - 拡張機能を設定するには、“Authenticate with Sysdig Secure API Token” を選択し、Sysdig Secure URLとAPIトークンを入力します。
これにより、拡張機能が Sysdig アカウントにリンクされ、組織のセキュリティ ポリシーを取得できるようになります。
さらに変更するには、次のオプションがあります。
- CLIスキャナソースを定義する
- 脆弱性スキャンとコンプライアンス チェック用のセキュリティ ポリシー (事前定義またはカスタム構築) をカスタマイズします。
- スキャンするリモートまたはローカルのイメージ、リポジトリ、環境を定義する
- さらに多くのカスタマイズオプション
レイヤー分析で詳細なコンテキストを視覚化する
新しい拡張機能の際立った機能の 1 つは、 Dockerfiles のレイヤー分析です。これは、イメージファイルの各レイヤーを分解して、セキュリティリスクをもたらす可能性のある行またはコード命令を正確に特定します。この詳細な分析により、対応チームは臨床的な精度でセキュリティギャップに対処することができ、アプリケーションの修復にかかる全体的な時間が短縮されます。
この機能が実際にどのように動作するか見てみましょう:
Github リポジトリからzip ファイルをダウンロードし、ワークスペース フォルダーに解凍します。
さまざまな関係者間で行われるコードレビューやセキュリティワークフローは、生産スケジュールを遅らせる不必要な手間だと見なされることがあります。より迅速に革新を進めるために、開発者はしばしばセキュリティのガードレールを無視し、望ましくないリスクを導入することがあります。
Sysdig拡張機能は、コードが本番環境にプッシュされる前にソフトウェアパッケージを検査し、重要な時間を節約し、セキュリティが開発者のワークフローを遅らせないようにします。
次に、Visual Studio Codeで作業スペース内のフォルダーを開いてください。
フォルダーには、コンテナのビルドに必要なソフトウェアバイナリをインストールする Dockerfile が含まれています。Sysdig 拡張機能を使用して、このイメージファイルの脆弱性をスキャンします。エクスプローラー メニューを使用して Dockerfile を選択します。上部に、Build and ScanとScan Base Image の 2 つのオプションが表示されます。
Sysdig拡張機能は柔軟性を提供しており、Dockerfile全体をビルドして使用されているソフトウェアパッケージの脆弱性をスキャンすることも、ベースイメージ「debian:bullseye」内のセキュリティのギャップを確認することもできます。
いずれの場合でも、チームには検出された脆弱性の詳細なレポートが提供されます。これらは深刻度(および色)ごとに分類されており、レビューや修正を迅速に行うことが容易になります。
「Build and Scan」オプションをクリックしてください。
チームは結果を「Exploitable(悪用可能)」および「Fixable(修正可能)」でフィルタリングし、十分な情報に基づいた意思決定を行い、敵対者が環境を侵害して脱出する能力を抑制または削減するための戦略を展開することができます。
Sysdig拡張機能は強力なスキャン機能を提供しますが、注意すべき制限もいくつかあります:
- 非同時スキャン– スキャンは順番に実行されるため、大規模なプロジェクトではパフォーマンスに影響する可能性があります。
- 複数の YAML のサポート –この拡張機能は現在、1 回の実行で複数の Kubernetes または Docker-compose YAML ファイルをスキャンすることをサポートしていません。
- Dockerfile 内の ARG ステートメント —スキャンでは現在 ARG ステートメント (ビルド引数) が解決されないため、特定のシナリオで脆弱性の検出が制限される可能性があります。
Infrastructure as Code プロジェクトをセキュアにする
Visual Studio 用の新しい Sysdig 拡張機能が開発者の監視を支援し、開発コードに脆弱性が入り込むのを防ぐ方法について説明しました。
このユースケースは、IaC プロジェクトのスキャンも含めるように拡張できます。ソフトウェアファイルが Terraform、CloudFormation、またはその他の IaC ツールのいずれであっても、拡張機能はコードベース全体を保護し、定義した態勢に合わせて調整されたガバナンスフレームワークとコンプライアンス ポリシーに適合させます。
前の例と同様に、Sysdig 拡張機能を使用して Terraform ファイルと Kubernetes マニフェストをスキャンします。
Githubからファイルをダウンロードし、ワークスペースで解凍し、Visual Studio を使用してフォルダーを開きます。
コマンド パレットを起動して、Sysdig を使用してワークスペースで IaC ファイルをスキャンします。
Sysdig は、Terraform および Kubernetes マニフェストを含むワークスペース全体をスキャンし、これらのファイルに関連するすべての誤った構成をリストします。これにより、セキュリティチームが多様なスキルセットを活用してタイムリーな対応を展開するために必要なコンテキストが提供されます。
コンプライアンスの確保
開発者は、期限内にコードを納品しなければならないという大きなプレッシャーにさらされていることを私たちは知っています。開発者の生産性は通常、リードタイム、サイクルタイム、変更失敗率、デプロイメント頻度、平均故障間隔 (MTBF)、平均復旧/修復時間 (MTTR) などの内部指標によって測定されます。
セキュリティリスクへの対処に加え、開発者は自分の仕事が政府や組織のポリシーフレームワークに準拠していることを保証することも求められます。コンプライアンスを怠ると、多額の罰金が科せられ、市場での評判が損なわれる可能性があります。
新しい Sysdig 拡張機能は、コードを展開する前にすべてのコンプライアンス違反を特定することで、開発者を支援します。
この例では、Sysdig Secure を使用してカスタム ポリシー (ACME) を作成し、Visual Studio の拡張機能設定内で定義し、以前にダウンロードした脆弱な Dockerfile イメージをスキャンします。
- Sysdig Secure で、新しいパイプライン ポリシー ACME ポリシーを作成します。
- NIST フレームワークに準拠した定義済みルールバンドルを有効にします。
Sysdig のルールは、脅威調査チームによって管理および維持されています。通常、ルールは、企業のセキュリティポスチャーを改善する必要性に基づいて、ランタイム ポリシーまたはパイプライン ポリシーに関連付けられています。
このプラットフォームでは、カスタム ルールを定義してポリシーに割り当てる柔軟性も提供されます。これらのルールは、重大な脆弱性が検出されるとトリガーされます。
以下の画像は、Sysdig Secure でカスタム ルールバンドルを作成する方法の例です。
ここで、このカスタム ポリシーを Visual Studio で実行されている Sysdig 拡張機能にリンクする必要があります。
Sysdig 拡張設定の下にポリシー名を追加します。
または、拡張機能の設定に移動して、これらのポリシーを .json ファイルに追加することもできます。
コマンドパレットを起動し、「Scan Image for Vulnerabilities」を選択します。
フォルダー名sysdiglabs/dummy-vuln-app
(以前にダウンロードしたもの)を追加し、Enter キーを押します。
Sysdig 拡張機能はフォルダーをスキャンし、スキャン中に検出されたポリシー違反とともに脆弱性を報告します。リスク許容度に基づいて、チームは情報に基づいた迅速な意思決定を行い、損失を軽減できます。
これらの Sysdig スキャンをワークフローに統合することで、プロジェクトで使用されるソフトウェア パッケージの脆弱性を早期に検出して修正し、プロジェクトがマシンから出荷される前にプロジェクトのセキュリティとコンプライアンスを確保できます。
コードのセキュリティポスチャーを自ら管理する
Sysdig拡張機能は、開発者が自分のコードのセキュリティコンテキストを完全に管理できるようにします。これにより、開発者のワークフローが最適化され、セキュアなコーディングの実践を採用し、ソフトウェアのデータや機能を不正なアクセス、改ざん、または妨害から守るための目標を定義することができます。これにより、コンテナ化されたアプリケーションスタックのセキュリティ体制が向上するだけでなく、開発チーム内でより積極的なセキュリティアプローチが促進されます。
拡張機能を気に入っていただけたら、マーケットプレイスでレビューをお忘れなく!