Skip to main content

次世代の開発を安全に:Trust BankとTASConnectから学ぶ教訓

著者
Headshot of Gerald Crescione

Gerald Crescione

blog feature snyk iac cli enhancements

2024年6月5日

0 分で読めます

現在、平均的なアプリケーションには数千もの構成要素が含まれています。組織はコンテナやマイクロサービスを使ったマルチクラウド環境にアプリケーションをデプロイし、社内チームが作成したコード、AIが生成したコード、サードパーティが提供するコードを組み合わせて利用しています。

セキュリティチームは、こうした複雑なアプリケーションを安全に保つという大きな課題に直面しています。特に、ソフトウェアサプライチェーン攻撃が増加するなか、その難しさは増しています。AI生成コードなどの新たな標準的開発手法にセキュリティを組み込むと同時に、開発スピードやビジネスの成功も考慮しなければなりません。

SnykはBlack Hat Asiaでセッションを主催し、こうした新たな複雑さや課題に対処するためのベストプラクティスを掘り下げました。このセッションには、業界の専門家であるTrust Bank SingaporeのCISO、Jerome Walter氏と、TASConnect SingaporeのCTO、Madhi Periannan氏が登壇しました。

次世代ソフトウェア開発におけるセキュリティ課題に直面し、それを乗り越えた登壇者たちの実体験をご紹介します。

次世代ソフトウェア開発とは何か、AppSecにどのような影響を与えるのか

登壇者によると、「次世代」のソフトウェア開発には、主に3つの特徴があります。

複雑なアーキテクチャ

平均的なアプリケーションには、マイクロサービスなど複数のアーキテクチャ要素が含まれ、多数の外部ライブラリやSaaSプラットフォームと連携しています。開発チームは、迅速かつアジャイルなアプローチでこうしたアプリケーションを構築します。この複雑さにより、セキュリティチームが今日のアプリケーションのリスクを軽減することは、より困難になっています。Walter氏は次のように述べています。「今日のソフトウェアは、外部ライブラリやSaaSプラットフォームとの連携で構成されており、私たちがすべてを管理できるわけではありません。……そのため、ソフトウェアセキュリティに取り組むには、インフラストラクチャを使いこなし、SaaSやサードパーティ製ソフトウェアを理解する必要があります。」

急速に登場するAIツール

今日の開発チームは、GitHub CopilotやGoogle Geminiなどの生成AIツールを使って、コードをより迅速に作成しています。このスピードはビジネスの俊敏性を高める一方で、安全なコードも安全でないコードも、かつてない速さでパイプラインに流入することを意味します。

複数のクラウド環境や地域にまたがる展開

さらに、次世代ソフトウェアは通常マルチクラウド環境で稼働し、世界中の従業員や顧客がアクセスします。Periannan氏は次のように述べています。「今日のアプリケーションは、複数のクラウドや国々にデプロイする必要があります。そこに複雑さが生じます。異なる地域にまたがるセキュリティを管理するには、より優れたツールが必要です。」

次世代アプリケーションのセキュリティに向けて、人・プロセス・ツールのバランスを取る

こうした課題への対応には、適切な人材、プロセス、ツールのバランスが欠かせません。その一環として、開発チームとセキュリティチームが責任を共有するDevSecOpsのアプローチがあります。開発チームが複雑なライフサイクル全体で問題を修正できるようにすることで、本番環境に持ち込まれるリスクを最小限に抑えられます。Walter氏とPeriannan氏は、セキュリティに対する当事者意識を育むための提案をいくつか紹介しました。

事後対応ではなく、プロアクティブに取り組む

登壇者によると、セキュリティは事後対応ではなく、プロアクティブに取り組む必要があります。Walter氏は、これはセキュリティを1日で完了する取り組みではなく、継続的な道のりとして捉えることだと説明しました。このプロアクティブなセキュリティへの取り組みを始めるには、「Snykのように、即座にフィードバックと分析を提供するツールを導入する」のが最適だと述べています。

こうしたツールは、適切なレベルのフィードバックと修正ガイダンスを提供し、開発者が問題を修正できるよう支援します。場合によっては、パッチのリリースだけではセキュリティ上の問題を解決できません。そのため、リスクを軽減するには、開発者がアーキテクチャを見直し、再設計するのが最善の場合もあります。コードを最もよく理解している開発チームなら、最適な修正を実装できます。

このプロアクティブなアプローチは、セキュリティチームと開発チームの関係改善にもつながります。Periannan氏は次のように説明しています。「適切なツールと脅威モデルがあれば、パニックに陥ったり、『火消し』に追われたりせずに済みます。これは開発者にとって望ましい状況ではありません。」

