定義

DevOps(「development」と「operations」の混成語)とは、従来のソフトウェア開発プロセスに比べて、より迅速なアプリケーションやサービスのデリバリーを実現するための組織能力の向上を目指したプラクティスとツールの組み合わせです。このようなスピードを実現することで、顧客サービスと市場での競争力の向上が可能になります。

DevOps とは端的には、従来のサイロ化された開発チームと運用チームの壁を取り除くことです。DevOps モデルでは、開発・テストからデプロイや運用まで、ソフトウェア・アプリケーションのライフサイクル全体を通じて開発チームと運用チームが協働します。

DevOps と DevSecOps の違いは何か?

DevOps のセキュリティ(DevSecOps という呼ばれ方が一般的)とは、戦略、ポリシー、プロセス、テクノロジーにより DevOps 環境全体を保護する統制および実践のことを指します。DevSecOps の原理は、方向付け、設計、構築、テスト、リリース、サポート、保守その他を含む DevOps ライフサイクル全体にセキュリティを組み込むというものです。

従来セキュリティは、システムの設計が完了した後の工程とされていたことが多く、セキュリティの欠陥の特定と修正が可能になるのはその後からリリースの前まででした。DevOps モデルの変化により、開発サイクルの後工程で実施される従来のセキュリティ・プラクティスは反復型のソフトウェア開発の設計およびリリースには遅すぎて適さなくなっています。このように、従来のセキュリティ手法はアプリケーションおよびサービスのスピーディーなデリバリーの阻害要因になる可能性があります。

DevSecOps では、セキュリティは DevOps チーム全員の注目の対象になります。DevSecOps には、安全を損なわずにセキュリティに関する意思決定をスピーディーかつ大規模に実装するという目標があります。DevSecOps ではリリース・エンジニアとセキュリティ・チームとの継続的で柔軟な協調が必要です。「迅速なデリバリー」と「セキュアなコードの構築」という概念を1つの効率化されたプロセスに統合します。セキュリティ・テストはデリバリー・サイクルを停滞させることなく反復的に行われます。重大なセキュリティの問題は、発覚した時点で、脅威や侵害が発生する前に対処します。


DevOps の利点は何か?

  • 迅速なデリバリ。リリースのペースを早めることにより、製品の改善を迅速化し、競争優位性を築くことができます。
  • 信頼性。継続的インテグレーション/継続的デリバリーなどの DevOps プラクティスでは、アプリケーションの更新プログラムやインフラストラクチャの変更の品質を確保できるため、よりスピーディーで信頼性の高いデリバリーを実現するとともに、エンドユーザーの最適な操作性を維持することが可能です。
  • コラボレーションの向上。コミュニケーションとコラボレーションは、DevOps のプラクティスの要です。ソフトウェア・デリバリー・プロセスの自動化により、開発と運用のワークフローと責任が物理的に統合され、コラボレーションが確立されます。開発者、運用、さらにはマーケティングや営業などの他のチームとの間でのコミュニケーション
  • セキュリティ。自動化された統合型セキュリティ・テスト・ツールを用いることにより、セキュリティを低下させることなく DevOps モデルを導入できます。

DevSecOps の現状は?

効果的な DevSecOps プログラムを構成する戦略、実践、ツールを明らかにする

DevOps の課題は何か?

DevOps の実装における課題には、多様な開発およびテスト技術の統合、開発パイプラインを強化して負荷の増加で中断しない、堅牢なセキュリティテストの実施、などがあります。

開発環境は多数のフレームワーク、言語、アーキテクチャで構成されており、それぞれが独自の方法で動作します。これらすべての動作を互いに整合させることは困難な場合があります。

自動化は戦略、ポリシー、SLA、リスク指標を標準化して一元化するための鍵ですが、これらはすべて、脆弱なパイプラインに対して破損または停止をもたらす危険性があります。一部が停止したり、自動化が失敗したり、アクションの続行をブロックしたりすると、すべてを停止して問題と解決策を検索してから続行する必要があります。トリガーされたすべてのイベントとそれらを制御するポリシーを管理することは、ブレーキをかけた状態で作業するようなものなのです。

