人々が端末を調べる様子

構成ドリフトとは

構成ドリフトの定義

構成ドリフトとは、ネットワーク、アプリ、デバイス、その他のITシステムが、意図しないうちに徐々に本来の基準設定から逸脱してしまうことです。処理能力の問題や、それらに伴うダウンタイムにより、企業は1分あたり数千ドルもの損失を被る可能性があります。

システムのライフサイクルを通じて、ある程度の構成ドリフトが生じることは避けられません。これは、構成要素同士の相互作用に影響を与えるネットワークへの手動での変更や、管理者が意図しない方法で自動ツールによる設定の微調整が行われた際に発生する場合があります。適切な資料がなければ、旧管理者から新しい管理者に移行する場合に、互換性に欠ける変更や有害な変更が行われる可能性があります。

構成ドリフトの典型的な例の1つに、管理者が負荷分散環境のサーバー1台に修正プログラムを適用し、他のサーバーには適用しないケースが挙げられます。この場合、システムが当面は正常に機能していたとしても、将来的に問題が発生する可能性があります。パッチが適用されたサーバーは、元の状態を前提とする将来のネットワーク更新との互換性に欠ける新しいライブラリを使用する可能性があり、障害や非効率性につながる可能性があります。

構成ドリフトの影響は、パフォーマンスへの脅威にとどまりません。意図された設定から逸脱したシステムは、悪意のある攻撃者やデータ侵害に対してより脆弱になる可能性があります。例えば、新しい参考情報がネットワークに追加されるたびにファイアウォールのルールが更新されなければ、ハッカーに容易に侵入されてしまう可能性があります。

構成ドリフトは、コンプライアンス状況にも影響を与える可能性があります。ある一連のセキュリティー設定が資料に記載されていても、ライブ環境が異なる場合、組織は監査に合格しない可能性があります。

DevOpsの専門家やシステム管理者は、設定ミスを防ぎ、構成ドリフトに対処するために自由に使えるツールを備えています。Terraform などのInfrastructure as Code(IaC)ツールは、ネットワーク構成を信頼できる情報源となる構成ファイルに結び付けます。構成ファイルは、新しい参考情報が適切な状態で自動的にプロビジョニングされることを保証し、ドリフトの機会を減らすのに役立ちます。

オブザーバビリティー・ツールは、管理者がメトリクス、ログ、トレースを可視化し、構成ドリフトを発生時に発見して修正を適用するのに役立ちます。不変のインフラストラクチャーでは、修正プログラムを適用するのではなく、古いサーバーを破棄することでドリフトを抑えます。構成ドリフトは、Ansibleなどの構成管理ツールで処理されることもあります。

コンフィギュレーション・ドリフトの原因

構成ドリフトは、手動でのシステム構成の変更、自動化の失敗、不整合につながる組織レベルの問題、またはこれらの要因の組み合わせによって引き起こされるケースが最も一般的です。

手動修正プログラム

構成ドリフトの主な原因は、1回限りの手動修正プログラムです。

「ホットフィックス」とは、通常の更新スケジュール外に適用される修復のことを指し、間違ったタイムアウト値が設定されているためにクラッシュし続けるサーバーなどの問題を、即座に修正プログラムを適用することで解決できます。しかし、このような構成への変更は、将来的にシステムを故障させる可能性があります。

  • この修正プログラムを考慮していないシステム更新に後の段階でプログラムが上書きされ、元のバグが戻ってしまう可能性があります。

  • このような修正プログラムには、ネットワークの今後の更新を考慮せず、更新との互換性に欠ける依存関係が含まれる可能性があります。

  • 修正プログラム用に作成された一時的な管理者認証情報が有効なままになる可能性があり、追加のセキュリティリスクが生じる可能性があります。

