構成ドリフトのガイドとそれを防ぐ方法
公開: 2022-08-26構成のドリフトは、すべての IAAC 開発者にとって重要な問題です。 この投稿では、構成ドリフト管理、その重要性、原因、および考えられる解決策について学習します。
構成ドリフトとは何ですか?
アプリケーションの所有者は、カスタマー エクスペリエンスを継続的に向上させるために、アプリと基盤となるインフラストラクチャを徐々に変更する必要があります。 これらの顧客は、会社の内部または外部のいずれかである可能性があります。

これらの更新と変更の結果として、アプリとインフラストラクチャの構成が変更されます。 これらの変更は、システムの強化された状態を有益にするか、または低下させる可能性があります。 構成ドリフトは、これを表す用語です。
構成ドリフトのしくみ
ソフトウェアの生産および配信システムが複雑になると、構成のドリフトの可能性が高まります。 コードは通常、開発者のワークステーションから共有開発環境、テストおよび QA 環境、そして最終的にはステージングおよび実稼働環境に転送されます。

潜在的な影響は、ドリフトが発生するパイプラインに沿った距離に応じて増加します。 開発者のラップトップにインストールされたパッケージ バージョンと、テスト サーバーにインストールされたバージョンとの間のわずかな違いでさえ、問題のデバッグが遅れる可能性があります。 通常、ステージングと本番のみが相互のレプリカであると想定されます。 多くの企業が新しいコードを毎日何度もデプロイしているため、負担は深刻です。
構成ドリフトの一般的な原因

コミュニケーションの欠如
場合によっては、アップストリーム チームが、ダウンストリーム パートナーが行った変更についてダウンストリーム パートナーと通信できず、その結果、ダウンストリーム システム全体が機能しなくなることがあります。
ホットフィックス
ホットフィックスは、次に予定されているアプリケーションの更新まで待つことができない重大な問題に対処するために行われるコードの変更です。 問題の解決に取り組んでいるエンジニアが、パイプライン内の他の環境に変更を加えたり、同じ修正を文書化したりするのに失敗することがあり、その結果、ドリフトが発生します。 多くの場合、元の問題を再導入すると、このドリフトが解決されます。

重要なパッケージの更新
重要なパッケージの更新は、修正プログラムに多少似ています。 どちらも高速で実行されます。 主な違いは、将来のインシデントを回避することを期待して、重要なパッケージの更新が適用されることです。 そのため、このような更新はホットフィックスと同じ方法でドリフトを引き起こす可能性があります。
自動化の欠如
自動化によって、構成のドリフトの可能性が完全になくなるわけではありません。 その可能性を減らすだけです。
利便性の変化
開発者が行った変更は一時的なものである場合があります。 たとえば、開発者がテスト サーバーに新しいパッケージをインストールして一部の機能をテストし、それを元の状態に戻すのを忘れた場合にドリフトが発生します。
構成管理が重要な理由
構成のドリフトが大きな損害を与える可能性がある理由の 1 つは、壁の後ろにある家の小さな漏れのように、ドリフトがインフラストラクチャの基盤を徐々に弱体化させていくにつれて、ドリフトが発見されない可能性があることです。
構成のずれが発見された場合、すべての原因となった構成のずれの根本的な原因を見つけるには時間がかかりますが、これは緊急時の貴重なリソースです。

ソフトウェア開発では、ドリフトはリリース サイクルが遅くなる重大な原因です。 不必要な作業が発生し、開発者の生産性が低下する可能性があります。
低コスト
IT インフラストラクチャの詳細なイメージがあれば、重複やオーバープロビジョニングを特定することで、必要な全体の量を減らすことができます。
生産性の向上
安定したよく知られている構成のクラスタにより、バッチ管理とインフラストラクチャの構築が可能になります。 さらに、固有の (またはスノーフレーク) サーバーを制限することで、個々の設定を手動で管理する必要性が減少します。
デバッグの高速化
一貫した構成により、デバッグ チームは構成ミスを排除できます。 チームは、サーバー、サーバー クラスター、または環境間の構成の不一致を探す必要がないため、他の潜在的な原因に集中してチケットを迅速に解決できます。
設定のずれが原因で発生する問題

