DevSecOpsにGitOpsが不可欠な理由
公開: 2022-02-24自動化、トレーサビリティ、特に事前にサイロ化されたグループと利害関係者間のコラボレーションのためのDevOpsのメリットは大いに受け入れられています。 ただし、DevOpsグループは、コンテナー化されたKubernetes環境に操作を移行するという重要な任務を負っているため、試行錯誤された長いDevOps戦術は短くなる可能性があります。 セキュリティの問題(および落とし穴)も、独自の方法で明らかになります。
素晴らしい情報は、GitOpsが分散環境の安定性のためにDevOpsのギャップの選択を埋めるのに役立つということです。 これは、GitOpsプロセスがDevSecOpsに非常に役立つという事実によるものです。これは、ソフトウェアライフサイクル全体に適用される安全性の最も効果的な戦術としてここにリストされています。
この記事では、GitOpsがDevSecOpsに不可欠なフレームワークを提供する方法、CI / CDを通じて、またKubernetesクラスターでのアプリケーション管理の書き込みとデプロイのフェーズを通じて向上する安全性チェックについて説明します。
現実の孤独な不変の資源
GitOpsは次のように説明できます。
Kubernetesおよびその他のクラウド固有のシステム向けに機能する設計であり、Gitのデプロイ、管理、およびコンテナー化されたクラスターと目的の監視を統合する一連の非常に優れた手順を提供します。
結論からエンドまでのCI/CDパイプラインとGitワークフローが各操作と開発に利用されるプログラムを正確に処理するための、開発者の実践的な経験の方向への道。
希望する構成がここで宣言されているため、Gitは真の真実の孤独なリソースです。 Kubernetes内で実行されるGitOpsエージェントがあり、Kubernetes内の実際のポイントと、Gitに保存されている求められているポイントを定期的に比較します。 Gitの監視対象部門に統合された新しいバリエーションは、即座にKubernetesに適用されます。 逆に、Kubernetesに使用されていたハンドブックのバリエーションは、Gitで宣言された理想的な状態に機械的に戻されます。 構成のドリフトが排除されます。
Gitは、その不変の構成のおかげで、GitOpsに適用されるため、通常、真の真実の1つのリソースとして適切に説明されます。 特に、ファイアウォールとは対照的に、CIとCDの間の懸念を分離する境界を維持するのに役立ちます。 このように、CIの一部としてのアプリケーションの進歩に関係するさまざまな方法(プルリクエスト、スクリーニング、コミットなど)。 —Gitで分離し続けます。
プルリクエストを作成する開発者の場合、プルリクエストは、レビューおよび許可された時点でマージされ、次の調整でクラスターに定期的に使用されます。これには通常15分かかります。
デフォルトでは、プロセスは双方向です。これは、Kubernetesに直接作成された変更が、将来の調整ループの実行時にGitで往復することを意味します(通常は15分ごと)。 それでも、DevOpsの従業員メンバー、またはさらに悪いことに、ネガティブアクターの侵入者がクラスターに即座に変化をもたらす場合、この状況は最善よりも大幅に低くなります。 これらのクラスターへの直接のバリエーションは、マージ要求と承認によって適切に検証されておらず、その結果、ドリフトが発生したときに問題の真実の不変の供給として機能するGitのGitOps理論に違反しています。
ドリフトの発生を軽減するための代替手段として、Gitで使用されていない変更がクラスターに作成された場合、GitOpsチェックリソースはアラートを送信できます。 これが発生すると、監査証跡のおかげで、Gitのソフトウェアコードは、クラスターに設計された誤った変更を交換できます。デプロイされたコントローラーは、ランタイムの自然環境で指摘されます。
逆に、不変性が達成されない場合、ドリフトが発生する可能性があります。 これは、ネットワーク攻撃の当事者で、またはDevOpsスタッフメンバーがクラスター構成を誤って変更したためにGitにあるものとは異なる場合に、発生する可能性があります。 これが発生すると、適切なGitOps機器を使用して不一致のフラグが立てられ、GitOpsプロセスが存在する典型的なDevSecOpsを象徴します。
適切なアプリケーションは、継続的なチェックのシステムを自動化して、Gitリポジトリの構成の目的のポイントがKubernetesクラスターの実際の状態と一致することを確認します。 また、リポジトリの宣言された状態で効果的に専用化されるとすぐに、展開を調整して全体を調整するためにも使用されます。
監査管理
GitOpsが提供する監査機能は、DevSecOpsの支援にとっても重要です。 事実の1つの供給としてGitリポジトリに残ることにより、すべてのアプリケーション、コード、および構成がバージョン管理され、保護された自然環境の主な必要性である監査パス全体が保持されます。 この監査証跡は通常、開発者と運用スタッフに等しく提供され、クラスターで何が動作しているかを確認するために購入します(ほとんどのユーザーは、クラスター構成への参照のみのアクセスに制限されています)。
開発者は、機能やDevSecOpsスタッフの顧客のように監査証跡に大きく依存する必要はないかもしれませんが、発生したバリエーションと、発生したリポジトリの調整の背後にあるドライブを理解する機能を利用できます。 。 一言で言えば、開発者にとって、そしてすべてのDevOpsスタッフメンバーにとって、すべてのものはGitログから離れているだけです。
Gitの監査証跡も利用可能であり、ビルダーが必要に応じて表示するのは非常に簡単です。 これは、プロセスの仕上げの遺産が、ビルダーが理解しているレポートのGitプログラムに取り込まれているという事実によるものです。
監査証跡が利用できるため、問題を引き起こしたアプリの調整をすばやくロールバックすることも可能です。 これは、クラスターが危険にさらされたり、誤って構成されたりした場合に特に役立ちます。 この場合、クラスターを最初から再構築するために所有する代わりに、監査証跡は、リポジトリ内で求められているポイントで構成されます。 次に、監査証跡から目的のポイントを示すクラスター構成とプログラムがデプロイされ、再構築手順が自動的に行われます。
「王国への鍵」の数