ヒューマン・エラー(または単に予期せぬ結果)がシステムを「あるべき」状態から遠ざけてしまうパターンは無数にあります。たとえ小さな変更であっても、積み重なると、本番環境がリポジトリとはほとんど似ても似つかないものになり、バグやセキュリティー・リスクが多発することになります。

ローグオートメーション

適切なテストと監視がなければ、自動化された更新やプロセスによって、重要な参考情報が意図した構成から逸脱してしまう可能性があります。

自動化による成果は、信頼できる情報源の質にかかっています。例えば、IaCツールが新しいサーバーを起動するために古い構成ファイルに依存していると、環境を破壊してしまう可能性があります。Microsoft Windowsのようなアプリやオペレーティング・システムに対するソフトウェアの自動更新は、サーバー間で異なるタイミングで適用され、潜在的に有害な乖離を引き起こすかもしれません。また、これらの更新は、組織独自のネットワーク・アーキテクチャではうまく機能せず、さらなる問題を引き起こす可能性もあります。

構成を管理することを目的としたツールでも、状況によってはドリフトを引き起こす可能性があります。例えば、接続の問題によりAnsibleが構成の更新を不規則に適用し、1台のサーバーが変更されないままになるケースです。そのサーバーは環境から徐々に逸脱し、サービス障害を引き起こす可能性があります。

組織上の問題

組織レベルでは、継続的なシステム連携や継続的デリバリー(CI/CD)パイプラインとDevOps運用に関する問題が、構成上の問題につながる可能性があります。

開発、オペレーション、セキュリティーの各チームが互いに孤立している場合、混乱や誤解、不十分なトラブルシューティングが生じることは避けられません。技術的運用におけるばらつきに加え、組織内のチームは、チェンジ・マネジメントのための独自のプロセスを有する場合があります。中には、正式なチェンジ・マネジメントのプロセスをまったく持たない組織もあります。

変更を行い文書化するための明確な手順が確立されていないと、変更ログにおける一貫性の欠如、不正な変更、承認ワークフローの機能不全につながる可能性があります。最終的には、管理者、開発者、エンジニアがチェンジ・マネジメントのプロセスを完全に回避してしまう可能性があります。

構成ドリフトのリスク

構成ドリフトは、システムのセキュリティー、パフォーマンス、コンプライアンスの状況に深刻なリスクをもたらします。

サイバーセキュリティー

構成ドリフトは、管理者が認識しておらず未修正のままになっているセキュリティー・ポリシーの例外を生み、組織の攻撃対象領域を大幅に拡大してしまう可能性があります。

例えば、ホットフィックスを適用するために作成された認証情報がそのまま放置されると、悪意を持ってそれを使用する可能性のあるハッカーに対して脆弱な状態になることがあります。同様に、エンジニアが「決して戻って閉じない」というファイアウォール・ルールに例外を設けた場合、ネットワーク全体のセキュリティー体制を大幅に弱めてしまう可能性があります。さらに、開発者がテスト目的でセキュリティー制御が不十分なアプリケーションを有効化したまま無効化し忘れると、悪意のある攻撃者にエクスプロイト攻撃され得る新たなセキュリティ脆弱性が生じてしまう可能性もあります。

同様に、適切なセキュリティー制御が適用されていない場合、新しいアプリ、エンドポイント、またはその他の参考情報がシステムに追加されるたびに、構成ドリフトが発生する可能性があります。例えば、EDR(エンドポイントの検知と対応)システムを適切に構成せずに新しいサーバーを追加すると、脆弱なリンクが作成される可能性があります。マイクロサービスの構成に単純なミスがあると、保護されていない大量の資産がネットワークに侵入する事態につながりかねません。

パフォーマンス

サイバーセキュリティーと同様に、ネットワーク性能は、構成ドリフトがもたらす最も深刻かつ損失コストの大きなリスクです。

