クラウド時代のセキュリティとは

昨今、DX (デジタルトランスフォーメーション) の加速により、システム開発においてもスピードや柔軟性が求めらるようになっています。 クラウドネイティブを前提とした開発も一般的になりつつあり、コンテナやKubernetesを採用したシステム設計、継続的インテグレーション(CI)・継続的デリバリ(CD)パイプラインの構築、高頻度なリリースを実現する開発プロセスの採用等、システムの開発方式も従来とは大きく変わってきています。

これらの変化により開発スピードや柔軟性を確保できるようになった一方、セキュリティ面においては、従来のオンプレミス環境におけるシステム開発とは異なる観点の考慮も必要となります。

例えば、クラウドやコンテナ技術特有のセキュリティ観点を理解したうえでシステム開発を行う必要があるほか、高頻度なリリースを可能とする開発サイクルの中にもセキュリティを確保するための体制やプロセスを構築する必要があるなど、テクノロジーだけでなく組織やプロセス等も含め考慮すべき点は多岐にわたります。

そこで今回、クラウドネイティブなシステム開発において採用される開発プロセスを説明します。また、クラウドを活用する上で把握しておかなければならない責任共有モデルやセキュリティ対策の全体像について、Microsoftが提供するパブリッククラウド「Azure」をベースに解説します。

DevSecOpsとは

従来の開発プロセスでは、開発と運用が別々に機能していることにより、開発サイドと運用サイドの情報連携に時間を要したり、それぞれの目指す方向のギャップから開発から運用までにオーバヘッドが発生したりしてしまう問題がありました。

この問題を解決するため、開発 (Development) と 運用 (Operations) の組織やプロセス、テクノロジー等を統合した「DevOps」という開発プロセスが生まれました。DevOpsを採用することで、開発から運用までのサイクルが短縮されて高頻度なリリースを実現できるようになり、変化の激しい市場ニーズにも迅速な対応が可能となります。

さらに、DevOpsにセキュリティ(Security)の要件を融合したものを「DevSecOps」と呼びます。DevSecOpsでは、ソフトウェア開発ライフサイクルの全体にセキュリティを確保するためのプロセスを組み込みます。

  • DevSecOpsの概要

DevSecOps では、これまでのように開発を終えてからセキュリティチェックを行うのではなく、開発ライフサイクルの各フェーズでセキュリティチェックを行うことで、リリース前に大きな脆弱性が発見されることにより手戻りの発生してしまう等の問題を減らすことができます。

Azureセキュリティの全体像

Azureのセキュリティ機能は、すべてのクラウドリソースとアーキテクチャのすべてのレイヤーにわってAzureプラットフォームにシームレスに組み込まれています。DevOpsプロセスのネイティブな制御からセキュリティ運用チームのスケーラブルなセキュリティ体験まで、開発ライフサイクルのすべての段階を通じて利用を開始するのも管理も簡単です。また、幅広いポリシーサポートと実用的なベストプラクティスも提供します。

AzureではID、ホスト、ネットワーク、データにまたがって多層防御(defense-in-depth)が実装可能で、これらの機能によって安全性の確保と保護を実現します。また、疑わしいアクティビティを特定してリスクを軽減する脅威の検出に加え、ログデータを取得して調査と対応を可能とするサービスを活用することで、ビジネスのセキュリティニーズを満たし、ユーザー、デバイス、リソース、データ、アプリケーションを保護します。

  • Azureセキュリティの概要

具体的にどのようなAzureのサービスがあるかというと、例えば、ID管理とアクセス制御に関してはAzure Active Directory、脅威保護に関してはMicrosoft Defender for Cloud、アプリケーションセキュリティに関しては鍵や証明書を管理するAzure Key Vaultなどがあります。

サービスの詳細はAzureセキュリティのドキュメント]を参照してください。