【事例】開発プロセスの初期段階からセキュリティを組み込んだ製品を導入することでDevSecOpsやシフトレフトを実現
はじめに
かつてのアプリケーション開発では、セキュリティに関して問題がないかの確認は成果物がある程度仕上がってから行われていました。開発そのものを優先していたためです。しかし最終段階で何らかのセキュリティ欠陥が発見された場合、手戻りが大きくなってしまいます。
そこで手戻りを最小限にするために、今では開発の早い段階からセキュリティの専門家も交えてセキュリティも考慮した設計にしておくことが推奨されるようになりました。これは、セキュリティに関する検討を時間軸のより早い段階(左側:レフト)へとずらすため「シフトレフト」と呼ばれています。
シフトレフトは「アプリケーション開発でセキュリティ対策となる作業を早い段階から」という意味もあり、脆弱性スキャンの実施も含まれています。脆弱性スキャンとは、コードにセキュリティ上の脆弱性に該当するものがないかスキャンするものです。
近年では脆弱性を悪用したサイバー攻撃、特に組織に侵入する足がかりに使われるケースが増加しているため、脆弱性スキャンで安全性を確認しておくことはとても重要です。なお脆弱性は開発途中で突然発表することもあるので、一度だけでなく、できるだけ頻繁にスキャンすることが望ましいです。
俊敏性を妨げていた原因は
既存のCI/CDツールにあった
今回のストーリーのベースとなるのは小売業で、オンライン取引を年間数千万件まで成長させた企業です。UX(顧客体験)を向上させるために、さらなる革新的な開発を継続していく必要がありました。
同社のようにDXを積極的に推進している企業では、頻繁にアプリケーションを更新させるのと同時にセキュリティを担保すること、テスト駆動開発を導入すること、アジャイルのスプリントベースで開発計画を立てることなどを実践しています。こうした環境では高度なDevOpsツールが欠かせません。
同社のエンジニアリングチームはサーバーレステクノロジーとクラウドファーストアーキテクチャを移行させることを目標に定めました。さまざまなプラグインを統合し、柔軟かつ高速なソフトウェアパイプラインを作るには、自動化の強化、ガバナンス、セキュリティ、俊敏性の向上が必要です。
ところが、既存のワークフローではコードに問題があった場合の実践的な管理方法や修復方法が不十分で、パイプラインの可視性にも課題がありました。チームが分析を進めたところ、理想を阻む重大な壁は既存のCI/CDツールにあると突き止めました。これは開発プロジェクトの運営管理で継続的に直面する問題となりえます。
エンジニアリングチームのリーダーはスケーラブルかつ戦略的で、安定したDevOpsのプラットフォームが必要だと考えました。しかし既存CI/CDツールでは、社内でパイプライン用のライブラリと機能を構築しなければなりません。新機能がほしければ、自分たちで開発する必要があったのです。
加えて、セキュリティを高める上で重要なこととしてCI/CDに優れた静的アプリケーションセキュリティテスト(SAST)と動的アプリケーションセキュリティテスト(DAST)を組み込めるものが必要でした。
検討した結果、同社はサービスのビルド、統合、デプロイメントを効果的かつ安全に管理するため、GitLabのDevOpsプラットフォームを選択しました。その理由として、エンジニアリングチームのリーダーは「GitLabはセキュリティ、パフォーマンス、テストなど必要な機能を備えている。またコードはモジュール式で、読みやすく一貫した方法でパイプラインを構築できるのがメリット」と述べています。
なお、同社ではクラウド環境にAWSを使用しています。GitLabプラットフォームの統合機能はAWS環境でパイプラインを作成することを想定して設計されているため、AWSにパイプラインをシームレスにデプロイできます。
他にも、同社では次のような効果が現れています。まずオンボーディングまでの時間短縮です。開発チームに新しいメンバーが加わると、そのメンバーに同社が定めるテクノロジースタックを導入する必要があります。これまでは完全に揃えるまで数日かかっていましたが、今ではGitLabを使うことで数時間で済むようになりました。
また、GitLabはワークフローを完全にドキュメント化しているため、チームメンバーはパイプラインに問題が発生しても迅速に把握できます。マージリクエスト(プルリクエスト)などのプロセスにおいてもコラボレーションして進めていくことができるため、開発者や品質エンジニア、SREエンジニアなどがパイプラインに関する問題に対処する際に、うまく連携して作業できるようになります。
優れた製品を使用すると効率化が進み
エンジニアリングチームは幸せに
同社はセキュリティ対策にもGitLabを利用しています。冒頭でシフトレフトと表現しましたが、似たような趣旨で使われるDevSecOpsという表現もあります。これはDevOpsのサイクルにセキュリティ(Sec)を組み込むという概念を示しています。脆弱性スキャンに関して言えば、あらゆるプロセスで継続的に実行を繰り返す必要があるため、(シフトレフトよりは)DevSecOpsという表現のほうがふさわしいかもしれません。
GitLabプラットフォームでは、パイプライン内でより高度なスキャンをより頻繁に実行できるように自動化しています。スキャンは前述したようなSAST/DASTスキャンのほかにも、シークレット検出(クレデンシャルやAPIキーなどの機密情報がコード内に混入してないか確認する)や依存関係スキャン(コードで参照しているライブラリなどの依存関係を確認する。依存先に脆弱性が発見されることもあるため重要)があります。自動化を実現する際、GitLabは開発者や管理者に追加の作業を課すことがないため、自動化を積極的に推進していくことができます。
これらのスキャンを初期段階から実施することで、セキュリティの脆弱性を修正した状態で開発プロセスを進めていくことができます。セキュリティ対策につながる作業が早い段階に行われると手戻りが少なく安全性を維持できるため、開発チームだけではなくオンラインの顧客にもメリットがあります。
またGitLabではパイプライン作業を可視化するため運用全体で管理の効率化につながり、コラボレーションを高めていくことができます。その結果、さまざまなチームや役割がDevOpsのサイクルでパートナーシップを強化できるほか、監査にも有効です。
なお、UltimateプランのSaaS版GitLabを使用すれば、セルフサービスデモルでオープンソースのツールチェーンを管理できます。GitLabとJira、Datadog、Terraform、Slackなどのサードパーティーとの統合により可視性を向上できます。
実際にGitLabを活用しているユーザーは「GitLabのユーザーインターフェースはエンドツーエンドのスタックビューを提供するように設計および構築されている。またGitLab内でプロジェクトが可視化されているため、何が起きているか進捗を簡単に確認できるし、必要に応じてどのようなコードが生成されているかも確認できる。GitLabが定期的に公開するテクノロジーロードマップや毎月のリリースは、私たちが技術の最先端にとどまり続けるために欠かせない要素となっている」と述べています。
最後に、エンジニアリングチームのリーダーからの貴重な指摘を記しておきます。「優れたツールや優れた製品を使用することはエンジニアリングチームの幸せにとても役立ちます。優れた製品を愛用すれば効率的に仕事ができるので、よりスマートに、より幸せになれます」。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- 【事例】アジャイル開発を実践する老舗IT企業がCI/CDの効率化で生産性向上とコスト削減を実現
- DevOpsはここから始めよう
- DevOpsを始めるときに「何をやるべきか」を理解しよう
- コンテナ開発へのDevSecOpsの適用
- CNSC 2022からアクセンチュアのセキュリティエンジニアがDevSecOpsの要点を解説
- プロダクトライフサイクルでのシフトレフトを推進―開発者ファーストの思想で一貫したDevSecOps環境を実現するSnyk
- 【事例】すべての機能を利用可能なDevSecOpsプラットフォームで生産性向上
- JFrog Japan主催による、DevOpsの最新事情がわかる開発者向けイベント「DevOps Kaigi ’21」を開催
- 開発者主導のセキュリティ対策の強い味方、脆弱性スキャンを随所に組み込む「Snyk」の価値
- 生産性の向上と脆弱性リスクの低減を両立─ 開発者ファーストのセキュリティプラットフォーム 「Snyk」がもたらす効果・効用