AppSec のリスクはパイプラインのあらゆる場所に入り込む可能性があるため、多様なフレームワーク、言語、アーキテクチャ全体のリスクを可視化することは困難です。それぞれに癖があり、これらすべてのツールを管理するのは複雑になる可能性があります。


DevOps ではどのようなツールが使用されるか?

DevOps プラクティスでは、顧客のための迅速で信頼性の高いデプロイとイノベーションを支援する効果的なツールを利用します。こうしたツールで手動タスクを自動化することにより、複雑な環境の大規模な管理を支援し、エンジニアがスピーディーな DevOps のペースの制御を維持できるようにする必要があります。

DevOps のワークフローは以下フェーズで構成されます。

  • 開発における次のイテレーションの計画
  • コードの作成
  • 本番環境でのテストとデプロイ
  • 製品アップデートのデリバリー
  • ソフトウェア・パフォーマンスの監視とロギング
  • 顧客フィードバックの収集

計画。DevOps チームがシームレスで効率的なプロジェクト管理サイクルを実現し、タイムリーな製品提供を確実に行うには、計画とタスク追跡のツールが必要です。この段階でよく使用されるツールには、Confluence や Jira などがあります。

構築とデリバリー。開発者は開発環境とテスト環境を速やかに展開する必要があり、何か問題が発生した場合、修復のために長い時間待つことはできません。コンテナ化によって大きなアプリケーションを小さな個別の部品に分割できるため、アプリケーション全体を再度デプロイすることなく、それら個別の部品を更新できます。影響を受けるコンテナを単に置き換えるか更新することができるのです。コンテナ化に移行することで、DevOps は開発サイクルを高速化できます。このフェーズでよく使用されるツールには、Docker、Kubernetes、Terraform などがあります。

テスト。テストの自動化は、DevOps の実装において重要な要素です。自動化ツールを使ってテストスクリプトを実行し、DevOps への移行によって得られた速度を妨げることなく機能テストを実行できるためです。このフェーズでよく使われるツールには、Jenkins、CircleCI、GitLab CI などがあります。

ソフトウェアの監視とロギング。ソフトウェアを本番環境に移行した後は、安定したパフォーマンスと顧客満足の向上を確保するために監視する必要があります。この工程では、パフォーマンス解析とロギング、さまざまな問題に関するスマートアラートの表示、顧客フィードバックの収集なども必要になります。これらのタスクを行うためのツールとしては、Prometheus、Grafana、Elastic (ELK) Stack、Splunk、Sumo Logic などがあります。


Black Duck はセキュアな DevOps の構築をどのように支援するのか?

DevOps と DevSecOps は目的地ではなく、旅なのです。DevOps は、今日の開発と運用のやり方を根本的に変えます。DevOps のプラクティス、プロセス、フレームワーク、ワークフローを使用すると、安全性を犠牲にすることなく、リスクを最小限に抑え、コンプライアンスを確保し、摩擦とコストを低減しながら、迅速かつ大規模にソフトウェア開発ライフサイクルにセキュリティを組み込むことができます。DevOps と DevSecOps により、開発、運用、セキュリティの各チームはデリバリーの速度とセキュリティとコンプライアンスのバランスを取りながら、SDLC 全体にセキュリティを組み込むことができます。

Black Duck は、業界のどの企業よりも充実したセキュリティ・テストツール群を備えています。パイプラインのすべての段階で実行されるテストツールを提供し、適切なテスト方法の決定を支援して開発速度の低下を招かないようにします。当社のテストツールは、管理と運用を容易にする一元化されたプラットフォーム上で実行でき、すべてのプロジェクトとパイプラインにわたるリスクの可視性を提供し、統合ポリシーを実装して潜在的な障害点を減らすことができます。さらに、GitHub、GitLab、Azure DevOps、Jenkins などの最も一般的な DevOps ツールすべてと統合することができます。

DevOps にセキュリティを組み込む方法をご紹介します