概要
DevSecOps とは、開発、セキュリティ、運用のことです。文化、自動化、およびプラットフォーム設計へのアプローチであり、IT ライフサイクル全体を通じてセキュリティを共有責任として統合します。
DevSecOps とDevOps
DevOps は開発チームや運用チームだけのものではありません。DevOps アプローチによるアジリティと応答性を存分に利用するのであれば、IT セキュリティはアプリケーションのライフサイクル全体を通じて、重要な役目を果たす必要もあります。
その理由は次のとおりです。過去には、セキュリティの役割は独立しており、開発の最終段階に特定のチームが対応していました。これは開発サイクルが数カ月から数年に及ぶ場合には問題になりませんでしたが、そうした時代は終わりました。効果的な DevOps によって開発サイクルを迅速かつ頻繁に繰り返すことが可能になりますが (ときには数週間や数日単位になる)、セキュリティの実施方法が旧式のままでは、DevOps の取り組みがどれほど効率的であっても台無しになってしまいます。
![DevSecOps Linear Illustration representing a linear progression from Development to Security and then to Operations](/https/www.redhat.com/rhdc/managed-files/styles/wysiwyg_full_width/private/devsecops-linear-405x259.png.webp?itok=sAeNhh03)
しかし、コラボレーションを重視する DevOps のフレームワークにおいては、セキュリティは最初から最後まで組み込まれ、その責任も共有されます。これは極めて重要な考え方なので、一部の人々からは「DevSecOps」という用語が作り出され、セキュリティ基盤を DevOps の取り組みに導入する必要性を強調しています。
![DevSecOps Collaboration Illustration representing collaboration between Development, Security, and Operations roles](/https/www.redhat.com/rhdc/managed-files/styles/wysiwyg_full_width/private/devsecops-collab-405x308.png.webp?itok=TewcMqFm)
DevSecOps とは、アプリケーションとインフラストラクチャのセキュリティを、開始時点から考慮することです。また、DevOps ワークフローの速度が低下しないよう、一部のセキュリティゲートを自動化することも必要です。セキュリティ機能を搭載した統合開発環境 (IDE) を全員で使用するなど、継続的にセキュリティを統合するための適切なツールを選択すると、このような目標を達成しやすくなります。とはいえ、DevOps 体制における効果的なセキュリティを実現するには、新しいツールを導入する以上の取り組みが必要となります。そのためには、DevOps がもたらす企業文化の変革をさらに発展させ、セキュリティチームの業務を極力早く統合化することです。
組み込みの DevOps セキュリティ
呼び方が「DevOps」であれ「DevSecOps」であれ、セキュリティをアプリケーションのライフサイクル全体に重要な要素として組み込むことが理想であることに変わりはありません。DevSecOps の骨子は、セキュリティをアプリケーションやデータの周囲を守る境界線として後付けするのではなく、最初から組み込むことにあります。セキュリティが開発パイプラインの末端に留まっていると、DevOps を採用する組織の開発サイクルは長期間に戻ってしまいます。これは本来避けたかった事態です。
DevSecOps で重要なことの 1 つに、DevOps に取り組み始めたときからセキュリティチームとパートナーを参加させ、情報セキュリティを構築して、セキュリティ自動化計画を策定する必要性があります。これにより、開発者がセキュリティを念頭にコードを作成できるよう支援する必要性も浮き彫りになります。このプロセスには、内部脅威や潜在的なマルウェアなどの既知の脅威に対する可視性、フィードバック、知見を共有するセキュリティチームが協力します。DevSecOps はソフトウェア・サプライチェーンにおけるリスクの特定にも焦点を当て、ソフトウェア開発ライフサイクルの早期段階におけるオープンソース・ソフトウェア・コンポーネントのセキュリティおよび依存関係も重視しています。成功させるには、効果的な DevSecOps アプローチに開発者向けの新しいセキュリティ・トレーニングも含めることができます。これは従来のアプリケーション開発ではあまり重要視されてきませんでした。
組み込みセキュリティとは実際にはどのようなものなのでしょうか。優れた DevSecOps 戦略の第一歩としては、リスクの許容度を確認し、リスク便益分析を実施するとよいでしょう。所定のアプリケーションにはどの程度のセキュリティ制御が必要でしょうか。それぞれのアプリケーションについて市場投入時間はどの程度重要でしょうか。パイプラインでセキュリティチェックを手動で実行すると時間がかかりすぎてしまうため、DevSecOps にとって反復タスクの自動化は重要です。
DevOps セキュリティは自動化される
課題には、迅速かつ頻繁な開発サイクルを可能にすること、大きな混乱を伴わずにセキュリティ対策を運用に取り入れること、コンテナやマイクロサービスなどの革新的なテクノロジーに遅れをとらないこと、そして通常別々に作業するチーム間で緊密な共同作業を促進することがありますが、こうした課題はどのような組織にとっても簡単なことではありません。このような取り組みはすべて人間が開始し、組織のコラボレーションのやり取りは人が行います。しかし、DevSecOps のフレームワークでのこのようなやり取りは自動化によって促進されます。
![devsecops automation Illustrations representing that DevOps plus Automation equals Security](/https/www.redhat.com/rhdc/managed-files/styles/wysiwyg_full_width/private/devsecops-automation3-549x160_0.png.webp?itok=XxGprSJj)
それでは、何をどのように自動化すべきでしょうか?この質問の回答に役立つ文書化されたガイダンスがあります。組織は立ち止まって開発および運用の環境全体を検討する必要があります。検討対象には、ソース・コントロール・リポジトリ、コンテナレジストリ、継続的インテグレーションと継続的デプロイメント (CI/CD) パイプライン、アプリケーション・プログラミング・インタフェース (API) 管理、オーケストレーションおよびリリース自動化、運用管理と監視が含まれます。
新しい自動化テクノロジーは、アジャイル開発手法の導入を促進し、新しいセキュリティ対策の進化にも一役買っています。しかし、近年 IT 業界で変化したのは自動化だけではありません。今やコンテナやマイクロサービスなどのクラウドネイティブ技術が大半の DevOps 業務で主要な部分になり、DevOps セキュリティはこれに対処しなければなりません。
DevOps セキュリティはコンテナとマイクロサービス向けに構築されている
コンテナによってより大規模で動的なインフラストラクチャが実現し、多くの企業でビジネスの遂行方法が変革されました。このため、DevOps セキュリティプラクティスは新しい環境に適応して、コンテナ固有のセキュリティガイドラインに足並みを揃える必要があります。
クラウドネイティブ・テクノロジーは、固定されたセキュリティポリシーやチェックリストには適していません。むしろ、セキュリティは連続的で、アプリケーションおよびインフラストラクチャのライフサイクルの各段階に統合される必要があります。
DevSecOps とは、アプリケーション開発全体にセキュリティを組み込むことです。このようにパイプラインに統合するには、新しいツールの場合と同様に組織の考え方を改める必要があります。この点を考慮して、DevOps チームはセキュリティを自動化し、環境全体とデータ、そして継続的インテグレーション/継続的デリバリープロセスを保護しなければなりません。この目標には、コンテナ内のマイクロサービスのセキュリティが含まれるでしょう。
Red Hat® Advanced Cluster Security は、クラウドネイティブの原理と、マイクロサービス・アーキテクチャ、宣言的な定義、不変のインフラストラクチャのアーティファクトを使用して、DevSecOps のベストプラクティスを自動化します。このプラットフォームは任意の Kubernetes 環境と連携して DevOps およびセキュリティツールと統合でき、チームによる運用化と、サプライチェーン、インフラストラクチャ、ワークロードの保護の強化を支援します。
環境とデータセキュリティ
- 環境を標準化および自動化する:各サービスに付与する権限は必要最低限にして、不正な接続とアクセスを最小限にすべきです。
- ユーザー ID とアクセス制御機能を一元化する:厳密なアクセス制御と一元化された認証メカニズムは、マイクロサービスのセキュリティ保護に欠かせません。認証は複数のポイントで発生するからです。
- マイクロサービスを実行するコンテナを相互およびネットワークから分離する:移動中のデータと保管されているデータの両方があり、両方とも攻撃者にとって高価値のターゲットとなる可能性があります。
- アプリケーションとサービスの間のデータを暗号化する:セキュリティ機能を内蔵したコンテナ・オーケストレーション・プラットフォームが、不正アクセスのリスクを低減させます。
- セキュアな API ゲートウェイを導入する:セキュアな API によって認可とルーティングの状況がわかりやすくなります。公開される API を減らすと、攻撃対象となる領域を縮小できます。
CI/CD プロセスセキュリティ
- セキュリティスキャナーをコンテナに統合する:これはコンテナをレジストリに追加するプロセスの一環とするべきです。
- CI プロセスでのセキュリティテストを自動化する:これには、ビルドの一環としてセキュリティの静的分析の実行と、ビルドパイプラインに導入された既知のセキュリティ脆弱性に対する構成済みコンテナイメージのスキャンが含まれます。
- セキュリティ機能のテストを自動化して、受け入れテストプロセスに追加する:入力検証テストに加えて、検証の認証と認可機能を自動化します。
- 既知の脆弱性へのパッチなど、セキュリティアップデートを自動化する:DevOps パイプラインを通じて実行します。管理者が本番システムにログインする必要がなくなり、文書化された追跡可能な変更ログを作成できるようになります。
- システムおよびサービス構成管理機能を自動化する:これにより、セキュリティポリシーに準拠でき、手作業によるエラーを削減できます。監査と修復も自動化する必要があります。