「DevSecOpsとはどんなものか」
そんな悩みをお持ちの方に、当記事ではDevSecOpsのメリットや、具体的な開発の流れを解説します。DevSecOpsを取り入れることで、素早い開発サイクルに加えて、開発するシステムのセキュリティ強化が可能です。自社にDevSecOpsを取り入れて、セキュリティを重視した開発を目指しましょう。
DevSecOpsとは
DevSecOpsは、Development(開発)、Operations(運用)のプロセスにSecurity(セキュリティ)を組み込んだアプローチです。DevSecOpsを実現することで、従来の開発(DevOpsを含む)スタイルに対して、迅速なセキュリティ強化が可能になります。
DevOpsの概要
DevSecOpsの前に、前身となるDevOpsについて確認しておきましょう。
DevOpsはDevelopment(開発)チームと、Operations(運用)チームが連携して対応する開発手法です。従来の開発手法は開発チームと運用チームに分かれていました。開発チームが開発後に、運用チームはソースコードを読み取り、開発チームと連携しながら運用フローを確立します。しかし、開発チームの意図を全て汲み取ることは両者にとって大きな負担です。
DevOpsではCI/CD(継続的インテグレーション/継続的デリバリー)ツールを用いてプロセスを進めることが一般的です。CI/CDにより、開発やアップデートの完了後、迅速に運用プロセスに取り入れられるため、サイクルが早くなるメリットがあります。
DevOpsを取り入れることで開発サイクルが早くなり、提供サービスの品質の維持、向上がしやすくなります。
DevSecOpsの概要
DevSecOpsは、DevOpsにSecurityのプロセスを取り入れた開発手法です。
DevOpsも含めて、従来の開発手法ではセキュリティは運用後の対応が中心でした。しかし、セキュリティ対策の重要性が広まったことや、DevOpsの開発が定着する企業が増えてきた事情から、セキュリティにも着目したDevSecOpsが広まってきています。
DevSecOpsを取り入れることで、開発初期段階からセキュリティを意識したプロセスが進められます。また運用後のセキュリティ発見時はもちろん、開発中に見つかった脆弱性であっても迅速な対応が可能です。
セキュリティ対策において、スピードは重要です。対応スピードが速いほど、リスクや被害を低減できるため、安全なシステム環境が実現します。DevSecOpsによって安全なシステム環境が実現しやすくなりました。
DevSecOpsを導入するメリット
DevSecOpsを導入するメリットとして以下があります。
- 開発から運用までのサイクルが早い
- セキュリティ面の問題に素早く対処できる
- 自動化を組み込みやすい
- 規制コンプライアンスに対応
- 担当者のセキュリティ意識が高まる
開発から運用までのサイクルが早い
DevSecOpsを取り入れると、開発から運用までのサイクルが早くなります。
DevOpsの概要でも解説していますが、DevOpsはCI/CDツールを用いて開発を進めることが一般的です。開発した内容をCI/CDツールを用いて本番環境にリリースできるため、開発終了後から運用開始までの反映時間が短くなります。こちらはDevSecOpsでも受けられるメリットです。
例として、動画配信サービスでタグによる検索機能を追加することを想定します。開発チームが開発やテストを終え、CI/CDツールを回せば運用環境への機能追加が完了します。
細かい機能追加やバグ修正も含めて、迅速な開発ライフサイクルを実現できることがDevSecOpsのメリットです。
セキュリティ面の問題に素早く対処できる
DevSecOpsは、セキュリティ面の問題にも素早く対処できるメリットがあります。
従来は機能の開発、運用のサイクルが一通り完了してからセキュリティ面の対応を進めていくことが一般的でした。運用していくうちに判明したセキュリティ面の問題や、脆弱性を機能追加の要領で対応していく形です。この形の場合、セキュリティ対策が遅くなるという問題があります。また対策が運用開始に間に合ったとしても、リリースが遅れてしまい、機会損失となる可能性が高いです。
DevSecOpsでは開発時からセキュリティ面の問題に対応し、運用に反映します。シフトレフトと呼ばれる考え方で、従来の後回しにされがちなセキュリティ対策を開発サイクルに組み込みます。開発サイクルが早い中でセキュリティ問題に対応できるため、迅速なセキュリティ強化が可能です。セキュリティ対策が迅速であれば、外部からの攻撃や不正アクセスを受けにくく、受けてもそれらの影響を許さない環境が実現します。
DevSecOpsによって、安全なシステム環境を構築できるのです。
自動化を組み込みやすい
自動化を組み込みやすいこともDevSecOpsのメリットです。
一般的には、DevSecOpsやDevOpsはCI/CDツールを用いて開発を進めますが、この時セキュリティ機能のリリースやテストもCI/CDツールに組み込めます。組み込みにより、自動化が実現され、稼働削減やミスの防止が可能です。
特にセキュリティ対策にミスがあると、外部からの攻撃を許し、甚大な被害を生み出す原因になり得ます。例えば、アクセスできる抜け道が見つかっても、対策にミスがあれば抜け道を塞げません。結果的に不正アクセスを許すことになります。このようなミスを防ぐ手段の1つとして、自動化は有効です。
自動化によりプロジェクト全体の開発サイクルがスピードアップするだけでなく、安全なシステム環境を実現しやすいことがメリットです。
規制コンプライアンスに対応
DevSecOpsを導入すると、規制コンプライアンスに対応できるメリットがあります。
近年は、データ保護やプライバシーに関する規制強化が続いています。例としてGDPR(EU一般データ保護規則)やアメリカのHIPAA(医療保険の相互運用性と説明責任に関する法律)などです。さまざまな業界において規制強化がなされており、対応していなければ、ソフトウェアを公開できません。規制を満たすためには監査ログの記録やデータの暗号化などが必要です。
DevSecOpsを取り入れると、規制コンプライアンスの要件に対応しやすくなります。従来の開発手法では、規制を満たすために労力が必要でしたが、DevSecOpsでは追加の労力を低減できます。
担当者のセキュリティ意識が高まる
DevSecOpsを導入することで、担当者のセキュリティ意識が高まるメリットがあります。
従来は開発は開発、運用は運用、セキュリティはセキュリティの各担当者が持ち回りに集中していました。従来の開発手法の場合、開発チームはセキュリティに対する意識が低いことがしばしばあります。しかし、DevSecOpsは開発チームでもセキュリティを意識した開発が必要です。
担当者のセキュリティ意識が高まることで、システムのセキュリティ強化だけでなく、サイバー攻撃に強い企業体質ができあがります。サイバー攻撃は誰が攻撃対象となるかが分かりません。1人でも多くの従業員がセキュリティ意識を高く持つことが重要です。
DevSecOpsを持つことで、従業員のセキュリティ意識の底上げにつながり、サイバー攻撃に対処しやすい企業体質になります。
DevSecOpsにおける開発運用の事前準備
DevSecOpsにおける開発運用の事前準備として、以下が必要です。
- ツールの用意
- 開発運用プロセスの整備
- 組織全体の意識改革
ツールの用意
DevSecOpsを導入するためには、以下のツールの用意が必要です。
- CI/CDツール:継続的インテグレーション/継続的デリバリーによる開発運用プロセスの自動化
- Jenkins
- GitLab CI/CD
- セキュリティテストツール
- SAST:ソースコードのスキャンによるエラーや致命的な事項の確認
■ GitLab SAST
■ Coverity - DAST:動作中のアプリケーションの脆弱性を確認
■ Owasp ZAP
■ Vex - SCA:ソースコードのスキャンにより、含まれているソフトウェアの既知の脆弱性を確認
■ GitLab Dependency Scanning
■ Black Duck
- SAST:ソースコードのスキャンによるエラーや致命的な事項の確認
上記のCI/CDツールにセキュリティテストツールを組み込むことで、開発を終えた機能のセキュリティテストと、運用への反映を自動化できます。セキュリティテストをクリアできなければ運用への反映ができないため、開発時点からセキュリティを意識した開発が必要です。
開発運用プロセスの整備
DevSecOpsの導入前に開発運用プロセスを整備しておく必要があります。
DevOpsを含む、従来の開発手法での開発運用プロセスを見直してください。例として以下のプロセスのように内容と目的を明確化しましょう。
- 開発
a. 計画:ビジネス要件やニーズ、予算などのリソースにもとづき、開発の範囲を定義
b. コーディング:設計書にもとづいてプログラミング
c. ビルド:コーディングされたソースコードをコンパイルして実行可能な形式に変換、ライブラリとの統合
d. テスト:ビルドされたアプリケーションの動作検証、バグの発見 - 運用
a. リリース:1a~dまで終えたソフトウェアを納品、または公開
b. デプロイ:本番環境に配置してユーザーが使える状態に仕上げ
c. 対応:運用開始後の不具合や、後から発見されたセキュリティ脆弱性を解消
d. 監視:正常に動作しているかリアルタイムでチェック
プロセス整備後は各フェーズの役割を明確化します。そして、各フェーズにセキュリティの要素を組み込むことでDevSecOpsが実現可能です。具体的な内容はDevSecOpsの開発運用の流れにて解説します。
組織全体の意識改革
DevSecOpsは組織全体の意識改革も必要です。
開発者の中には「セキュリティは難しいからセキュリティ担当者に任せるべきだ」と考えている人がいます。従来は開発者が開発に集中することで、業務が最適化されていたため、このような考えは一般的でした。しかし、サイバー攻撃の高度化やコンプライアンス遵守が広まった近年は、開発とセキュリティ対策は切り離せないものになりました。
DevSecOpsの導入にあたり、開発者、セキュリティ担当者、運用担当者が一丸となってセキュリティ対策を進める意識が重要です。
またDevSecOpsの導入時は営業や経理といった、一見無関係な従業員もセキュリティ意識を高める機会にしましょう。意識が高まることで、セキュリティリスクに敏感になり、報告や相談が増え、被害を抑えられる可能性が高まります。組織全体の意識改革を進めるためにも、経営層からセキュリティ意識を高めていくことを発信すべきです。
DevSecOpsの開発運用の流れ
事前準備後、DevSecOpsの開発運用の流れは以下のとおりです。
- 現在の開発運用プロセスにおけるセキュリティ状況の確認
- 開発工程にセキュリティを統合
- 運用工程にセキュリティを統合
現在の開発運用プロセスにおけるセキュリティ状況の確認
まずは現在の開発運用プロセスにおけるセキュリティ状況を確認し、DevSecOpsの開発サイクルの確立を目指しましょう。
各フェーズにどのようなセキュリティ対策を組み込めるのか、検討が必要です。ソースコードの検証や、ビルド後の動作確認など、組み込むべき対策をリストアップしてください。
またDevSecOpsはDevOpsの流れを組み、CI/CDツールを用いることが大半です。よってCI/CDツールのプロセスに組み込みやすいツールを選定することで、スムーズにDevSecOpsのサイクルを構築できます。
開発工程にセキュリティを統合
開発工程からセキュリティ要素を統合していきます。具体的には以下の具合でセキュリティを統合可能です。
- 計画:セキュリティ要件の明確化
a. アクセス制限ポリシーの定義
b. データ暗号化の設定を定義 - コーディング:SASTによるテスト
a. SQLインジェクションの検出
b. ソースコードにパスワードなどの機密情報が直接記載されていないことの確認 - ビルド:SCAによる依存関係や脆弱性のスキャン
a. オープンソースライブラリの脆弱性スキャン
b. ライセンスの適合性チェック - テスト:従来の機能テストに加え、DASTによるテスト
a. クロスサイトスクリプティング(XSS)の動的テスト
b. セッション管理のテスト
運用工程にセキュリティを統合
運用工程にもセキュリティの統合をしましょう。具体的には以下の具合です。
- リリース:1のa~dが正しくクリアできていることをチェック
- デプロイ:本番環境での自動チェック
a. サーバやネットワークの正常性チェックの自動化
b. ロールバック機能の自動化 - 対応:トラブル発生時の対応、事前に対応手順を定義しておく
a. サーバダウン時の緊急パッチ適用手順
b. サイバー攻撃(DDoS攻撃)時の対応手順 - 監視:運用中のシステムやアプリケーションをリアルタイムでセキュリティ監視
a. パフォーマンスのモニタリング
b. セキュリティ監視とアラートシステムの構築
開発、運用の各フェーズにセキュリティを統合することで、DevSecOpsが実現します。
DevSecOpsの失敗ケース
DevSecOpsの導入には多くのメリットがあります。しかし、適切でない導入の仕方をすると効果を上げられない可能性もあるので注意が必要です。以下でDevSecOpsの失敗ケースを解説します。
- ツールを導入するだけ
- セキュリティのことはセキュリティ担当者に丸投げ
ツールを導入するだけ
DevSecOpsを実現するために、ツールを導入するだけ、になると思うような効果が得られません。
先述したように、DevSecOpsはCI/CDツールに加え、セキュリティテストを行うためのツールが利用されます。ツールの導入は必要ですが、それだけでは完了とはいきません。
ツールは導入後が本番です。導入後にテストの結果や、収集したデータを踏まえて改善につなげていく必要があります。
例としてSASTを導入し、ソースコードを解析した結果、エラーが見つかったとします。エラー修正をすることはもちろんですが「なぜエラーになったか」「どうすればエラーをもっと前段階で防げたのか」と、原因を深掘りした根本的な対応が重要です。
DevSevOpsを実現するためにツールを導入するだけだと、目的と手段が入れ替わってしまう可能性があるので注意しましょう。
セキュリティのことはセキュリティ担当者に丸投げ
セキュリティのことはセキュリティ担当者に丸投げすると、DevSecOpsの導入効果が薄れます。
DevSecOpsは開発者や運用者もセキュリティに目を向けることで、開発サイクルのプロセスが速くなります。開発者がセキュリティを丸投げする態度では、プロセス改善ができる見込みが薄くなるでしょう。これでは従来の開発手法にツールを導入するだけになってしまいます。丸投げをしているうちは、当然開発者のセキュリティ意識は高まりません。
開発者、運用者、セキュリティがチーム一体となり、開発サイクルを改善することが重要です。
DevSecOpsの導入を成功させるために
DevSecOpsの導入を成功させるためには技術面と組織全体の意識面の両方に改善が必要です。
技術面は現状プロセスの見直しによるセキュリティの統合や、ツールの導入、PDCAによるフィードバックなど継続的なプロセスの見直しが必要です。DevSecOpsが定着し、効果が表れるまで時間がかかるため、辛抱が重要になります。
組織全体のセキュリティ意識を高めることも重要です。DevSecOpsに関わる開発者、運用者、セキュリティ担当者だけでなく、全社でセキュリティ意識を高める意識を持ちましょう。提供する製品やサービスのセキュリティ強化だけでなく、自社のセキュリティ問題の解決を最終的なゴールとすべきです。
まとめ
DevSecOpsは、開発運用サイクルの効率化を実現するDevOpsにセキュリティを統合した開発手法です。DevSecOpsの導入で、セキュリティ強化の実現はもちろん、従業員の負担軽減や、コンプライアンスの遵守などのメリットも得られます。
セキュリティ攻撃は、今後も高度化する可能性が高いです。開発のようにセキュリティから離れた業務でも、セキュリティ対策が重要になります。三和コムテックではさまざまなセキュリティソリューションを提供しているため、気になるサービスがございましたらご連絡ください。
- トピックス:
- セキュリティ