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