おそらく、私たちはおそらくこのような状況に陥っています。いくつかの問題をデバッグしましたが、それが6か月前に行った構成の変更が原因であり、なぜそれをしたのか思い出せないことに気づきました。元に戻し、問題を修正すると、他の問題が再び発生します。ああ、今覚えています!次に、それを適切に修正します。
それはあなたが適切なメモを取らなかったからです、あなたはばかです!しかし、これを行うための良い方法は何ですか?
エンジニアリングには、変更の検出と追跡を支援するためのソフトウェアがたくさんあります。ソース管理、コードレビューなど。すべての変更が追跡され、すべての変更にはそれが何であるかに関するコメントが必要です。また、通常のエンジニアリング部門では適切なコメントが必要であるため、6か月以内にそのような理由で問題を解いた場合、履歴の「非難」機能またはバイナリ検索ビルドを使用して問題を特定できます。これらのツールは、非常に効果的なコミュニケーションツールおよび履歴記録です。
しかし、サーバーランドでは、500の異なるサービスがあり、それらの構成方法はすべて異なります。そして、それらはテキスト形式を持っているかもしれませんが、常にテキスト形式を持っているわけではありません(フォルダーのアクセス許可の設定またはページファイルの場所の変更を検討してください)。
私たちの環境では、PERFORCEに入れることができる構成ファイルをチェックインしますが、それらのファイルはほとんどありません。 Active Directory DBを正確にチェックインすることはできません。おそらく、差分である可能性があるダンプです...
過去に私はwikiに手動の変更ログを保存しようとしましたが、これを行うための規律を維持することは非常に困難です(よくわかりませんが、本当に難しいです)。
私の質問:サーバーの構成変更を追跡するこの問題に対処するためにどのような戦略とツールを使用しますか?
-更新-
注:サーバーの変更の追跡に役立つ自動化ツールと同じくらい、共有メモ作成ツール(OneNoteに精通しているなど)を探しているのではありません。サーバー構成の変更を追跡するための包括的なツールはありませんが、GPOのような特定のアプリケーション用のツールがおそらくあるでしょう。
また、私は特定の戦略に非常に興味があります。 「Sharepointでメモを共有する」はかなりあいまいです。規律をどのように維持しますか?変更の追跡にはどの形式を使用しますか?変更データをどのように整理しますか?例だけでなくアイデアも本当に欲しいです。
Linuxの土地では、人々はいくつかの異なる戦略を追求しています。
説明:/ etcをgit、Mercurial、bzr、またはdarcsに保存します etckeeperプログラムは、/ etcをgit、Mercurial、 bzrまたはdarcsリポジトリに保存できるようにするツールです。これは、APT=にフックして、パッケージのアップグレード中に/ etcに加えられた変更を自動的にコミットします。 。バージョン 制御システムが通常サポートしていないファイルメタデータを追跡しますが、/etc/shadowの権限など、/ etcにとって重要です。 は非常にモジュール化されており、設定可能です。 は、バージョンの操作の基本を理解していれば簡単に使用できます コントロール。
この状況での問題の1つは、実際には、ビジネスプロセスと技術の組み合わせの問題です。そして、それは管理者が行った変更を追跡することよりも間違いなく大きいです。また、ADコントローラーの変更によって一部の部門サーバーのデータベース権限設定が壊れないように、予期しない変更や管理者またはユニット間の適切な調整に注意する必要もあります。つまり、あなたの質問はワームの巨大な缶です:)
私の組織では、この問題に対処するために約1年でプロセスとシステムを展開しています。ビジネスプロセス側では、変更管理チームを編成しました。 SOPによると、本番環境へのすべての変更はそれらを通じて調整されます。それらはすべての変更を、スコープ、影響を受けるシステム、影響を受けるサービスなどとともにコンパイルします。変更に関する適切なドキュメントを適用し、ロールアウトプランとロールバックプランの両方。毎週(オープン)の会議を主催して、今後の環境の変更について検討し、これらのすべての変更の詳細をメールで送信します。このプロセスの最終目標は、ITの誰もが事実上すべてを把握できるようにすることですこれは、たとえば、SysAdminがカーネルパッチをインストールし、timeclockデータベースを停止するシステムを再起動するなどの問題を防ぐのに役立ちます。
技術面について言えば、私はWindowsを扱っていないので、Unix/Linuxについてのみ話すことができます。彼らは、これらすべてのシステムの構成管理のために、Reductive LabsによってPuppetを展開しています。簡単に言うと、サーバー上のマシン構成を定義するクライアント/サーバーシステムであり、クライアントはそれらのチャンスを時々(デフォルトでは30分)引き出します。さらに、ローカルで管理されているファイルに何らかの可能性があった場合、それらもその時点で元に戻されます。実行中のサービス、ファイアウォール構成、ユーザー認証などの管理に使用します。
TippingPointのようなものを調べることもお勧めします。これは、システム構成を監視し、変更時にアラートを送信するクライアントサービスです。それは私たちのセキュリティ担当者を最も幸せにします。主に悪意のある、または公開されていない変更を追跡するために使用されます。
今は4つか5つの会社にいますが、私は本当に覚えていません。
私たちは皆この問題を抱えていました。私たちの誰もそれを100%解決したわけではありませんが、私は現在、私が今までに最高の戦略であると私が考えているものを持っています。
Sharepoint/Wiki/Evernote/PIN
これらのいくつかにはおそらくより優れたツールがありますが、これは私たちが使用するものです:
Windowsについては、Microsofts System Centerシリーズまたはそのプラットフォームの構成とサービス管理における他の競合他社を確認してください。
変更は、適切な変更管理ルーチンを通じてルーティングする必要があります。適切な変更管理ルーチンは、実際に完了する前に、それ自体で変更を承認してログに記録します。これは、初心者向けの100%の手動にすることができます。より統合されたツールのいくつかを使用すると、実際の変更を行って中央の構成データベースに「自動」でログアウトするようにツールに要求できます-個々のサーバーのコンソールに素手で行くのではなく、問題のあるカウボーイスタイルを修正します。
特に、環境内のシステムレベルで変更を行う能力/アクセス権を持つ複数の人がいる場合は、変更管理プロセスを確実に実施する必要があります。これは、管理者が潜在的な変更を承認する方法も提供しますが、その場で変更を行うことができない場合は、変更プロセスに待ち時間が発生します。
変更を追跡するいくつかの方法には、SEM(セキュリティイベントマネージャーがある場合)またはNessusなどのツールでのイベントの検証が含まれます(多くの作業により、環境を監査して変更を見つけることができます)。
これは、よりローカライズされた* nixベースの回答です。 Windowsでエミュレートするのに適したツールは見つかりませんでした。
これを実装する方法と、忘れたときにそれをキャッチする方法はいくつかあります。
Subversion、git、cvs、RCSなどのリビジョン管理システムは、構成ファイルの履歴を追跡するための優れた方法です。本番サーバーにリビジョン管理システムをインストールしたくない場合は、ローカルまたはリモートで rsnapshot のようなものを使用して構成ファイルのディレクトリを保存すると、RCSのほとんどの利点が得られますが、監査またはコミットログを残す可能性(これはファイル自体の内部のコメントで回避できます)。
変更をログに記録することを覚えておくために、毎晩のcron化された tripwire 実行による構成変更の自動レポートが適切なスタートです。ファイルの現在の状態のtripwireのデータベースを構築した後、ファイルに変更を加えると、次回の実行時にメールが送信されます。データベースが更新されてトリップワイヤーが「リセット」されるまで、このメールを受信し続けます。
「エンタープライズソリューション」を探している場合(つまり、神より多くのお金があり、本当にクールなツールを持ちたいと思っている場合)、オンサイトでの作業をサポートおよび提供するために使用したツールは、その多機能な機能の1つとしてこれを実行します。
基本価格が何であるかはわかりませんが、HPがOpswareを購入する前は、$ 350,000 USでした(サポートなしで、私を信頼してください-Opswareを使い始めたときにサポートが必要でした)。
私がそこで働いていた間に私たちが持っていたいくつかの顧客は、アプリケーション構成とスナップショット機能を Tripwire と組み合わせて使用しました。
もちろん、予算がない場合-これはBad Choice™です:)
そして、fwiw、リロードしたときにこのページの上部に表示された広告は spiceworks の広告でした。 HPSAによく似ています:)
私たちは環境で変更ログの追跡を行うために独自に作成したものを作成しました。それほど複雑ではなく、非常にうまく機能します。
言ったように、空想は何もありません。 Perl CGI(10億年前に作成されました)とインデックス作成用のGoogle検索アプライアンスを使用しています。
欠点:
とにかく、結局あなたがそのコードに興味があるなら、私に知らせてください、そして私はおそらく共有するためにそれをつかむことができます。
私はflysprayなどの問題追跡システムを使用します(何でもかまいませんが、プログラミング以外のものにはflysprayが好きです)。誰かが設定に触れる前に、改善/問題をログに記録する必要があります。修正/実装すると、変更はチケットに反映されます。
Wikiは、現在の設定を文書化するのに適していますが、古くなるのは簡単です。IMOを更新するのにより多くの労力がかかるようです。
これを行うために自動化されたものを見つけるつもりはありませんが、特定の構成ファイルへの変更が必要に応じて自動的に問題トラッカーに電子メールで送信されるように設定することはできます。
それは、良い政策、障壁の低いツール、規律の問題だと思います。
あなたがやりたいのはtrack変更であり、プロセス全体を管理しない(つまり、ChefまたはPuppetを介して)場合は、rsync
_etc
ディレクトリのみbe)ローカルgitリポジトリに。
for Host in alpha bravo charlie delta ...; do
rsync -avz --exclude-from=exclusions -e ssh admin@$Host:/opt/local/etc/ ./$Host
done
もちろん、必要に応じて他のソースを追加できます。
言われたように、それはしばしば文化的な問題です-結局のところ、一部の開発ショップはもはやコメントに悩まされません(自己文書化コードは今日ファッショナブルな流行語です!)そしていくつかは歴史的記録の聖杯としてバージョン管理システムを使用します。明らかに、これらは完璧ではありません。
したがって、それを修正する唯一の真の方法は、それを文化的ソリューションにすることです。変更のすべての理由がバグトラッカー(またはナレッジベース、またはwiki)に記録されていることを確認し、すべての変更が変更管理システムに記録されていることを確認します。
緊急サービスのお客様がいて、システムに発生したすべての変更がログに記録され、システムにログインするたびにログに記録する必要があります。それらのいくつかのために、私達は最初に許可を得るために電話しなければなりません(そして私は彼らもそれを記録していると思います!)。 Every変更がログに記録されるため、顧客のシステムをログに記録せずに変更することは懲戒処分となります。
それは面倒に聞こえますが、そうではありません。あなたはすぐに自分をアクセスログと変更ログに追加する習慣に入ります-コードの変更をチェックインするときにコメントを書く必要があるよりも悪いことではありません。
通常は簡単に更新できるので(私はMantisを使用しています)、変更制御理由ログとしてバグトラッカーをお勧めします。