In this article
セキュリティ自動化を理解する
セキュリティ自動化とは?
セキュリティ自動化とは、セキュリティプロセス、アプリケーション、インフラストラクチャを連携し、人の介入を減らすソフトウェアを活用することです。これにより、セキュリティチームと開発チームは、安全なソフトウェアを大規模に提供できます。

前述と同様に、アプリケーションセキュリティの自動化とは、ツールやソリューションを連携させ、ソフトウェア内の脆弱性を検出して修正するプロセスです。自動化は、効果的なアプリケーションセキュリティに不可欠な要素です。脆弱性の特定、優先順位付け、修復を自動化することで、開発チームとセキュリティチームは、デプロイ済みのアプリケーションを安全に保つための、より複雑な課題に注力できます。
ハッカーがアプリケーションを標的にするケースが増えるなか、手作業による脅威への対応には時間と労力がかかります。一方、アプリケーションセキュリティの自動化では、実行しやすく再現可能なプロセスにより、テクノロジー環境の安全を維持できます。セキュリティを自動化するには、アプリケーションセキュリティのベストプラクティスに従い、ビルド、テスト、リリースの各段階でさまざまな自動化ツールを活用することが推奨されます。
アプリケーションセキュリティの自動化が重要な理由
ソフトウェア開発のスピードと複雑さが増すにつれて、アプリケーションセキュリティもそれに追随してきました。しかし、複雑さが増したことで、セキュリティとコンプライアンスを手作業で管理することはますます難しくなっています。多くの企業で、競争力を維持するために必要なイノベーションのスピードに、手作業によるセキュリティ対策が追いつかなくなっています。
手作業のセキュリティ対策では、本番環境における新たな脅威やエラーの検出、修復に時間がかかる場合があります。その結果、システムが攻撃にさらされたり、コンプライアンス上の問題が発生したりする可能性があります。セキュリティ自動化システムは、開発ライフサイクル全体でポリシー、プロセス、アプリケーション、インフラストラクチャと連携し、日々の業務を効率化することで、検出と修復を大幅に強化できます。
セキュリティ侵害がもたらす甚大な影響は、自動化を導入すべき最も強い理由です。たとえばEquifaxの情報漏えいでは集団訴訟が起こり、同社は3億8,050万ドルの費用を負担しました。また、最近の報告によると、データ侵害の43%はアプリケーションの脆弱性に関連しています。直接的な金銭的損失だけでなく、セキュリティ侵害によって顧客の信頼が損なわれ、将来の損失につながることも少なくありません。
アプリケーション開発は劇的に変化しました。変化の速さに対応するため、企業は以下に示すオープンソース開発モデルへ移行しました。このモデルでは、社内で開発されるコードはわずか10~20%です。現在、ソフトウェアのコードベースの80~90%はオープンソースです。脆弱性の最大86%は、こうした間接依存関係に存在する可能性があります。