あるサーバーに、他のサーバーよりも大量のトラフィックが集まっている例を考えてみましょう。このサーバーの処理能力を改善するために、ホットフィックスによって接続プールのサイズを拡大することが考えられます。このサーバーはロード・バランサーの背後にあるため、バランサーはトラフィックを自身に振り分けてサーバーの負荷をより均等に分散するポリシーを自動的に設定します。

新たなデプロイメント中にサーバーが交換されると、プールを拡大していたホットフィックスが適用されなくなり、トラフィックが増加してサーバーがクラッシュします。トラフィックを高速化するために適用されていた元のホットフィックスがドリフトです。これを考慮しない場合、ネットワークにさらに変更を加えてしまうと、原因が特定されるまでの間に損失の大きなダウンタイムにつながる可能性があります。

コンプライアンス

構成ドリフトは、いつのまにか組織がコンプライアンス違反に陥る原因となる可能性があります。組織の「認識」、あるいは資料に記載されている内容からネットワークの状態が逸脱した場合、組織はコンプライアンス違反のリスクにさらされます。コンプライアンス違反が意図的ではない場合でも、組織は罰金や手数料を科される可能性があります。

医療保険の相互運用性と説明責任に関する法律(HIPAA)を例にとってみましょう。HIPAAは、組織が転送中や保存中の機密データを保護する目的で、特定の暗号化の手段を使用することを義務付けています。

管理者がHIPAA準拠のネットワークにレガシー・システムを統合する必要があり、このレガシー・システムでは暗号化の古い手段が使用されているとします。この暗号化の手段に対処しない場合、統合によって組織はHIPAAに準拠しなくなってしまいます。

AI Academy

ハイブリッドクラウドでAI対応を実現

IBMのエキスパートが主催するこのカリキュラムは、ビジネス・リーダーが成長を促進するAI投資に優先順位を付けるために必要な知識を習得できます。

構成ドリフトを修正プログラム・防止する方法

ドリフト検知(ネットワークへの変更を追跡し、意図された状態からの逸脱を特定する手法)には、コードとしてのインフラストラクチャー、GitOps、不変のインフラストラクチャー、オブザーバビリティーなどのツールの組み合わせが必要です。

コードとしてのインフラストラクチャー(IaC)

IaC(コードとしてのインフラストラクチャー)は、手動プロセスではなくスクリプトを使用してITインフラストラクチャーをプロビジョニング・管理する手法で、構成ドリフト管理のための最も強力なツールの1つです。

IaCは、ネットワークの望ましい状態を、すべてのネットワーク・コンポーネントを比較できるバージョン管理されたコードに変換することで、構成ドリフトに対処するのに役立ちます。

例えば、Terraformでは、変更が加えられると、IaCツールは状態ファイル(プラットフォームのネットワークに対する最新の見方)を宣言された構成ファイル、つまりネットワークが「あるべき」状態を示すファイルと比較します。Terraformは、状態ファイルと宣言された構成との間の不一致を、構成ファイルに合わせてインフラストラクチャーを更新することで解決し、ドリフトが発生する可能性を低減します。

組織がIaCツールに厳格なアクセス制御を課すと、ドリフトの可能性はさらに減る可能性があります。IaCへのアクセスを許可された個人のみに制限することで、インフラストラクチャー構成全般を変更する能力を組織は制限できます。また、変更が行われるとIaCバージョン管理プロセスが実行されるため、ドリフトのリスクがさらに軽減されます。

GitOps

GitOpsは、オープンソース・リポジトリGitを構成ファイルの信頼できる唯一の情報源として使用するDevOpsの運用手段です。GitOpsは、最大限の効率とセキュリティーでIaCをデプロイするのに多くの組織で役立っています。

GitOps運用では、オートメーションを使用し、Gitに保管されている望ましい状態に照らしてネットワークの状態をリアルタイムで検証することに重点が置かれています。GitOpsプラットフォームでは、ネットワークを継続的にスキャンし、誤った構成を検知してフラグを立てたり修正プログラムを適用したりできるため、ドリフトが発生しても一時的なものにとどまります。また、すべての変更はGitに関連付けられているため、作成者、タイムスタンプ、説明とともにすべて追跡されます。