セキュリティ上の問題
安全でない構成は、セキュリティ侵害の最も頻繁な原因の 1 つです。 保護された構成から始めたとしても、構成のドリフトにより、他の攻撃やネットワーク侵害の可能性が高くなる可能性があります。
ダウンタイム
重大なダウンタイムは、攻撃者が DoS の欠陥を使用したり、重要なサーバーを侵害したりすることを可能にする構成エラーが原因である可能性があります。 それだけではありません。 ネットワーク デバイスの構成を変更して、パフォーマンスに影響を与えたとします。 いつでも「ゴールデン コンフィギュレーション」に戻ることができますよね? その構成に欠陥がある場合、サービスの復元にはさらに長い時間がかかります。
コンプライアンス違反
ISO 27001、PCI-DSS、HIPAA などの規制に準拠するには、厳格なセキュリティ管理が必要です。 構成のドリフトを停止しないと、コンプライアンスに違反する可能性があります。
パフォーマンスの低下
通常、構成は意図した状態にあるときに最適な状態になります。 アドホックな変更は、ボトルネックや競合を引き起こし、ネットワークの最適化の試みを妨げる可能性があります。
無駄な時間
よく理解していない、またはネットワークのドキュメントと一致しないネットワークのトラブルシューティングには、長い時間がかかる場合があります。 つまり、設定のずれにより、ユーザーにダウンタイムが発生するだけでなく、ネットワークが意図した状態であれば存在しなかったか、より簡単に解決できたはずの IT トラブルシューティングの問題が発生する可能性があります。
構成ドリフトを監視するときに注意すべきよくある間違い

完璧な世界では、開発者 (Dev/QA/Staging/Prod) 用のすべての環境サーバーが同じ構成になります。 残念ながら、それは「現実の」世界で物事がどのように機能するかではありません。 商用環境では、ソフトウェアに新しい機能が導入されると、アプリケーションの所有者がインフラストラクチャを頻繁に変更します。

ソフトウェア環境を可能な限り均一にするためには、構成のずれを監視することが重要です。 管理を構成すると、費用が削減され、生産性とデバッグ時間が向上し、ユーザー エクスペリエンスが向上します。
監視を可能な限り成功させるには、構成管理を使用して構成のドリフトを監視する場合でも、組織は間違いを回避する必要があります。
よくある間違いを以下に示します。

CMDB を維持しない
構成管理データベース (CMDB) を最新の状態に保つことは、構成管理の重要な要素です。 ネットワークのハードウェアおよびソフトウェアのインストールに関する情報は、構成管理データベースによって提供される 1 か所で調べることができます。 アセットまたは構成アイテムごとにデータが収集され、職場での可視性と透明性が提供されます。
CMDB を維持しないと、企業は、あるアイテムの構成が別のアイテムにどのように影響するかを完全に理解できないという危険にさらされます。 組織は、結果を理解せずに、インフラストラクチャとセキュリティに損害を与える危険があります。
CMDB は、特にアセットの数が増えると管理が難しくなる可能性がありますが、効果的なデータベースの編成と管理は、構成のドリフトを追跡し、インフラストラクチャを理解するために不可欠です。
構成ドリフトを監視する方法の計画がない
多くの場合、組織には監視が必要な大規模で複雑なインフラストラクチャがあります。 どのコンポーネントを最も監視する必要があるかを判断することは非常に重要です。 そうしないと、構成管理がすぐに管理不能になり、無秩序になる可能性があります。
組織は、企業の監視と特定のビジネス ユニットに不可欠な資産を特定する必要があります。 最も重要なシステムが監視されますが、これはユニットごと、業界ごとに異なります。
自動的に監視しない
組織は、いくつかの方法で構成のドリフトを監視できます。 ただし、一部のアプローチは他のアプローチよりも洗練されており、成功しています。
構成のずれを手動で監視するには、コストと時間がかかります。 手動による監視は、人的ミスの可能性も露呈します。 これは、会社のインフラストラクチャ フットプリントが非常に小さい場合を除き、構成のずれを監視するための最適な手法ではありません。
自動監視は、構成を望ましい状態に保つための最も開発された効率的な方法です。 専用の構成監視システムは、ドリフトを即座に検出し、迅速な修正を含むソリューションを頻繁に提供できます。 これにより、ビジネスのインフラストラクチャが可能な限り迅速に、最小限の影響で目的の状態に戻ることが保証されます。
構成ドリフトを監視する方法:

