ここから本文です

2018年のトレンドは、DevOpsにセキュリティを融合した「DevSecOps」

2/14(水) 10:50配信

ITmedia エンタープライズ

 2018年は、DevOpsがエンタープライズITの世界にも浸透する年になる――。前回の記事ではそんなお話をしました。ユーザー企業がDevOpsに対して持つ課題も、「迅速性の向上」といったふんわりとしたテーマから、迅速さを実現する際、具体的に障害となる事柄へと変わってきています。

DevSecOpsの全体像。デプロイの各段階において適したセキュリティツールを使う必要がある

 今回はその中でも「迅速なサービス展開を維持しつつ、セキュリティをどう担保するのか」という、システム開発プロセスにおけるDevOpsの課題について、考えていきましょう。

●セキュリティのテストは、開発段階で行う時代に?

 2018年が始まって間もないのですが、早くも「Meltdown」や「Spectre」といったCPU関連の脆弱性や、「コインチェック」の仮想通貨流出など、セキュリティに関する事件が世間を騒がせています。一概にこの全てが開発プロセスに依存した話ではありませんが、規模の大小を問わず、システムを取り扱う組織ではセキュリティを無視することはできません。

 ある程度の規模がある企業ならば、一連の開発プロセスが確立されており、各工程でセキュリティやコンプライアンスを徹底するための仕組みが取り入れられていることでしょう。しかし、DevOpsのように迅速な開発ワークフローを回そうとすると、既存の開発プロセスを大きく変える必要が出てきます。

 承認プロセスの簡略化や、テストの自動化などを徹底するのはもちろんのこと、特に大きな影響がある要素の1つに「セキュリティ監査」があります。

 一般的には、社内のセキュリティチームが、リリース前に数日かけてアプリケーションやプラットフォームの脆弱性を検出するテストを行うのですが、仮に最終段階で修正が発生すると、手戻りによるスケジュール遅延が発生し、最終的にはコストも増えてしまいます。

 こうした問題を防ぐため、DevOpsでは、開発プロセスのより早い段階で強制的にセキュリティテストを行うことが求められます。このように、後工程で行っていたプロセスを、開発工程に組み込む考え方を「シフトレフト(Shift Left)」といいます。

 シフトレフトを実現するためには、各工程の作業だけではなく、それに関わるメンバーの役割も大きく変える必要があります。

 これまではアプリケーションの開発が終わってから、セキュリティチームに引き渡し、彼らがセキュリティに関する監査を全て行うという分担が行われていました。しかし、開発過程でセキュリティを万全にするならば、「開発や運用に関わる全てのエンジニアが、セキュリティに責任を持つ」ということを前提として、開発を進める必要があります。

●セキュリティもカバーした開発「DevSecOps」

 これはつまり、企業のセキュリティポリシーとして対応すべき要求(要件)を、全てコードレベルで実装することが求められるということです。DevOpsの開発ワークフローの中で開発者と運用者が、前工程で脆弱性を動的に検出し、修正コストを下げる。こうした取り組みは「DevSecOps」と呼ばれ、2018年にエンタープライズが取り組むべきDevOpsの活動として注目されています。

 DevSecOpsにおける重要なポイントは、「セキュリティ監査の自動化」と「DevOpsツールチェーンの連携」です。「セキュリティ監査の自動化」という観点では、既に数多くのセキュリティツールが存在しますが、以下の2つに大別できます。

静的セキュリティ診断:SAST(Static Application Security Testing)

 コード内部にある脆弱性を検出するための診断します。アプリケーションコードだけではなく、Dockerイメージ内のアプリケーションに対して、脆弱性を検出してくれるツールも出ています。

動的セキュリティ診断:DAST(Dynamic Application Security Testing)

 クロスサイトスクリプティング(XSS)や認証の脆弱性など、稼働したアプリケーションにさまざまな入力を与え、その出力結果を元に脆弱性の有無を診断します。

 これらをDevOpsの開発ワークフローに動的に組み込む――つまり「DevOpsツールチェーンの連携」を行うことで、初めてDevSecOpsが実装できたことになります。

 DevSecOpsでは、1つのセキュリティツールを導入すれば、全てをカバーできるわけではありません。そのため、デプロイの各段階において、DevOpsツールチェーンが生み出す成果物に適したセキュリティツールの連携が欠かせません。

 例えば、Gitにソースをコミットした時点でSASTが行われ、CIツールでテスト環境にデプロイされた時点で、DASTがテストを行うといったイメージです。

 これらをいかに企業の開発ワークフローに合わせて構築できるのかが、これからの開発における重要なポイントとなります。セキュリティチームとも連携し、開発者と運用者が協力し合って開発ワークフローを整えることが、エンタープライズITのDevOpsにおける2018年の課題といえるでしょう。

 次回はDevOpsを支えるためのツール選定について、具体的に考えていきます。お楽しみに!