CyberArk Glossary >

DevOpsセキュリティとは?

DevOpsは、ソフトウェア開発(Dev)とIT運用(Ops)が連携してシステムを開発・運用することを意味します。これにより、アプリケーションやサービスを高速で配信でき、文化的な基本方針、プラクティス、ツールを組み合わせて、より良いサービスを顧客に提供して組織の能力を高めることができます。

DevOps手法により、新しいアプリケーション機能を頻繁に提供できます。エラスティッククラウドインフラストラクチャは、新しいコンピューティングリソース(仮想マシンまたはコンテナ)をスピンアップして、必要に応じてより多くのアプリケーションインスタンスを展開する自動スケーリングプロセスによって、組織は、必要なコンピューティングの量に対してのみ支払います。組織は必要なコンピューティングの量に応じて支払いを行います。

世界中の多くの企業組織が、機能的および管理的なサイロを排除して、変更管理、構成管理、展開プロセスを自動化するために、アジャイルおよびDevOps手法に注目しています。DevOpsは、最終的に組織が市場投入までの時間を短縮し、製品品質を改善し、非効率性を排除し、デジタルトランスフォーメーションを加速させるのに役立ち、顧客のニーズにより俊敏に応答できるようになります。

CI/CDとは?

開発と運用を統合して、機能間の連携を促進することにより、DevOpsは開発サイクルをより短縮させて、ビジネス目標とより密接に連携させます。継続的インテグレーション(CI)を使用して、開発者はコードの変更を1日に複数回リポジトリにマージします。変更は自動的にビルドに統合されます。継続的デリバリー(CD)のアプローチでは、ボタンを押すだけでいつでも本番環境に展開できるように、コードが常にデプロイ可能な状態であることが必要です。

DevOpsセキュリティの課題

多くのメリットがあるにもかかわらず、DevOps は、新たなリスクと文化的な変化をもたらします。これにより、通常は従来のセキュリティ管理ソリューションおよびプラクティスでは対処できないセキュリティ上の課題が生じます。クラウドやコンテナへのソフトウェアの配信やデプロイの自動化を従来のアプローチでサポートするには、時間とコストがかかり、複雑化が増します。これらの課題には以下が含まれます:

DevOpsで使用される特権認証情報は、サイバー攻撃者の標的となります。DevOps環境における最大のセキュリティ課題のひとつは、特権アクセス管理です。DevOpsプロセスでは、人とマシンに非常に強力な特権認証情報を使用する必要がありますが、これらはサイバー攻撃の影響を受けやすいです。

  • 人的アクセス:高速プロセスでは、DevOps実務者は開発環境と本番環境全体にわたって特権アクセスが必要です。
  • マシンアクセス:自動化プロセスでは、人の介入なしでリソースにアクセスできるように、マシンおよびツールに特権(またはアクセス許可)の昇格が必要となります。例:
    • 自動化ツール:Ansible、Puppet、Chef
    • CI/CDツール:Jenkins、Azure DevOps、Bamboo
    • コンテナー管理ツール:Docker、Linux Containers (LXC)
    • コンテナオーケストレーションツール:Kubernetes、Red Hat OpenShift、Pivotal、Cloud Foundry

AnsibleやJenkinsなどのTier Zeroアセットは、他の多くのツールで使用される認証情報にアクセスします。

特権認証情報を取得した攻撃者は、DevOpsパイプライン、機密性の高いデータベース、さらには組織のクラウド全体へのフルアクセス権も取得できます。攻撃者は、パスワード、アクセスキー、SSHキー、トークン、また証明書、暗号化キー、APIキーなどその他の種類のシークレットなど、さらなる特権認証情報を探し出します。DevOps環境で保護されていない認証情報が攻撃者によって悪用されると、その結果として、暗号ジャック、データ侵害、知的財産の破壊が引き起こされます。

開発者の最大の関心事は、セキュリティではなく速度です。コードのより迅速な生成にフォーカスするDevOpsチームは、多くの場合、セキュリティチームの範囲外で安全でないプラクティスを採用しています。これらのプラクティスには、アプリケーションおよび構成ファイルに埋め込まれたシークレットや認証情報が残されている可能性があります。十分精査さていないサードパーティコードの再利用、潜在的なセキュリティ問題について評価されていない新しいツールの採用などにより、DevOpsツールとインフラストラクチャの保護が不十分になります

シークレット管理に対するツール中心のアプローチがセキュリティギャップをもたらします。DevOpsツールには、多くの場合、シークレットを保護するための組み込み機能が含まれています。ただし、これらの機能がツール、クラウド、プラットフォーム間での相互運用性やシークレットの安全な共有を妨げます。多くの場合、DevOpsは、シークレット管理のために個々のツールの組み込み機能をチーム化します。このアプローチでは、シークレットを一貫した方法で監視および管理できないため、シークレットを適切に保護することが困難になります。