構成ドリフトが引き起こす可能性のある損害を理解すると、構成ドリフトの検出が最大の関心事である理由が明らかになります。 何を維持すべきか、そしてなぜそれがドリフトを引き起こした変更として提示されたのかを知ることが、そのプロセスの最初のステップです。
探しているものを知る
組織全体にとって重要なコンポーネントと、各ビジネス ユニットにとって重要なコンポーネントを特定することで、組織をトリアージできます。
これはユニットによって異なり、規制の厳しい業界では広範囲に及ぶ場合もあれば、より狭いシステムクリティカルなファイル/アプリケーションのみに焦点を当てる場合もあります。 システムの重要性によって、監視システムの頻度と深刻さが決まります。
ベースラインを設定する
さまざまな設定があるため、本番環境とテスト段階の間には常に差異があります。 ドリフトをチェックするためのベースラインは、各ステップがどうあるべきか、および許容される偏差のタイプを定義することによって作成されます。
初期のテスト段階は、ユーザー受け入れテストの設定やドリフトゼロの製造段階よりも高いドリフト許容値に適している場合があります。
システムを監視する
必要な監視のレベルは、組織の成熟度、現在のシステム、ツール、チェックが必要な構成の総数、および必要な精査のレベルによって異なります。 要件とコンプライアンスに応じて、監視は組織内の各ユニットで異なる場合があります。
設定のドリフトを防ぐ方法
監視では、構成のベースラインと許容されるギャップが定義された後、インフラストラクチャが適切な構成に保たれていることを確認する必要があります。 監視戦略がなければ、構成計画とドキュメントの作成に時間がかかります。
さまざまなアプローチを採用して構成のドリフトを監視できます。多くの企業は、成熟度とコンプライアンス要件に基づいて方法論とツールを組み合わせます。
常時手動監視
個々のマシン構成を手動で確認し、既知の構成ファイルと比較できます。 人的側面のため、このプロセスは依然としてエラーが発生しやすく、従業員の時間に関しては費用がかかります。 I は、少数の特定のサーバー クラスター、または適度なインフラストラクチャ フットプリントを持つ企業の小規模でのみ使用する必要があります。
監査

チームは、構成監査の一環としてサーバー構成を手動で調べ、指定されたモデルと比較します。 これらの監査は、システムをどのように構築すべきかを決定するための専門知識を必要とし、それを維持するかどうかを決定するために文書化されていない可能性を徹底的に調査する必要があるため、費用がかかる可能性があります。
また、監査チームは、次の監査で適用される構成文書に必要な調整を行います。 監査は通常、高価値またはコンプライアンス重視のクラスターに対して保持され、時間とコストを考慮して、定期的に (通常は年に数回) 実行されます。
監査は、あらかじめ決められたスケジュールで、一貫性があり反復可能なサーバー構成を保証します。
ただし、次の監査まで、設定はドリフトし、ますます残ります。
リアルタイム自動モニタリング
自動化されたリアルタイム監視は、構成を望ましい状態に保つための最も洗練された方法です。 これを行うには、サーバーまたはサーバーのグループを作成し、専用のサーバー セットアップ ツールを使用してそれらを構成する方法を説明する必要があります。
これらのプログラムは軽量エージェントを使用して、そのグループ内のサーバーの構成を監視し、その定義と比較します。
この自動化されたプロセスは、ドリフトについて即座に警告し、通常、サーバーのドリフトを修正するためのいくつかの選択肢を提供します。
最後に:
コンピューターまたはデバイス間で一貫性のない構成アイテム (CI) が構成ドリフトの根本的な原因です。 データセンター環境では、完全に文書化または追跡されずにソフトウェアとハードウェアの変更がオンザフライで行われると、構成のドリフトが自然に発生します。
多くの高可用性および災害復旧システム障害は、構成のずれが原因です。 管理者は、構成のドリフトを最小限に抑えるために、ハードウェア デバイスのネットワーク アドレス、インストールされているソフトウェアのバージョン、および行われたアップグレードについて細心の注意を払って記録する必要があります。