変更不可能インフラストラクチャー

不変のインフラストラクチャーは、ネットワークの構成を変更する機会全体を大幅に減らすことで、構成ドリフトを軽減します。

変更不可能インフラストラクチャーとは、変更が必要な場合に、サーバーやその他の参考情報を変更せずに交換する手法です。

例えば、サーバーにおけるセキュリティーの更新が必要だと仮定します。管理者は既存のサーバーに更新を適用する代わりに、そのサーバーを廃止し、新しく更新されたサーバーに置き換えます。

不変のインフラストラクチャーは、変更が必要な場合に、コードで記述されている通りに新しいシステムを自動的にデプロイするIaCツールを利用します。ネットワークに追加される新しい構成要素はすべて、望ましい状態に自動的に適合されます。

IaC、GitOps、不変のインフラストラクチャーの3つのプロセスは密接に関連しています。IaCツールはネットワーク・コンポーネントのイメージを定義する一方で、GitOpsはデプロイメントを容易にし、ネットワークの包括的な記録を構築して不整合を防止します。

可観測性

オブザーバビリティーの3つの柱(ログ、メトリクス、トレース)も、構成ドリフトを防ぐ役割を担います。

例えば、オブザーバビリティー・プラットフォームは、あるサーバー上のメトリクス(応答時間やCPU使用率など)が、同一の構成を持つはずのサーバーから大きく乖離していることを検知する場合があります。このような乖離は、ドリフトの潜在的な症状です。同様に、各サーバーのエラー率ログに差異が見られる場合、あるサーバーで特定の種類のエラーが異常に多く発生しているなど、ドリフトが発生している可能性が示唆されます。アプリケーションの呼び出しチェーンのトレースから、逸脱やドリフトが発生している場所が明らかになる場合もあります。

ドリフト検知

ドリフト検知とは、ネットワークの実際の状態を望ましい状態と比較して不整合を検知する手法です。理論的にはこのプロセスを手動で実行することもできますが、クラウドやIaCプロバイダーの多くはドリフト検知機能を備えたツールを提供しており、これは時間のかかるプロジェクトを自動化・合理化するのに役立ちます。

例えば、AWS ConfigはAWSモジュールの構成を記録し、望ましい状態からの逸脱があればフラグを立て、ドリフトの修復を促進します。Terraformの正常性評価は、実際のインフラストラクチャー設定がワークスペースの状態ファイルに記録された設定と一致しているかを確認し、リソースがシステムの構成で定義された必要なチェック項目を満たしていることを継続的に検証します。

Terraform Enterpriseは、条件を状態ファイルと比較するか、実際の条件を反映するように状態ファイルを更新して、変更を明らかにします。AnsibleやPuppetなどの構成管理ツールもドリフト検知に使用できます。

共同執筆者

Derek Robertson

Staff Writer

IBM Think

Matthew Kosinski

Staff Editor

IBM Think

関連ソリューション
IBM® Instana Observability

AIとオートメーションの力を活用することで、問題がアプリケーションスタック全体でプロアクティブに解決します。

IBM Instana Observabilityの詳細はこちら
AIOpsソリューション

IT運用のためのAIが、卓越したビジネス・パフォーマンスを実現するのに必要な洞察をどのように提供するかをご覧ください。

AIOpsソリューションの詳細はこちら
テクノロジー・コンサルティング・サービス

IBM Consultingの業界知見を活かし、スケーラブルなデジタル・トランスフォーメーションを推進します。

テクノロジー・コンサルティング・サービスの詳細はこちら
次のステップ

ITオペレーション用AIを活用して、優れた業績を実現するための洞察を得られる方法をご紹介します。

  1. Instana Observabilityの詳細はこちら
  2. IBM® AIOpsの詳細はこちら