ソフトウェア・インテグリティ

 

アプリケーション・セキュリティ・プログラムの7つの基本

私は最近、中規模の通信ソフトウェア会社で働いている私の友人に、アプリケーション・セキュリティ・プログラムの最初に取り組むべきことを説明しました。しかし、高度なスキルを持つ技術スタッフがいる中小企業の場合、セキュアなソフトウェア開発ライフサイクル(SSDLC)を実装することの価値を理解してすぐに把握するのは難しい場合があります。

開発者やアーキテクトの作業を批評することは、厄介な問題になるかもしれません。 忙しい人々、つまり、開発しているソフトウェアがセキュアに構築されていることを確認するための支援の恩恵を受ける忙しい人々であることを確認した上で、本題に移りましょう。 ソフトウェアをセキュアにするためのアプリケーション・セキュリティの7つの基本を見ていくことにします。

1.アプリケーション・セキュリティを誰かの仕事にする

私は、セキュリティと同じくらい重要なことをうまくやりたいのなら、それを行うには誰かの仕事が必要だと固く信じています。BSIMMに参加しているすべての企業には、アプリケーションのセキュリティを担当する専門家または専門チームがいます。組織の規模と利用可能な予算に応じて、これはパートタイムの役割からいくつかの専門チームまで何でもかまいません。

2.小さく始めて、大きく育てる

これは非常に重要です。短期と長期の両方の計画がすべてです。組織全体をすぐに動かそうとしないでください。アプリケーションに優先順位を付け(最初に非常に重要なアプリケーションを対象とします)、測定可能な目標を設定し、実際のアクティビティをパイロットで検証して結果を確認します。これにより、アプリケーション・セキュリティの価値が共有され、早期の投資収益率が明らかとなり、利害関係者の賛同が得やすくなるからです。

価値のある目標には、リスクの軽減が含まれます。いくつかの脆弱性を見つけるだけでは十分ではありません。真の改善を示すためには、それらも修正する必要があります。ただし、1つのアプリケーションを保護するための手順を実行するだけでは、おそらく十分ではないことを覚えておく必要もあります。長期的には、アプリケーション・ポートフォリオ全体に対するリスクベースのアプローチが必要になります。労力がかかりすぎると拡張性が低下するため、自動化する領域に注意し、どこまで詳細に扱うかについて現実的に考えてください。

3.SDLC全体を見渡す

優れたアプリケーション・セキュリティは、アプリケーションの全体的な特性のことです。残念ながら、それをすべて行うことができる魔法のツールはありません。品質保証の他の分野と同様に、最善のアプローチは、ソフトウェア開発ライフサイクル(SDLC)の各段階で各々のアクティビティを組み合わせることです。そして、最初に考えなければならないのは以下の点です。

  • 設計フェーズ(アーキテクチャ分析を実施)
  • 開発フェーズ(セキュア・コードレビューを実施)
  • デプロイ・フェーズ(動的アプリケーション・セキュリティ・テストを実施)

一般に、SDLCの後半で(ペネトレーション・テストなどによって)問題を特定することは簡単ですが、この段階では問題を修正するためのコストも高くなることに注意が必要です。

したがって、できるだけ早い機会に問題を特定することを目指したわけです。早期発見により、問題を修正するためのコストを低減することが可能となり、開発者や他の実装チームへの開発遅延のプレッシャーが軽減されます。私の仕事の最も満足のいく部分の1つは、問題になる前に問題を見つけることです(これは、アーキテクチャが固まる前にアーキテクトと会話することを意味します)。

4.組織の持っている強みを活かす

アプリケーションセキュリティプログラムを構築する正しい方法は1つではありません。最も効率的な方法は、組織内の既存のプロセスと機能を可能な限り活用することです。あなたの組織はSDLC品質ゲートを強力に実施していますか?それらにいくつかのアプリケーションセキュリティアクティビティを追加します。開発はCIツールセットを中心に展開していますか?いくつかのセキュリティツールをそれに統合します。開発チームはJIRAチケットを介して時間を管理していますか?セキュリティバグのためにJIRAチケットを発行してください。

5.“それ”について叫ぶ

アプリケーションのセキュリティはとても面白いはずです。
そのことを周囲に理解してもらうために、できるだけ多くの機会を利用しましょう。利害関係者を教育することは重要ですし、本当に彼らの興味を引くことができれば、彼らは自分自身で学習し始め、アプリケーション・セキュリティの重要さを心から受け入れてくれるかもしれません。 もちろん、アプリケーションの中に脆弱性を発見したことは誇ってもいいでしょう。ただし、脆弱性を作り込んでしまった人たちを傷つけないように注意してください。

6.実現できる人になろう

アプリケーションのセキュリティは前向きに捉える必要があります。 そのために、発見した問題を強調するだけでなく、解決策を提案してください。 組織や開発言語やフレームワークをよく知っている場合は、開発チームの時間を節約するためのより良い方法を知っているなら、利害関係者に、より効率的で効果的なプロセスを提案し、将来同様の問題を回避する方法を彼らが理解していることを確認するのが良いでしょう。

7.ナレッジ・ベースの構築

アプリケーション開発に携わっていると、多くの興味深いバグや欠陥があり、それらのいくつかに複数回遭遇する可能性があります。 何かを修正したら、次回より簡単に修正できるように記録を残しましょう。 認証システムを正しく取得するために多くの時間を費やす場合は、組織内での再利用を奨励してください。 オンラインで優れたリソースを見つけた場合は、他の人も読めるように、ブックマークを共有しましょう。

まとめ

アプリケーション・セキュリティ・プログラムの成長は興味深い挑戦です。慎重な計画と少しの努力で、価値のある結果を達成できるのですから。それを誰かの仕事にするという最初のハードルを克服し、一歩ずつ前に進めていくことができれば、価値のある機能、場合によっては競合他社との差別化に成功することになるわけです。

しかし、一朝一夕に実現できるわけではないことを忘れないでください。

*元の記事は Stephen Gardner によって2016年2月2日に投稿されました。

 

この著者によるその他の情報