DevOps セキュリティとは?
- IAM 用語集
- DevOps セキュリティとは?
DevOps セキュリティは、DevSecOps とも呼ばれ、開発、運用、セキュリティという言葉の集合体です。DevOps セキュリティと DevSecOps はどちらも、セキュリティをソフトウェア開発ライフサイクル(SDLC)にできるだけ早く、できれば 1 行のコードも書かれる前に統合するという哲学を指しています。
DevOps と DevSecOps の違いとは?
DevSecOps は、DevOps の哲学を拡張または強化したものです。このため、DevOps と DevSecOps の違いを論じる前に、両者の共通点を理解することが重要となります。
DevOps と DevSecOps は、どちらもソフトウェア開発に対する哲学やアプローチを指すものであり、特定のツールやツールのセットを指すものではありません。課題追跡システムを導入しても「DevOps を実行している」とは言えないように、静的または動的なアプリケーションセキュリティツールを導入しても「DevSecOps を実行している」とは言えないのです。
DevOps と DevSecOps は、どちらもソフトウェアアプリケーションのコラボレーション、自動化、アクティブなモニタリングを重視しています。アプリケーションのデータをリアルタイムで取得する機能は、両方の哲学の鍵になります。なぜなら、DevOps と DevSecOps を「実行」するには、このデータを継続的に取得して分析し、生産性を高めて改善を推進する方法を発見する必要があるからです。
また、両者の哲学は、コラボレーション、特に組織のサイロをなくすことに依存しています。DevOps は、ソフトウェア開発と IT 運用の間のサイロをなくすことを目指しており、開発者と IT 担当者が協力することで、ソフトウェアをより迅速に、より少ないエラーでリリースできるであろうという考え方です。DevSecOps は、さらに一歩進んで、セキュリティ運用にも席を設けることを目指します。DevSecOps の背後にある考え方は、開発者、IT 担当者、セキュリティ担当者が協力することで、ソフトウェアをより迅速に、より高い品質で、より安全にリリースすることができるというものです。
DevSecOps を正しく「実行する」とは、アプリケーションが本番環境に配信される前に、リスクに対して適切に対処されることを意味します。この慣習はしばしば「シフトレフト」と呼ばれます。これは、セキュリティを後の段階で対処するのではなく、プロジェクトのタイムラインの最初、つまりコードが 1 行でも書かれる前に統合することを指すからです。DevSecOps 環境では、開発者はセキュリティを念頭に置いてコードを書きますが、これは DevOps だけでは対応できないことです。
DevSecOps は、コード分析、脅威の調査、脆弱性評価などの慣習を SDLC に導入し、継続的なテストと評価を行うことで、コードベースが初期段階から安全であることを保証します。アプリケーションセキュリティの向上に加えて、DevSecOps は生産性も向上させます。セキュリティの問題を早期に発見し修正することは、ソフトウェアライフサイクルの後半でコードのリファクタリングを行うよりも、はるかに時間とコストがかかりません。
DevOps セキュリティの課題
DevSecOps の利点がある一方で、組織は適切に実装するのに苦労することがあります。ここでは、DevOps のセキュリティに関する最も一般的な課題をいくつか検証してみましょう。
ツールに重点を置きすぎ、プロセスを軽視しすぎる。 記事の冒頭で述べたように、DevOps も DevSecOps も哲学であり、特定のソフトウェアを使うことを義務付けているわけではありません。
開発者からの文化的抵抗、「だけど、我々は常にこの方法で行ってきた。」 開発者は、セキュアコーディングの実践に慣れていない可能性があります。伝統的に、開発者は作業性を重視してコーディングし、セキュリティ上の欠陥は後から発見してパッチを適用していました。開発者は、セキュリティについて「心配」しなければならないことで、生産が遅くなることを恐れるかもしれません。
セキュリティチームからの文化的抵抗。 開発者だけが、「これまでのやり方」に固執しているわけではありません。DevOps チームはスピードを重視し、数時間から数日かけてコードを修正、削除します。この急速なペースは、セキュリティチームから不審がられることもあります。DevOps チームは可能な限り多くのプロセスを自動化しますが、セキュリティチームは多くの作業を手作業で行うという違いがあります。
不適切なシークレット管理 DevOps 環境は非常に複雑で、深く相互接続されています。DevOps ショップには、数百のセキュリティグループと数千のサーバーインスタンスがあり、そのすべてが特権アカウントのクレデンシャル、SSH 鍵、API トークン、データベースパスワードなどのシークレットなどを利用することで、すべてが組織のデータ環境全体に散らばっている状態、いわゆる「シークレットスプロール(機密情報の拡散)」と呼ばれる状態にあることも珍しくありません。単純な設定ミスがこれらのシークレットのひとつを漏洩させることにつながり、組織は壊滅的なサイバー攻撃に見舞われる可能性があります。
不十分な特権アクセス管理。 多くの DevOps チームは、生産スピードを上げるために、メンバーに root や admin といった特権アカウントに対して実質的に無制限のアクセスを与えています。さらに悪いことに、複数の個人が同じクレデンシャルを共有している場合があります。これは、セキュリティ上の大きな問題であると同時に、組織がクリーンな監査証跡を作成することを求められるコンプライアンス監査における大きな問題点でもあります。さらに、オーケストレーション、構成管理、およびその他の DevOps ツールは、そのツールが動作するのに必要なものよりはるかに高いアクセスレベルを持つ可能性があります。
DevOps セキュリティのベストプラクティス
DevOps のセキュリティを組織で導入するためのベストプラクティスを紹介します。
- DevSecOps は、DevOps と同様に、ツールのセットではなく、考え方であることを忘れてはなりません。「DevSecOps ツール」を購入し、それをどこで使用するかを理解するのではなく、最終目標に焦点を当て、それを達成するためのプロセスを開発し、そのプロセスや目標をサポートするツールを購入します。
- 開発者とセキュリティ担当者の文化的な抵抗を克服するために、適切な変更管理メソッドを使用します。両チームに対して、DevSecOps によって時間が短縮され、生産性が下がるのではなく向上することを実証してください。開発者向けの明確なコーディング標準を確立し、セキュリティプロセスとツールを可能な限り自動化します。
- Keeper Secrets Manager のようなツールを使用して、シークレットスプロールに対処します。
- ロールベースのアクセス制御(RBAC)、最小権限アクセス、ジャストインタイムプロビジョニングなどの制御により、過剰な特権的権限やアクセスレベルを抑制します。
- セッションの記録と監査により、特権アクセスの乱用を防止します。