Web App Scanning の基礎: セキュリティ専門家が CI/CD パイプラインについて知っておくべきこと

Git、リポジトリ、パイプライン…これらは一体何なのでしょうか。この記事では、ウェブアプリ開発プロセスの標準的な手法を解説し、Tenable Web Application Scanning を活用してコードを安全に保つためのガイドをご紹介します。
なるほど! 簡単にできそうです。 始めるために必要なのは・・・はて、パイプラインとは何なのでしょう?
では、そこから話を始めましょう。 コードリポジトリを使ってコードの変更を追跡したことがありますか? リポジトリのファイルやコードを更新すると、毎回「Git コミット」と「Git プッシュ」と呼ばれる操作を行う必要があります。 開発者は、Git を CI/CD パイプラインを実行するための基盤として使用しています。
ちょっと待ってください。Git とは何でしょうか? CI/CD の意味は?
誤解のないように言うと、継続的インテグレーションおよび継続的デプロイ (CI/CD) は方法論であって、ツールではありません。
CI/CD の「D」は「デプロイ」ではなく「デリバリー」とされることもよくあります。 今は「デプロイ」側についての話をしているので、このブログでは「デプロイ」を使用します。
しかしその話をする前に、まずはバージョン管理について説明します。 時を遡って、しばらく前の話をしましょう。 2005 年、Linux の開発者である Linus Torvalds 氏は「Git」というオープンソースのバージョン管理ソフトウェアを作成しました。 バージョン管理を利用すると、コードベースのすべての変更を追跡して管理できます。
リポジトリと呼ばれるこれらのコードベースは、思いつく限りすべてのソフトウェアやウェブサイトの基盤となっているコードを管理するために、一般に使用されています。 Git は最も広く使われているバージョン管理システムです。そして、GitHub (現在は Microsoft が所有) は Git を使用するクラウドベースのリポジトリホスティングプラットフォームの 1 つです。
Git の開発以来、開発者はこの優れたバージョン管理ツールを使い続けてきました。しかし、本番環境のアプリケーションやソフトウェアをテストしたいときには、毎回以下の手順を行う必要がありました。
- サーバーにログオンする
- リポジトリからコードをプルする
- コードを zip 形式のファイルにパッケージする
- パッケージをステージング環境/テスト環境だった別のサーバーに送信する
- アプリケーションを実行して、完全に動作することを確認する
- 必要なテストを実行する (他の開発者を参加させ、問題を探すためにアプリケーションをつつき回してもらうなど)
最も腕の立つ開発者なら、この作業の一部またはすべてを自動化するスクリプトを作成するところです。しかし、もっといい方法があるのです。

継続的インテグレーションとは何か
ここでのインテグレーション (統合) の意味は、言葉から想像されるものとは異なります。 アプリケーションを構築し、コードを変更するたび、またはスケジュールに従ってテストを実行することを指します。これによって、どれくらい時間を節約できるかを考えてみてください。 テスターのチームにタスクを割り当てる必要はなくなり、コードを変更するたびにテストが実行されます。 すべての問題を即座に把握できるのです。想像できますか。
それに加えて、継続的インテグレーションではアプリケーションを自動でビルドするので、自身でパッケージ化して実行する必要がなくなり、アプリケーションを構築し続けることができます。
Tenable Web App Scanning が提供する動的アプリケーションセキュリティテスト (DAST) スキャナーは、パイプラインのこの部分でセキュリティ専門家の役に立ちます。
Tenable は、開発者がセキュリティ問題をできる限りすぐに把握できるようにしたいと考えています。 参考のために付け加えると、ここではソフトウェアコンポジション解析 (SCA) と静的アプリケーションセキュリティテスト (SAST) も行われます。 これらのツールがソースコードの確認に使用されるのに対して、Tenable Web App Scanning はビルドされたアプリケーションを対象に、実際のネットワークリクエストを使用したスキャンを行います。
Jenkins は、広く採用された、最初の主要な CI ツールであるとされています。 Jenkins は、チームがこの方法論を導入するのに役立ちました。 一部のチームは、すでに自前のソリューションによってこの方法論を実践していました。 当社は、Jenkins CI/CD パイプラインにウェブアプリケーションスキャナーを導入する方法についてのドキュメントを提供しています。
継続的デプロイとは何か
デプロイとは、ビルドしたものを実際の使用のためにプッシュすることです。 これは、簡易テストのためではなく本番環境で使用するために、アプリケーションをビルドすることを指します。 かつて、開発者はサーバーにログオンして、臨機応変にアプリケーションを更新していました。 何か不具合が生じたら、何を変更したかを思い出して、元に戻してやる必要がありました。
デプロイメントを自動化すると、開発者は 1 つのスクリプトを実行するだけで、環境全体またはアプリケーションを一度に起動できます。 アプリケーションがダウンした? 大丈夫です。デプロイメントを実行すれば、すぐに復旧できます。
継続的デプロイでは、ソースコードに変更を加えたら自動的に本番環境へと送ることができます。 稼働中のサーバーに変更を加えるために、開発チームや IT チームの時間を浪費する必要はありません。
まとめ
では、 まとめましょう。 CI/CD パイプラインには、バージョン管理 (Git)、継続的インテグレーション、継続的デプロイがまとめられています。 これによってチームはアプリケーションを極めて迅速に開発できるようになり、時間を浪費しないで済みます。 パイプラインは、すべてコードの変更に基づいて実行される、テストと自動化されたアクションの継続的な流れを指します。
長い時を経て、Bamboo や CircleCI などのより優れたツールも増えました。 2015 年には GitHub Actions が登場し、開発者は GitHub 内でソフトウェア開発のワークフローを自動化できるようになりました。
Tenable Web App Scanning はすべてのパイプラインをスキャンできます。 さまざまなツールでテストするためのコードのサンプルを提供していますが、テストはどのパイプラインにも投入できます。
実装方法についての詳しい文書は、Tenable のドキュメントでご覧いただけます。
最初の疑問に戻りましょう。 ウェブアプリケーションをパイプライン内でスキャンしたくなりしたか?
「CI/CD パイプラインでウェブアプリケーションスキャンを実行する方法」は、https://demo.tenable.com/share/lajsp7ujjmzb より、公開デモでご確認いただけます。
もっと詳しく
- オンデマンドウェビナー Tenable Web Application Scanning 2024 年 4 月カスタマーアップデート
- 製品ページ https://jp.tenable.com/products/web-app-scanning
- データシートのダウンロードはこちらから。脆弱性のエクスポージャー: ウェブアプリのセキュリティをダイナミックにテストする、簡単でスケーラブルなアプローチ
- Cloud
- Web Application Scanning
- Cloud
- DevOps
- Exposure Management