連載
» 2018年09月19日 05時00分 公開

セキュリティ・アディッショナルタイム(26):さまざまなツールとAI/自動化がDevSecOpsの手助けに――「開発者はセキュリティにもオーナーシップを」

「ガートナー セキュリティ&リスク・マネジメント サミット 2018」に合わせて来日したガートナーのリサーチ・ディレクター、マーク・ホーヴァス氏に、安全なアプリケーション開発を実現するコツを尋ねた。

[高橋睦美,@IT]

 デジタルトランスフォーメーションが加速する中、価値を生み出し、差別化を図る源泉力となるのはソフトウェアの力だ。だが、そのソフトウェアに脆弱(ぜいじゃく)性があれば、外部からの攻撃を受けて被害に遭うだけではなく、自社の顧客にも損害を与えかねない。そんな事態を避けるには、どういった対策が必要だろうか。

 「セキュリティ担当者のみならず、開発者も含めてどんな取り組みが求められるか」について、2018年7月24〜26日に開催された「ガートナー セキュリティ&リスク・マネジメント サミット 2018」に合わせて来日したガートナーのリサーチ・ディレクター、マーク・ホーヴァス氏に聞いた。

開発の自由度を享受するなら、セキュリティという責任も伴う

ガートナーのリサーチ・ディレクター、マーク・ホーヴァス氏 ガートナーのリサーチ・ディレクター、マーク・ホーヴァス氏

――セキュアな開発には何が必要となるのでしょうか?

ホーヴァス氏 3つの原則をお勧めしています。1つ目は、開発段階からコードをテストし、適切に修正すること。2つ目はセキュリティに関するナレッジを持った人が開発者と近い距離にあること。そして最後は、開発者に理解できる言葉でセキュリティを説明することです。

 開発者はコードのライフサイクルの最初から最後まで「オーナー」であるべきですし、セキュリティもその責任範囲に含まれるべきです。「一通り開発が終われば運用やQA、セキュリティ担当者に投げてしまい、修正もそちら任せ」というのが昔の開発スタイルでしたが、今は違います。開発者がセキュリティについてもオーナーシップを持つべきです。

 それには、開発者側だけではなく、セキュリティ担当者側も変わらなければいけません。セキュリティ担当者の役割は、問題があるからといって何かを止めさせるのではなく、開発者がセキュリティを推進できるようサポートすることです。それには、セキュリティ業界の専門用語ではなく、開発者にも分かる言葉を使ってコミュニケーションを取らなければいけません。

 一方で、開発者も「自分の好きなように開発できる」という自由を享受するだけではなく、責任も伴わなければいけません。ですから彼らも、セキュリティや運用に関する言葉を理解していく必要があるでしょう。DevSecOpsの取り組みがうまくいっている企業では、こうした言葉や役割がうまく一つに統合されています。

――開発には、同時に「スピード」が求められます。セキュリティと両立させるのは難しいのではないでしょうか。

ホーヴァス氏 やり方はいろいろありますが、開発スピードとの両立を図るには、まずは可能な限り自動化することが不可欠です。テストを行い、そこで見つかった問題を修正するプロセスを人手だけに頼るのは困難です。また、アプリケーション側にインテリジェンスを組み込み、攻撃を受けたら、人が介入しなくてもダイナミックに保護機能を実装するといったことを自動的に実現する必要もあるでしょう。

 もう一つは、開発の前の段階、設計段階からセキュリティについて考慮し、セキュリティを組み込んだアーキテクチャを実現することです。初めからセキュリティを組み入れることで、開発者の負担を減らすことができるでしょう。

――早ければ早いほどいいということでしょうか?

ホーヴァス氏 その通りです。品質は高まる一方でコストはより少なく、修正もより迅速に行えます。例えば、IDEにセキュリティ上の脆弱性やバグを洗い出すツールを組み込み、スペルチェックと同じようにチェックし、問題を見つけたら「別のライブラリを使うべきです」と開発中に提案するようにすれば、修正は数分程度ですみます。けれど、この段階で脆弱性を修正せずに運用に入ってから直すとなれば、コストは25倍に膨らむでしょう。

――こうした作業の一部は、AIを活用すれば楽になりますか?

ホーヴァス氏 幾つかAIや機械学習を適用できる領域があるでしょう。例えば、コードの脆弱性スキャンを行うツールを使えば作業をある程度自動化できますが、中には誤検知やミスもあります。AIでそうした誤検知を発見し、補うことも可能でしょう。

1社だけでは完結しないソフトウェア開発、どうセキュリティを担保する?

――ソフトウェア開発を外注している場合、サプライチェーン全体にまたがってセキュリティを担保するにはどうしたらいいのでしょうか?

ホーヴァス氏 1社で全てを開発できればいいですが、そうもいかないことの方が多いですよね。開発の各フェーズで有効なツールを活用することをお勧めしています。まずは静的解析ツール(SAST)、次はアプリケーションの稼働中に行う動的解析ツール(DAST)、それから、既知の脆弱性や問題を洗い出すインタラクティブ解析の3つを、開発ライフサイクルの初期段階から活用するのがお勧めです。

 開発の一部を外注するのであれば、外注先独自のチェックだけでなく、サードパーティーのツールによる解析結果を証拠として添えて、「要求するレベルを満たしているか』を確認すべきでしょう。

――コードの中に組み入れたオープンソースソフトウェアやオープンなコンポーネントに脆弱性が見つかったときは、どうすべきでしょうか?

ホーヴァス氏 オープンソースソフトウェアになりすましたマルウェアや、サードパーティー製のプロプライエタリなコードが含まれていないかをスキャンするソフトウェアコンポジション分析が重要です。オープンソースソフトウェアは素晴らしいものですが、それでもスキャンは必須です。

 「見つかった脆弱性を誰がどのように修正すべきか」は、深刻度や影響範囲によって異なってくるでしょう。オリジナルのコードを書いた人が修正すべきでしょうが、必ずしもコミュニティー側にセキュリティの専門知識を持った人がいるとは限りません。時にはハッカーコミュニティーが修正することもあり得るでしょう。

 理想を言えば、コードをチェックインする前には静的解析を行うべきでしょうが、解析結果を読み解き、適切に修正するには相応の知識も必要になります。

――ITシステムですらこうした状況ですが、IoTや組み込み機器の世界では開発者とセキュリティの距離はまだ遠いでしょうか?

ホーヴァス氏 業界によります。ヘルスケア・医療機器業界では当局が厳しい法規制を定めており、比較的セキュリティが確保できているといえます。一方、それ以外のIoTデバイスの領域では、まだまだやるべきことが山積みの状態ですね。市場に製品を出すことを優先し、セキュリティが後回しにされるケースは少なくありません。けれど、問題の影響を受けた消費者の苦情が大きくなれば、セキュリティについての意識も徐々に高まっていくと思います。

――最後に、セキュアな開発プロセスを実現するために、一言アドバイスをお願いします。

ホーヴァス氏 DevOpsという新しいモデルは、開発者が作りたいものを作れる自由を与えてくれますが、同時に責任も伴います。ただ、25年前の皆さんの親の世代とは異なり、今は多くの成熟したツールがあるため、煩雑な作業の多くを自動化できます。コードのオーナーたれ、そしてセキュリティに関してもより良い仕事をしてください。過去に比べれば、それは簡単なはずです。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。