プロアクティブに取り組む方法として、ほかにも次のようなものがあります。

  • 脅威モデリングを使って既存の脆弱性が及ぼす潜在的な影響を把握し、リスクの優先順位付けを改善する

  • ソフトウェア開発ライフサイクルの各段階における修正方法を特定する

  • パイプラインの早い段階からセキュリティ・バイ・デザインを重視するシフトレフトの文化を育む

開発者を第一に考える

Walter氏は、開発者の仕事をより簡単にすることの重要性も強調しました。「開発者は、パスワードのローテーションやパッチの適用など、セキュリティ運用に膨大な時間を費やしています。セキュリティ衛生管理の一部を自動化し、ビジネスにより多くの時間を使えるよう支援したいと考えています。」

開発者の負担を軽減する方法には、次のようなものがあります。

  • パスワードのローテーションなど、定型作業をできる限り自動化する

  • 定期的なセキュリティトレーニングや修正ガイダンスなど、開発者が成果を上げるために必要な情報を提供する

  • 時間をかけてリスクを正確に優先順位付けすることで、開発者は最も重要な修正に集中できる

開発者を第一に考えることは、開発チームとセキュリティチームの間にある摩擦に直接対処することも意味します。両チームの関係を改善するには、対話を始め、開発者が抱える課題や日々のワークフローなどを深く理解することが大切です。また、セキュリティチームが開発者の時間を大切にし、より良いアプローチを積極的に模索していることを示す必要もあります。重要なアプローチのひとつは、脆弱性の長いリストを開発者に送るのではなく、コンテキストや悪用可能性を踏まえた正確なリスクの優先順位付けに重点を置くようAppSecを進化させることです。

複雑なソフトウェア環境でAppSecの成果を測定する

セキュリティを成功させるには、適切な指標を追跡することも重要です。Walter氏とPeriannan氏は、まず次の5つを測定することを推奨しています。

  1. SDLCに関わる全員がトレーニングを確実に修了できるよう、受講状況を追跡するセキュリティトレーニングの実施

  2. ファーストパーティコード、オープンソースコンポーネント、Infrastructure as Code、コンテナなど、開発の各レイヤーにおけるセキュリティテストのカバレッジ。パイプライン全体で開発機能のカバー範囲がどれだけ拡大しているかを確認できます。

  3. 重大度がCriticalまたはHighの脆弱性をテストし、組織が時間の経過とともに脆弱性を削減できているかを評価する

  4. パッチ適用までの時間・修正までの時間を測定し、プログラムの効率が時間とともに向上しているかを確認する

  5. セキュリティ自動化の数を測定し、セキュリティチームがより迅速で効果的なアプローチを目指していることを示す

これらの指標はセキュリティに関するものですが、ビジネスKPIにも結び付けられます。セキュリティとビジネス目標のつながりは、意外に思えることもあります。たとえば、金融業界のあるSnykのお客様は、Net Promoter Score(NPS)の向上を目指すにあたり、Snykのセキュリティツールを活用しました。Snykによって脆弱性の検出と修正が効率化され、チームは短いメンテナンス期間内にパッチをデプロイできるようになり、NPSの向上につながりました。

Walter氏はさらに次のように説明しています。「修正までの時間は、ソフトウェアを提供する能力を左右する重要な要素です。新機能を提供するビジネスの能力にも直結します。ソフトウェア開発のアジリティが高まれば、パッチ適用のアジリティも高まります。明日までに新機能をデプロイできるなら、明日までにパッチを適用できます。スピードを上げることがセキュリティとビジネスの双方にとって有益だと理解してもらうことは、ビジネス側と建設的に話し合ううえで非常に効果的です。」

Black Hat Asiaのセッション全編をご覧ください

進化するサイバー脅威や技術の進歩に対応し、アプリケーションセキュリティを強化するには、プロアクティブで開発者に配慮した実践に注力する必要があります。登壇者によると、そのためにはまず、いくつかの考え方を変えることが重要です。

まず、チームはセキュリティを継続的な取り組みとして捉える必要があります。脅威モデリングなどのベストプラクティスを一度実施して終わりにするのではなく、セキュリティコントロールを継続的に実施し、監視しなければなりません。

また、セキュリティチームは、開発者とセキュリティの関係に対する考え方を変える必要があります。コードやその他のアプリケーション構成要素を最もよく理解している開発チームは、問題を修正するための革新的なアイデアや方法を持っていることがよくあります。

次世代ソフトウェア開発において、セキュリティチームと開発チームの強固な関係を築く方法について詳しくは、セッション「次世代ソフトウェア開発のセキュリティ確保:課題と解決策」をご覧ください。

Securing the Next-Gen Software Development: Challenges & Solutions