組織でDevOpsセキュリティを有効にする手順

以下は、特権アクセスのリスクに対処し、DevOpsの文化と手法に合わせながら、大規模なDevOpsセキュリティを達成するために組織がよく行っている手順です:

  • セキュリティポリシーをコードとしてインスタンス化。DevOpsの基礎は「コードとしてのインフラストラクチャ」の概念です(不変のインフラストラクチャと呼ばれることもあります)。これは、サーバーとソフトウェアを手動で管理および構成する従来のモデルに取って代わります。この概念をセキュリティに適用することにより(コードとしてのセキュリティポリシーのインスタンス化と管理)、組織は手作業の多いエラーが発生しやすい構成プロセスを排除できます。
  • 職務の分離を確立。DevOpsチーム内で明白なロールと責任を明確に定義する必要があります:
    • 開発者は、ビジネス成果を促進するアプリケーションの作成にフォーカスする必要があります。
    • オペレーターは、信頼性と拡張性のあるインフラストラクチャの提供にフォーカスする必要があります。
    • セキュリティ関係者は、資産とデータの保護とリスクの軽減にフォーカスする必要があります。

各グループ間のやり取りは、文書化されたセキュリティポリシーで体系化できます。たとえば、開発者は、アプリケーションまたはサービスに必要な特権を宣言するセキュリティポリシーを作成します。次に、セキュリティ関係者がセキュリティポリシーを確認および承認し、オペレーターがアプリケーションのデプロイが期待どおりに行われることを確認します。

  • CI/CDプラクティスにセキュリティを統合。DevOpsでは頻繁にセキュリティが後付けされ、プロセスのかなり後半で実行されます。脆弱性に対処するために、最終段階で実質的な変更が必要となると、リリースに遅れが生じます。将来を見据えた組織は、カンバン方式などの高度なワークフロースケジューリングおよび管理ツールを使用して、フローをモデル化して、開発を加速させ、非効率性を排除しています。加えて、セキュリティチームがアプリケーションをマイクロサービスに分解して、セキュリティのレビューと変更を簡素化しています。
  • プロアクティブなセキュリティ対策。 脆弱性を減らし、セキュリティ態勢を改善し、リスクを軽減するために、アプリケーションのライフサイクル全体を通じて、強力なセキュリティプラクティスを講じる必要があります。DevOpsの優れたセキュリティ衛生対策には以下が含まれます:
    • セキュリティ要件と潜在的な脆弱性に対する包括的な対処。攻撃者は、ひとつの脆弱性を悪用するだけで組織に危害を加えることできます。
    • ビルド自動化ツールへの特権の集中化を減らし、コードリポジトリを確保して、シークレットを公開しない。
    • マシンと人が使用するシークレット(パスワード、証明書、APIキー、トークン、SSHキー)を安全で可用性の高いボールトで維持(ソースコード以外、開発者のラップトップおよびユーザーがアクセス可能なストレージシステム以外)。シークレットを定期的に変更して、脅威にさらされる可能性を最小限に抑えます。
    • 最小特権の原則でマシンと人が絶対に必要なリソースのみにアクセスできるようにします。
    • 通常の使用パターンのベースラインを確立して異常を検出することで、悪意のあるユーザーが追跡可能となり、認証情報を盗み出すことができなくなります
    • 認証情報がどのように使用されたのかを記録して説明責任を徹底します。例えば、人のユーザーの場合、セッションのキーストロークまたはビデオロギングを検討してください。
    • 各マシンに固有のIDを提供して、シークレットへのアクセスを監査および監視す。
    • 脆弱性スキャンを実行および侵入テストを実施して、サイバーセキュリティの姿勢を改善します。
    • セキュリティの脅威とベストプラクティスに関する教育を開発者に行います。
    • セキュリティチームと開発チーム間の緊密な協力と連携を促進します
  • セキュリティプロセスを自動化。 DevOpsは自動化を使用して、アプリケーションのライフサイクル管理を加速させ、人の待ち時間を減らします。同様に、DevOpsセキュリティは、人のやり取りや介入を最小限に抑えるために自動化を活用する必要があります。例えば、シークレット(パスワード、キー、証明書)を自動的に変更することで、攻撃者がDevOpsツール、アクセスキー、システムに長期間にわたってアクセスすることを防ぐことができます。違反が検出された場合は、自動セキュリティ手順を事後的に使用することもできます。例えば、セキュリティ違反が特定された場合に、特権セッションを自動的に終了して、認証情報を自動的に変更できます

DevOpsセキュリティの詳細

関連用語リスト