ビルダーは通常、自動化サーバーであるJenkinsに依存して、Kubernetes環境のパイプラインを製造するためのCI / CDの開発、調査、および支援を行っています。 GitOpsがない場合、開発者はコードを直接デプロイするときに、他の場合でもKubernetesクラスターにすぐにアクセスできる可能性があります。 言い換えれば、ビルダーは、組織の構成要素であるか、リモートで操作する請負業者であるかに関係なく、出力環境にすぐにアクセスでき、会話するための「王国への鍵」を持っています。 これが理想的な安全環境になることはめったにありません。
前述の場合、選択するのは、不適切なユーザー、またはさらに悪いことに侵入者が、ノートブックから実行できる製造中のクラスターにKubeConfigまたはKubectlコマンドでアクセスできるようにすることだけです。 攻撃者がCIプロセスを侵害し、クレデンシャルが確立された場合、たとえば、攻撃者はCIシステムがアクセスできる任意のクラスターにアクセスできる可能性があります。
GitOpsがユーザー(または攻撃者)がトレースを残さずにクラスター構成を変更するのを防ぐのに役立つという単純な事実は、開発者の精神的負荷を最小限に抑えることをサポートすることに加えて、主に運用チームと安全チームにとって不可欠です。 たとえば、manageを取得することにより、開発者は通常、Kubernetesノードやkubectlコマンドラインに直接アクセスする必要がなくなります。 GitOpsは、ビルダーがGitで概説するほぼすべてのものを調整しますが、ビルダーが一意のアクセス制御権限を持っている場合を除き、Kubernetesクラスターまたは製造環境に手動でアクセスすることはできません。
GitOpsのDevSecOpsは、CDのこの攻撃ベクトルの状況を阻止し、「王国への鍵」を保護する方法として機能します。 オープンソースFluxなどのGitOpsオペレーター(これについては以下で追加)がKubernetes内で実行され、その結果、クラスターにアクセスできる場合、取得コントロールはKubernetes安全フレームワーク内にあり続けます。 消費者のアクセシビリティは、特徴的なグループおよびグループメンバーの名前空間に特権を割り当てることによって確立されます。
DevSecOpsとGitOpsがどのように別の人に非常に役立つかという例として、米国国防総省(DoD)、米国空軍のメインコンピューターソフトウェアオフィサーであるNicolas Chaillanは、少し前にDevSecOpsとGitOpsがどのように機能するかを説明しました— Fluxを使用—は、米国の治安部隊の全範囲をサポートするソフトウェアプログラムの進歩において重要な役割を果たします。
「安全性とセキュリティは交渉の余地がありませんが、開発者自身の会社にも効率と速度を向上させてほしいと思っています」とChailan氏は述べています。
一例として、GitOpsは、「国防総省全体でプラットフォームを1つだけ設定および展開することで達成するための鍵」であるとDoDは主張しています。 DoDによると、System Just oneは、セキュリティパイプラインが組み込まれた、「許可された、強化されたCloud Indigenous Computing Foundation(CNCF)準拠のKubernetesディストリビューション、コードプレイブックとしてのインフラストラクチャ、および強化されたコンテナの組み合わせ」です。
抑制と均衡
DevSecOpsプロシージャは、GitOpsサプライチェックおよびバランスと組み合わされます。 このように、このアクセシビリティコマンドは、開発者(または侵入者)が、CIの期間中、バックドア、ゼロデイ、またはさらに別の形式の脆弱性を導入するために、サプライコードリポジトリにアクセスするのを防ぐのに役立ちます。手順。 これは、すべてのプルリクエストがピアレビューされるためです。
DevSecOpsがCIシステムをサポートしているため、コードの前に使用されるチェックとバランスはGit専用であり、クラスターにデプロイされます。 開発者は通常、ピアレビューされるプルリクエストとして変更を投稿します。 レビューと承認が行われた後、コードはGitでマージされ、求められている状態のYAMLファイルがそれに応じて変更されます。
希望する条件はすぐにKubernetesクラスターに適用されます。 前述のように、DevSecOps機能を備えた正しいGitOps機器は、目標プロセスの正確な状態を常に追跡し、Gitで宣言された内容に確実に対応できるようにします。 差異がある場合はアラートが発行されるため、修正動作を実行できます。
DevSecOpsの意見
多数のGitOps機器がDevSecOpsを支援します。 オープンサプライフラックスは、その一例として、Gitリポジトリを真の真実の1つの不変のソースとして維持するのに役立ちます。 Fluxの機能は、専用でデプロイされたコードのCI/CD中のチェックとバランスを調整するアクセシビリティにも拡張されます。
はるかに意見の分かれるFluxエンカウンターについては、オープンソースのWeave GitOps Mainが、多くのクラスター全体でCI/CDの自動化を可能にする最初の方法を簡素化します。 Weave GitOps Mainを使用してGitOpsおよびDevSecOpsメソッドを配置するシステムには、コンソール上にいくつかの単純なコマンドが含まれます。
Weave GitOps Companyは、Kubernetesの安定したアプリケーション転送と自動運用管理を自動化する最初のGitOpsプラットフォームとして登場しました ハイブリッドクラウド、マルチクラウド、およびエッジアーキテクチャ全体のあらゆる規模で。
いくつかのツールはすべて、監視を自動化して、クラスター構成が通常Gitにあるものと一致することを保証し、ドリフトを回避するのに役立ちます。 完全で利用可能な監査証跡により、クラスターを最初から再構築する必要なしに、アプリケーションとクラスター構成のロールバックを基本的な基盤で作成できます。
要約すると、GitOpsは、分散したKubernetes環境向けのDevOpsの進化を意味しますが、DevSecOpsは、アプリケーションのライフサイクルを通じてGitOpsのCI/CDの安定性を維持するための重要な方法として浮上しています。
Steve Waterworthは、 Weaveworksのテクニカルマーケティングスーパーバイザーです。