アプリケーション開発におけるコンテナやInfrastructure as Code(IaC)の利用拡大も、潜在的な脆弱性につながります。たとえば、インフラストラクチャの設定ミスが、重大なセキュリティ侵害を引き起こした事例もあります。
効果的なアプリケーションセキュリティの自動化により、開発者とセキュリティチームは迅速に対応し、コストのかかる侵害を防げます。
アプリケーションセキュリティ自動化のメリット
「セキュリティの自動化やツールを導入していなかったら、正直、悪夢のような状況になっていたでしょう。アプリケーションの依存関係や新しいコンテナへの対応に、常に追われていたはずです。自動化がなければ、規模を拡大できません。」
Alfonso Cabrera、Platform Engineeringディレクター(Red Ventures)
自動化によって、開発者とセキュリティチームは、より複雑な業務に集中できるようになります。セキュリティ自動化には、ほかにも次のようなメリットがあります。
検出速度の向上:セキュリティ自動化は、IT環境全体にわたる脅威検出のインテリジェンスを高め、認識された脅威に基づいてセキュリティ通知を発します。
インシデント対応の改善:AppSecチームは、セキュリティアラートへの対応に追われがちです。自動化されたセキュリティシステムは、対応すべき脅威通知に優先順位を付けます。さらに、一部の対応を自動化すれば、手作業を介さずに問題を修復できます。
セキュリティ指標の可視性向上:セキュリティ自動化ツールを使うと、セキュリティインシデントや脅威を追跡して報告できます。これらのレポートを活用すれば、AppSecチームは重要な領域に注力し、効果的なアプリケーションセキュリティポリシーを策定できます。
従来のセキュリティプロセスでは、インシデントが発生した後の事後分析として、手作業で対応するのが一般的です。以下の図は、従来の計画、ビルド、デプロイのモデルが、時間と開発者の労力を要するプロセスであることを示しています。
脆弱性やインシデントのない完璧なアプリケーションをデプロイできると期待するのは現実的ではありません。しかし、プロセスの早い段階でセキュリティスキャンを自動化し、潜在的な問題に先回りして対応する仕組みを導入すれば、インシデントの影響を軽減できます。
自動セキュリティスキャンは、開発のビルド段階で既知の脆弱性を特定し、問題を修正するコード修正案を提示することで、ソフトウェアのデプロイに対する信頼性を高めます。また、脆弱性の全容を把握し、悪用される可能性が低いものの優先順位を適切に下げられるよう支援します。これにより、従来のプロセスで発生していたアラートや事後分析を減らせます。
どのセキュリティプロセスを自動化できるか
セキュリティ自動化は、セキュリティフレームワークのなかでも、手間がかかり、かつ重要な業務の一部を担えます。自動化とセキュリティを組み合わせることで、大きな効果が得られる5つのプロセスをご紹介します。
監視と検出:企業は、IT環境のあらゆる側面を常に可視化する必要があります。セキュリティ監視ツールを使えば、環境の規模にかかわらず可視性を確保し、検出された脆弱性を統合的なビューに取り込んで継続的に監視できます。また、一部の自動化ツールは、本番環境のアプリケーション内にあるオープンソースコードを脆弱性データベースと照合し、新たに見つかった脆弱性をセキュリティチームに通知します。
脅威の調査:脆弱性が特定されたら、セキュリティチームは、影響を受けたマシンやノード、発生した被害、悪用された脆弱性を調べる必要があります。セキュリティ自動化を活用すれば、開発者やエンジニアが行うよりもはるかに短時間で、こうしたフォレンジック調査の多くを完了できます。たとえば、サービス拒否(DoS)が発生した場合、自動化されたセキュリティツールによって、悪用によるものか、突発的なHTTPフラッドによるものかを判断できます。この情報は、必要な防御策や修復策を決めるうえで役立ちます。
インシデント対応:脆弱性や攻撃が特定されると、AppSecチームは適切な対応を判断します。マルウェアの削除、サービスの無効化、新たなインシデントを防ぐためのパッチやアップグレードの適用など、多くの対応はセキュリティ自動化によって迅速に実行できます。たとえば、システムがマルウェアに感染した場合、自動化ツールでフォレンジックデータを取得し、感染したネットワークを無効化し、脆弱性スキャンを実行してほかの危険なシステムを特定し、対処が完了するまで隔離できます。
権限管理:ユーザーとその権限を管理することは、重要なセキュリティ業務です。しかし、ユーザー数が数千人に上ると、管理が追いつかなくなる可能性があります。そのような状況でユーザーや従業員を追加、変更、削除するには、何時間、あるいは何日もかかることがあります。ユーザーのプロビジョニングやデプロビジョニング、ホストの権限昇格の調査など、さまざまなユーザー関連業務を自動化することで、労力と時間を節約し、最終的にはリソースの削減につながります。
アプリケーションと事業の継続性:攻撃の最中や発生後も、システムとデータの運用を継続できるでしょうか。それとも、重大な損害や情報漏えいを防ぐために、一部の攻撃ではシステムを完全にオフラインにする必要があるでしょうか。セキュリティ自動化を使えば、ブルートフォース攻撃の際にIPブロックルールを適用して被害を防ぎ、ほかのIPアドレスを利用できます。また、重要なサーバーインスタンスを複製することで、重要なデータの可用性を確保できます。
自動化できないセキュリティプロセスとは
自動化されたセキュリティ技術が進歩しても、アプリケーションセキュリティの潜在的な脆弱性を検証したり、正確に見極めたりするには、人の関与が必要な要素が数多く残っています。では、セキュリティのどの部分を自動化できないのでしょうか。
次のプロセスは、状況に応じた高度な判断が求められるため、自動化できない専門知識を必要とします。
安全なソフトウェアの構築において、脅威モデリングは重要な要素です。認可やビジネスロジックの欠陥を考慮した、状況に応じた計画が必要なため、ソフトウェア環境全体を深く理解した経験豊富な社内テスターが求められます。脅威モデルによって、開発者とセキュリティチームは、構築前にアプリケーションのリスクを把握できます。ソフトウェアを構築するチームが適切に実施すれば、見つかったリスクだけにとどまらない価値が得られます。脅威モデリングはセキュリティ意識を高め、セキュリティに責任を持つ文化を育みます。このプロセスを自動化するツールもありますが、手作業で専門家主導のプロセスとして実施することを推奨します。
侵入テスト(ペネトレーションテスト)は、稼働中のシステムを標的とする制御されたサイバー攻撃を行い、攻撃者に悪用される可能性のある脆弱性を特定する手法です。脅威モデリングと同様に、ソフトウェア環境はそれぞれ異なり、攻撃される可能性のある箇所も固有です。そのため、侵入テストには、社内セキュリティエンジニアの事業に関する知識と想像力が必要です。侵入テスト自体は自動化できませんが、テスト担当者が発見事項を再現するテストを作成すれば、さらに効果を高められます。その後、同じ問題の再発を防ぐために、パイプラインの一部としてテストを実行します。
バグバウンティプログラムでは、独立したセキュリティ研究者が組織にバグ、セキュリティエクスプロイト、脆弱性を報告し、報酬や謝礼を受け取ります。こうしたプログラムは、悪意ある攻撃者に発見される前に未知の問題を特定する有効な手段です。バグバウンティの対象となるサイトやアプリケーションの多くは、プログラムの開始前に自動化システムによる検査を受けているため、バグバウンティを自動化することは一般にできません。
効果的なアプリケーションセキュリティプログラムは、自動化だけでは成り立ちません。前述のプロセスは自動化できませんが、アプリケーションの保護に役立ちます。手動と自動のアプリケーションセキュリティテストは、互いを補完します。
自動化された修復プロセス
自動化されたアプリケーションセキュリティツールは、既知の脆弱性を検出し、開発者に対応策を提案します。侵害では、システムへの侵入にアプリケーションレイヤーの脆弱性が悪用されることが多いため、こうした自動化された提案は、アプリケーションレイヤーのセキュリティ強化に不可欠です。セキュリティ自動化は、それだけにとどまりません。インシデント対応を自動化すれば、AppSecチームの作業負担をさらに軽減できます。
ビルド中に脆弱性へ先回りして対処するだけでなく、脆弱性修復プロセスを自動化する際には、ソフトウェア開発ライフサイクル(SDLC)で次の方法を適用できます。
最小限の修正案の提示:自動化されたアプリケーションセキュリティツールは、脆弱性を解消するために必要な最小限のアップグレードを特定し、提案された修正によってコードに問題が発生するリスクを開発者に知らせます。
プルリクエストでの修正:プルリクエストスキャンを設定すると、自動化されたセキュリティツールがプルリクエスト内にインシデント通知を追加し、自動修正を提示できます。開発者はワンクリックで必要なアップグレードやパッチを適用できます。
パッチ管理:インシデントへの対応としてアップグレードするとアプリケーションシステムに影響が出る場合、セキュリティ自動化によって必要なパッチを特定し、本番環境の安定性を保つために必要なロールバックを管理できます。
依存関係のアップグレード: セキュリティ自動化により、脆弱な依存関係や古くなった依存関係を検出して迅速に修正し、プロジェクトの安全性と最新の状態を維持できます。
セキュリティ自動化で成果をさらに高める
今日の開発プロセスと、ますます複雑化する脅威の状況を踏まえると、セキュリティの自動化は、ソフトウェア開発を成功させるうえで欠かせない実践的な取り組みです。アプリケーションセキュリティの自動化は、インシデント対応時間を大幅に短縮し、DevOpsチームが既知の脅威に先手を打てるようにします。自動化によって脅威にさらされる機会が減り、顧客情報をより確実に保護できるため、企業の評判と収益の向上につながります。
無料のオンラインコードチェッカーツールをお試しいただき、Snyk Codeがコードのセキュリティと品質に関する問題をどのように分析するかご確認ください。