コードの安全性・安定性を高める開発サイクル ~テスト管理の効率を上げ、脆弱性診断を自動で行う~

第1回DevOpsからDevSecOpsへの近道(前編)

はじめに

連載業務を改善する情報共有の仕掛け第11回第12回では、Alfrescoによる「業務自動化プラットフォーム」についてお話をしました。Alfresco Content Service Version 6から、Docker、Kubernetesに対応することになり、コンテナ技術を使った自動デプロイは、すでに身近に感じています。

早期リリースが注目される中で、ソフトウェアの品質やセキュリティ面への対応も重要になってきたと感じます。海外ではDevOpsからDevSecOpsに移行しているチームが増加しており、日本においても注目が集まっています。DevOpsについては、⁠業務を改善する情報共有の仕掛け」第1回でお話をしましたので、これまでの連載を受けつつ、新タイトルで気持ちも新たに安全性・安定性を加えた開発サイクルについて考えていきます。今回は「DevSecOps」を中心にお話をします。

DevSecOpsとは

DevSecOpsとは、その言葉どおり、ソフトウェアもしくはITサービスの開発から運用をするためのDevOpsプロセスにセキュリティ対策を組み込んだものです。ひと口にセキュリティ対策と言っても、図1のように、その範囲は広範囲におよびます。

図1 DevSecOpsサイクルの概要
図1 DevSecOpsサイクルの概要

DevSecOps実現に必要な要件

DevSecOps実現に必要な要件は、いくつかありますが、ここでは5つに絞って紹介します。

  1. ソースコードのセキュリティの確保ができること
  2. アプリケーションのセキュリティの確保ができること
  3. 脆弱性検知の精度が高いこと
  4. オーバーヘッドによる生産性低下を回避すること
  5. 継続的な対応ができること

1.ソースコードのセキュリティの確保ができること

いわゆるソースコード診断と呼ばれる静的コード解析(SAST)に該当する部分です。ソフトウェア開発では、チームが作成したカスタムコードのほかにオープンソースのコンポーネントを組み合わせてソフトウェアを完成させることが一般的になっているため、その両方に対応しなければなりません。

完成されたソフトウェアコードの約80%がオープンソースのコンポーネントを使っているという報告もされているため、少なくともオープンソースコンポーネントの脆弱性、オープンソースライセンスの法的チェックを行うソフトウェアコンポジション解析(SCA)も併せてDevSecOps達成には必要であると言えます。

2.アプリケーションのセキュリティの確保ができること

こちらはアプリケーション診断と呼ばれる動的コード解析(DAST)に該当する部分です。実行しているソフトウェアに対して、SQLインジェクション、クロスサイトスクリプティング(XSS⁠⁠、コマンドインジェクションなど、あらゆる手法を使って実際に攻撃を行い、セキュリティの確保を確認します。

3. 脆弱性の検出精度が高いこと

多くの時間をかけても脆弱性が完全になくなることは困難です。重要なのは脅威の発見から対処までのスピードと誤検知の回避です。脆弱性の検出(脅威の発見)から対処については、DevOpsのリリースサイクルによって対処したソフトウェアを早期にリリースできますが、誤検知については、誤検知であることの証明をしなければなりません。この証明のための作業は、エンジニアの工数を浪費するだけでなく、精神的な疲弊にもつながる可能性が高いです。DevSecOpsにおける検出精度は、リリースサイクルが劇的に短縮されるというDevOpsの利点を損なわずに脆弱性を検知させるという点が重要だと考えています。

4.オーバーヘッドによる生産低下を回避すること

前に述べた内容と同じになってしまうかもしれませんが、DevOpsはソフトウェアライフサイクルを効率化し、ビジネス価値を迅速に提供するものです。したがって、セキュリティを意識するあまり、これを損なうことは適切ではありません。多大なオーバーヘッドが発生するプロセスがあれば、ツールによる連携、ルール・ポリシーの標準化、テストの自動化によってオーバーヘッドを排除し、生産性の低下を回避することが大切です。

5. 継続的な対応ができること

例として、開発チームと品質保証チーム、もしくはセキュリティチームとのフィードバックループを円滑に進めることが大切です。そのため、継続的インテグレーション(CI⁠⁠/継続的デリバリ(CD)は、DevOpsならびにDevSecOpsには必須となりますし、各チームの役割を明確にするしくみ作りも大切な要素となります。


この5つの要件をすべて満たすには時間とコスト、そして労力が必要になりますし、すでに利用しているツールも含めて、さまざまなツールと統合する必要もあります。チーム間の調整もたいへんですので開発チーム側で対処できるソースコード診断から進めていくのがよいでしょう。後編では、このソースコード診断に役立つツールを紹介します。

米国Atlassianから、2年連続で
「Top new business APAC」を受賞。
Atlassianセールスパートナーとして
アジアパシフィックで1位の証
米国Atlassianから、2年連続で「Top new business APAC」を受賞。Atlassianセールスパートナーとしてアジアパシフィックで1位の証

日本だけでなく、アジア圏でもアトラシアン製品販売のトップエキスパートであるリックソフトのWebサイトでは、各アトラシアン製品の体験版を提供しているほか、アトラシアン製品専用のコミュニティも運営しています。まずはアクセスしてみては!

Software Design

本誌最新号をチェック!
Software Design 2022年9月号

2022年8月18日発売
B5判/192ページ
定価1,342円
(本体1,220円+税10%)

  • 第1特集
    MySQL アプリ開発者の必修5科目
    不意なトラブルに困らないためのRDB基礎知識
  • 第2特集
    「知りたい」「使いたい」「発信したい」をかなえる
    OSSソースコードリーディングのススメ
  • 特別企画
    企業のシステムを支えるOSとエコシステムの全貌
    [特別企画]Red Hat Enterprise Linux 9最新ガイド
  • 短期連載
    今さら聞けないSSH
    [前編]リモートログインとコマンドの実行
  • 短期連載
    MySQLで学ぶ文字コード
    [最終回]文字コードのハマりどころTips集
  • 短期連載
    新生「Ansible」徹底解説
    [4]Playbookの実行環境(基礎編)

おすすめ記事

記事・ニュース一覧