スポンサーリンク

MDM(Intune/Jamf Pro/Iru)に登録された未使用端末を自動通知するツールを作成してみた

こんにちは!ヤスムラです。

MDMの管理画面をたまに眺めていると、「あれ、この端末ずっと接続が確認できていないな」と気づいて調査する、ということってありますよね。そこで今回は、Intune / Jamf Pro/ Iru などのMDMを運用していて、端末の棚卸しや回収漏れに困っている情シス担当向けに長期間つながっていない端末をSlackに通知する仕組みをGASで作成したので紹介します。

1. やりたいこと・背景

端末管理をやっていると、退職や端末入れ替えのあとに、MDM上のレコードだけが残って削除漏れになっていたり、そもそも物理的な回収漏れに気づけないことがあります。自分の場合、そのたびに「この端末まだ持ってます?」と本人へ個別に連絡していて、これが地味に手間でした。

また、対象者にDMで「最近この端末、つないでいませんか?」と確認するのも意外と手間ですし、何度も送るのはあまり気が進まない作業でした。

さらに、デバイストラストの仕組みが未導入の場合、BYODの端末がいつの間に使われていて、貸与端末が長期間まったく接続されないといったこともありました。

こうした定期的に確認が必要な作業の検知やユーザー通知をできるだけ自動化し、手作業での声かけを減らしたい!というのが今回のツールを作った理由です。

2. ツールでできること(主な機能)

今回作成したツールでは、複数MDMの端末を1つのスプレッドシートに集約し、一定期間接続されていない端末を抽出して、利用者本人・管理者・チャンネルへSlackで自動通知できます。

ツールの流れは以下の通りです。

  1. 各MDMの端末情報を取得
  2. スプレッドシートに集約し、最終接続日時から「非アクティブ日数」を計算
  3. 基準を超えた端末を抽出(除外リストは対象外)
  4. Slackで対象者・管理者・チャンネルへ通知

主な機能は以下の通りです。

項目概要できること
対応MDM3つのMDMに対応Intune / Jamf Pro/ Iru の端末情報を取得し、結果を1箇所に集約します
デバイス一覧端末情報を集約各MDMから取得した端末情報を1枚のシートにまとめて確認できます
非アクティブ判定最終接続日時から自動判定最終接続日時をもとに非アクティブ日数を計算し、基準を超えた端末を抽出します
通知先通知先を柔軟に指定本人DM・管理者DM・Slackチャンネルのいずれにも通知でき、複数指定もできます
初期セットアップセットアップ作業を自動化必要なシートとスクリプトプロパティの雛形を自動作成します
設定各パラメーター設定はGUIで完結通知方法や通知サイクルなど、Apps Scriptではなくスプシのメニューから設定できる仕組みにしています
退職者対応対象者不明のデバイスは管理者へ通知利用者が特定できない端末は、本人ではなく管理者へDM通知します
サマリー実行結果をまとめて通知検知件数や通知結果などのサマリーをまとめて受け取れます
除外リスト通知不要な端末はミュート育休などで長期間つながない端末や、一時的に通知を止めたい端末・対象を通知対象外にできます
再通知間隔同じ通知の連投を防止一度通知した端末は指定した期間あけてから再通知し、毎日同じ通知が飛ぶことを防ぐことができます

スプレッドシートは役割ごとに4枚に分けています。

  • 1. デバイス一覧:各MDMから取得した端末の集約先
  • 2. スキップリスト:ミュート・除外の設定
  • 3. ログ:GASの実行・通知の記録
  • 4. Slackユーザー一覧:メールアドレスからSlackユーザーを把握するため

2-1. 事前準備:必要なAPI権限

このツールでは、各MDMから端末情報を取得し、Slackへ通知するためにAPIを利用します。基本的には「端末情報の読み取り」と「Slackへの通知」に必要な権限だけで動作する想定なので、MDM側の端末を更新・削除する権限は不要です。

必要なAPI権限は以下の通りです。

