複数のWordPressサイトをまとめて見張る社内システムを自作した話

〜保守を、属人的な作業から仕組みに変えるまで〜

目次

きっかけ

Web制作会社として、私たちは多くのWordPressサイトを継続的に保守しています。

ただ、管理するサイトが増えるほど、「どのサイトのどのプラグインが古いか」「危険なバージョンを使っていないか」を、一つずつ管理画面を開いて確認して回るのは現実的ではなくなってきます。

確認する人によってチェックの仕方が変わったり、忙しいときに確認が後回しになったりする可能性もあります。見落としが起きれば、それはそのままクライアントのサイトのリスクになります。

そこで、管理しているWordPressサイトの状態を外部からまとめて監視する社内システムを自作しました。

作ったもの

仕組み自体は、それほど複雑なものではありません。
各サイトに小さな監視用プログラムを置き、中央のサーバーが毎日自動で巡回して、次のような状態を集約します。

  • プラグイン・WordPress本体のバージョンと、更新が来ているか
  • プラグインの有効/無効の状態や、見覚えのない増減
  • 既知の脆弱性を持つバージョンを使っていないか(脆弱性データベースと照合)
  • PHPやWordPressが、サポート終了したバージョンになっていないか

これらを一つのダッシュボードで一覧でき、変化があればメールで通知が届くようにしています。

該当サイトの管理画面へもそこからすぐ移動できるようにして、「気づく」から「確認して対応する」までを一か所にまとめることを意識しました。

これまでは人がそれぞれのサイトを見に行って確認していたものを、まずシステム側でまとめて確認し、必要なものだけ人が判断する形です。

設計で大事にしたこと

作るにあたって、いくつか意識的に「やらないこと」を決めました。
ひとつは、シンプルに保つことです。
あれもこれもと機能を足していくと、便利になるように見えて、結局は使われない複雑なシステムになってしまいます。
今回の目的は、WordPressサイトを何でも管理できるシステムを作ることではなく、「管理しているサイトの状態がパッと見えること」です。
そこはかなり割り切りました。

もうひとつが、役割分担です。
たとえばサイトの死活監視、つまり「サイトが落ちていないか」を確認する仕組みは、5分おきなどの短い間隔で外部から監視してくれる専用サービスがすでにあります。
そこは既存の優れたサービスに任せる。
ファイルの改ざん検知についても、今回のシステムとは別系統で考える。
いわば「餅は餅屋」です。

何でも一つのシステムに詰め込むのではなく、それぞれ得意な仕組みに役割を持たせて、今回作ったシステムはWordPressの状態を見える化することに専念させました。

セキュリティ面で考えたこと

監視システムはサイトを守るための道具ですが、作り方を誤ると、それ自体が新しい弱点になってしまいます。
複数サイトの情報が一か所に集まる以上、監視する側のシステムについても、きちんと守る必要があります。
そこで今回かなり意識したのが、監視システムに必要以上の権限を持たせないことです。

このシステムは、各サイトの状態を「読み取る」ことを基本としていて、監視側からWordPressを更新したり、プラグインを操作したりする機能は持たせていません。
便利さだけを考えれば、ダッシュボードからそのまま更新できる方が楽かもしれません。
ただ、操作できるということは、それだけ大きな権限を持つということでもあります。

そこで、各サイトを操作する権限を持たせないことで、万が一監視システム側に問題が起きた場合でも、そこから各WordPressサイトへの被害が直接広がりにくい構成にしています。
便利さよりも、まず安全側に倒す。
ここは今回の設計で、かなり大切にした部分です。

AIにもコードを見てもらいました

完成後は、実装に使ったものとは別のコーディング支援AIにもコードをレビューさせました。
もちろん、AIにレビューさせたから安全、というわけではありません。
作った本人だけで確認していると、どうしても同じ視点でコードを見てしまいます。そこで、別の視点から問題になりそうな箇所を洗い出す、一つのチェック工程としてAIを使いました。

実際に、設定ファイルの扱いや不正アクセスへの対策など、いくつか指摘された部分があり、それらを確認したうえで必要な修正を反映しています。

AIに全部を任せるのではなく、人が作り、別の視点でチェックし、最後は人が判断する。
今回のような社内システムでは、このくらいの距離感でAIを使うのがちょうどいいと感じています。

監視システムがあれば安心、ではない

一点だけ、正直に書いておきたいことがあります。
この手の監視で拾えるのは、基本的にはすでに把握できる状態になっている問題です。
たとえば既知の脆弱性であれば、脆弱性データベースと照合して気づくことができます。
一方で、まだ公表されていない問題まで、この仕組みだけですべて見つけられるわけではありません。

また、WordPressのバージョンが新しければ絶対に安全、という話でもありません。
つまり、監視システムがあるから万全、ではないということです。

死活監視、改ざん検知、バックアップ、アップデート、セキュリティ対策など、それぞれを組み合わせた守りの中の一つとして、今回のシステムを位置づけています。

システムを作ったことで安心してしまうのではなく、過信しないことも運用の一部だと考えています。

おわりに

WordPressの保守は、どうしても「気づいた人が、その都度対応する」という属人的な作業になりがちです。

それを仕組みに落とし込むことで、確認の抜けや見落としを減らし、管理するサイトが増えても、できるだけ同じ基準で状態を確認できるようになりました。
毎朝それぞれのサイトを確認していた作業が、一覧とメールで確認できるようになったことも大きな変化です。

ただ、私たち自身の確認作業を減らすことだけが目的ではありません。
管理するサイトが増えても、確認の質を落とさないこと。
そのための仕組みとして作ったものです。

もちろん、システムを作ったから保守が自動になるわけではありません。最終的に「これは更新するべきか」「この変化は問題なのか」を判断して対応するのは人です。

機械に任せられる確認作業は機械に任せて、人は判断や対応に時間を使う。
実際に運用してみると、この役割分担が一番大きなメリットだったのかもしれません。
まだ改善できるところはありますが、作ってよかったと感じています。

WordPressの保守・運用でお困りのことがあれば、お気軽にご相談ください。困ったら相談してね!

▶ 更新管理・保守サービスの詳細はこちら

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次