GASで簡単構築!不正アクセスを即座に検知・通知する自動ツールの作り方

はじめに:なぜ今「不正アクセス通知ツール」が必要なのか?

インターネット上のあらゆるシステムに潜むリスク——それが「不正アクセス」です。
個人サイト、業務用のGoogleスプレッドシート、社内共有のGoogleドキュメント…。
クラウドベースで便利な反面、アクセス制御が甘かったり、アカウントが漏洩したりすれば、誰でも簡単に「侵入者」になり得ます。

特に、無料かつ手軽に利用できる**Google Apps Script(GAS)**を活用すれば、不正アクセスをリアルタイムで検知し、すぐに自分へ通知するツールを構築できます。

しかも、無料で・短時間で・カスタマイズ自由に作成できる。
この記事では、初心者でもわかるように、具体的なGASスクリプトの組み方、設定方法、そして実運用で注意すべきポイントまで丁寧に解説していきます。

今すぐあなたも「不正アクセス防衛ライン」を、自分の手で築きましょう!


GASを使った不正アクセス通知ツールの全体像

今回作るツールの流れはシンプルです。

  1. Googleスプレッドシートにアクセスログを記録

  2. アクセスがあったタイミングでトリガー発火

  3. 不正なIPアドレスやアカウントからのアクセスを検知

  4. 検知したら即メールまたはLINE通知

この流れを、すべてGASだけで完結させます。

では次章から、順番に作り方を説明していきます。


ステップ1:アクセスログを記録する仕組みを作る

まず最初に、アクセスログを保存するGoogleスプレッドシートを用意しましょう。

  1. 新しいスプレッドシートを作成

  2. シート名を「AccessLog」などに変更

  3. 1行目に以下のヘッダーを設定

    • タイムスタンプ

    • IPアドレス

    • ユーザー名(任意)

    • アクセス先URL

    • その他情報

次に、このシートにアクセス情報を書き込むGASコードを作成します。

function logAccess() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("AccessLog");
  var ip = Session.getActiveUser().getEmail(); // 実際にはIP取得はできないが、代替情報としてEmailを取得
  var url = ScriptApp.getService().getUrl();
  var timestamp = new Date();
  
  sheet.appendRow([timestamp, ip, "Unknown User", url, "Access detected"]);
}

注意:GAS単体では本来クライアントIPアドレスは取得できません。代わりにアクセスユーザーのメールアドレスを取得し、「なりすまし検知」に応用します。


ステップ2:不審アクセスを検知するロジックを組む

ログを記録するだけでは「防御」とは言えません。
次に、不正なアカウントやアクセスパターンを検知する仕組みを組みます。

まずは、「許可するユーザーリスト」をスクリプト内に設定しましょう。

const ALLOWED_USERS = [
  "your-email@example.com",
  "staff1@example.com",
  "staff2@example.com"
];

function checkAccess() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("AccessLog");
  var lastRow = sheet.getLastRow();
  var lastAccessUser = sheet.getRange(lastRow, 2).getValue(); // 2列目がユーザー情報

  if (!ALLOWED_USERS.includes(lastAccessUser)) {
    sendAlert(lastAccessUser);
  }
}

この関数は、最後にアクセスしたユーザーが許可リストにない場合に、警告を発します。


ステップ3:不正アクセスを検知したら即通知する

検知したら、即座に自分に通知することで被害を最小限に抑えます。
ここではメール通知の例を紹介します。

function sendAlert(user) {
  var email = Session.getActiveUser().getEmail();
  var subject = "【警告】不正アクセスが検出されました";
  var body = "以下のユーザーから不審なアクセスがありました。\n\n" +
             "ユーザー情報: " + user + "\n" +
             "日時: " + new Date() + "\n\n" +
             "速やかにアクセス権限を確認してください。";

  MailApp.sendEmail(email, subject, body);
}

さらに強力にするために、LINE通知を組み込む方法もありますが、まずはメール通知で十分実用レベルです。


ステップ4:自動実行(トリガー)設定で24時間監視体制をつくる

最後に、この監視スクリプトを自動実行させる必要があります。

Google Apps Scriptの「トリガー」機能を使います。

手順:

  1. GASエディター画面で「時計マーク(トリガー)」をクリック

  2. 「+トリガーを追加」

  3. checkAccess 関数を選択

  4. イベントの種類を「時間主導型」

  5. 「5分ごと」や「10分ごと」を選択

これで、5分ごとに不審アクセスチェックが自動で行われるようになります!


実運用時に気をつけるポイント

■ 通知過剰にならないようにする

初期設定のままだと、少しの異常でも大量に通知が来ることがあります。
通知頻度を制御するには、ログ蓄積期間を限定する短時間内の同一アラートをまとめるなどの工夫が必要です。

■ IPアドレスを取得したい場合

標準のGASではクライアントIPは取得できませんが、Webアプリケーション化+Logger側で工夫すれば可能です。
ただし、その場合セキュリティ要件も高くなりますので注意。

■ アラート送信先の管理

メールだと見落としやすいので、SlackやLINEと連携させると運用効率が飛躍的にアップします。


まとめ:GASで「即席セキュリティ担当者」になろう

Google Apps Scriptを使えば、
わざわざ高価なセキュリティツールを導入しなくても、
自分だけの不正アクセス検知・通知ツールをわずか数時間で構築できます。

  • スプレッドシートへのアクセスログ取得

  • 許可ユーザーリストによる不正判定

  • 異常検知時の即時通知

  • 5分間隔の自動監視体制

これらすべてが、無料、かつカスタマイズ自由自在で手に入るのがGASの最大の強み。

あなたの大切なデータ資産を守るためにも、
今日からこの「不正アクセス通知ツール」を導入して、
セキュリティ対策を"自分ゴト"として始めてみませんか?

Shop now