Microsoft Intune

  • 用途:管理対象デバイスの一覧や最終同期日時を取得
  • 必要な権限DeviceManagementManagedDevices.Read.All

Jamf Pro

  • 用途:Macやモバイルデバイスの情報を取得
  • 必要な権限Computers Read / Mobile Devices Read

Iru

  • 用途:デバイス一覧や詳細情報を取得
  • 必要な権限Device list / Device details

Slack

  • 用途:メールアドレスからSlackユーザーを特定し、DMやチャンネルへ通知
  • 必要な権限chat:write / users:read / users:read.email / im:write

3. セットアップ手順

ここからは実際の導入手順です。

3-1. スプレッドシート新規作成

まずはGoogleスプレッドシートを新規作成します。

3-2. スクリプトを配置する

作成したスプレッドシートで、拡張機能 → Apps Script を開き、スクリプトを貼り付けます。ソースコードは以下にあります。

📎 GitHub:https://github.com/yasuym1/mdm-inactive-notifier

3-3. 初期セットアップを実行する

スクリプトを貼り付けて、シートを更新するとメニューが表示されるので「1.初期シート・プロパティ作成」を実行します。

初回のみ認証画面が表示されます。

完了すると必要なシートとスクリプトプロパティが自動で作成されます。

3-4. 設定画面でキーを入力する

このツールでは、初期セットアップ後の設定をスプレッドシート上の画面だけで完結できるようにしています。Apps Scriptのスクリプトエディタを直接開いて、設定値を書き換える必要はありません。

スプレッドシートのメニューから「2.設定・認証情報パネル」を実行し、各MDMの接続情報、Slackのトークン、通知先などを入力します。

各種APIキーの取得方法は、メニューの「8.ヘルプ」を実行すると詳細マニュアルが表示されるので、そちらを参考にしてください。

3-5. 動作テストする

スプレッドシートのメニューの「3.デバイスの取得」→「4.Slackユーザー一覧の更新」→「7.テスト通知を送信」の順番で行い、正常に動作するか確認してみて下さい。

うまくいくとSlackに以下のような通知が届くはずです。

3-6. トリガーを設定する

動作確認ができたら、最後に「2.設定・認証情報パネル」から定期実行用のトリガーを登録します。

4. 補足

  • 日時フォーマット:MDMによって日時の表記がバラバラなので、表示用に yyyy/MM/dd HH:mm(日本時間)へ揃えています
  • 制作について:今回はNotion AI(Claude)を使って作りました。試行錯誤で思ったより時間がかかりましたが、一応形にはなりました。自分でもレビューはしていますが、もしバグを見つけたら教えてもらえると助かります
  • カスタマイズは自由にしてください:Slack以外に通知したい、逆に要らない機能を削りたい、という場合はAIに作り替えてもらってOKです。好きに使ってもらって構いません(ただし自己責任でお願いします)

5.まとめ

3つのMDMの端末をまとめて見張って、長期間つながっていない端末を自動でSlackに通知する仕組みを作りました。ポイントは、検知だけでなく「誰に・どれくらいの頻度で知らせるか」と「鳴らさない仕組み(除外・ミュート・再通知間隔)」を最初から組み込んだことです。端末の回収漏れや削除漏れに毎回手で気づくのはしんどいので、同じ課題で困っている方の参考になれば幸いです。

6.最後に

当方は副業情シスとして、中小企業様を中心に社内ITの最適化や、最近は非エンジニアに向けた生成AIの活用推進をご支援しております。

もし、「社内にIT担当者がいなくて困っている」「今のIT環境、もっと良くできるはず…」といったお悩みを抱える企業様がいらっしゃいましたら、ぜひお声がけください。下記サイトに詳細を記載しておりますので、ご興味をお持ちいただけましたら、問い合わせページよりお気軽にご連絡いただけますと幸いです。

https://www.corporate-engineer.com

コメント

タイトルとURLをコピーしました