👻

ユーザーにばれないように、ログイン時にプログラムを実行したい(Windows向け)

2023/12/15に公開

この記事は、【初心者優先枠】corp-engr 情シスSlack(コーポレートエンジニア x 情シス)#2 Advent Calendar 2023の15日目の記事です。

この記事を書いたきっかけ

弊社では、ISMS のルール上ローカルにデータを保存しないように運用しています。
ブラウザから様々な資料をダウンロードし、基本的にはダウンロードフォルダに移動されます。
シャットダウンを行い次回ログイン時に削除されるようにしています。

ただ、一部の人は感づいたのか無効にする&スクリプトを削除する人も出てきました。
(以下イメージのように抜け道を見つけられた気分です)

ユーザーにばれないように再度構成を行いつつ、実現したことをメモとして書いておきます。
ざっくりなイメージですがIntuneからスクリプト・設定を配布するお話です。

ログイン時に起動する方法パターン

ログイン時にアプリケーションや、スクリプトを実行するパターンとして何種類かあります。

  • 各ユーザーのスタートアップフォルダに配置する
  • Publicユーザーのスタートアップフォルダに配置する
  • グループポリシーを使う
  • タスクスケジューラを使う

それぞれのメリット・デメリットを考えてみましょう。

方法 メリット デメリット
各ユーザーのスタートアップフォルダに配置する 実行したいファイルを置くだけで完結できる ユーザー自身でファイルを削除することができる
Publicユーザーのスタートアップフォルダに配置する 実行したいファイルを置くだけで完結できる + PC内のすべてのユーザーで実行ができる ユーザー自身でファイルを削除することができる
グループポリシーを使う 管理者権限がないとポリシーが変更できない レガシーなやり方
タスクスケジューラを使う 管理者権限がないと変更できない レガシーなやり方

実装する上で、以下要件を満たす必要がありました。
-ユーザー自身で無効化・削除できない
-ユーザーにばれないようにする

そのため、今回は3番目の「グループポリシーを使う」方法で実装してみたいと思います。
(弊社はオンプレADはないため、Microsoft Intuneを使い実現してみたいと思います)

また、そもそも消している人もいるようなので改めてスクリプトを配布するところからです。
(仕事増やしてくれてありがとう)

スクリプトを設置する場所

みなさんだったら、一般ユーザーに削除させたくないファイルはどこに配置しますか!?
ADがあればsysvolに置いておくとかできますが、ADサーバはありません。
(もちろんファイルサーバーもなく、Boxを普段からストレージとして使ってます)

ユーザーで閲覧はできるけど削除ができない場所・・・うーん。
あっ、Windowsフォルダ内や。

という理由で場所は決まりました。設定方法を以下に記載します
(会社とかで必須条件のルールがあるようであれば、それに従ってくださいね)

  1. メモ帳などで以下コマンドを貼り付け、batファイルで保存する
xcopy "実行させたいファイル" "C:\Windows\Infosys\" /I 
  1. フォルダを1つ作成し、1で作ったbatファイルと実行させたいファイルを一緒にする

  2. Microsoft Win32 コンテンツ準備ツールを使い、パッケージにする

  3. Intune 管理センターから アプリ > Windows > 追加 > Windowsアプリ(Win32)を選択する

  4. 以下を参考に設定する

  • アプリ情報
    *ファイル名:3で作成したパッケージ
    *名前:再配置ツール
    *説明:スクリプトを再配置するやつ
    *発行元:
    *メモ:

  • プログラム
    *インストールコマンド:1で作成したbatファイル名
    *アンインストールコマンド:-
    *インストールの処理:システム

  • 必須条件
    *オペレーティングシステムのアーキテクチャ:64ビット
    *最低限のオペレーティングシステム:Windows10 20H2

  • 検出規則
    *規則の形式:検出規則を手動で構成する
    *規則の種類:ファイル
    *パス:C:\Windows\Infosys
    *ファイルまたはフォルダー:実行させたいファイル
    *64 ビット クライアント上で 32 ビット アプリに関連付ける:いいえ

  • 配布
     よしなにデバイスが含まれるグループにする

と、ここまでやることで各クライアントに改めてスクリプトを配布することができました。
ただ、これだけでは実行されませんので、次のステップです

管理用テンプレートを設定する

Intuneからグループポリシーを配布する?どうやるのでしょうと。
管理用テンプレートという機能が存在するのでこちらで設定をしていきます。
(名前は違うけど、グループポリシーと同じ機能です)

1.Intune 管理センターから デバイス > Windows > 構成プロファイル > 作成 > 新しいポリシーを選択する

2.以下を参考に設定する

  • 条件
    *プラットフォーム:Windows 10 以降
    *プロファイルの種類:テンプレート
    *テンプレート名:管理用テンプレート

  • 名前
    *名前:スクリプト実行するGPO
    *説明:よしなに

  • 構成設定
    *場所:ユーザーの構成 > システム > ログオン > ユーザーのログオン時に実行するプログラムを指定する
    *状態:有効
    *ログオン時に実行する項目:C:\Windows\Infosys\実行させたいファイル

  • 配布
     スクリプトを配布したときと同じグループにすること!

設定をしたので、あとは配布されるのを待ちましょう。

配布されたことを確認する方法

設定 > アカウント > 職場または学校アカウントにアクセス > 情報 をクリックし、下の方にスクロールすると、レポートの出力という機能があります。

パブリックユーザーのドキュメントフォルダ内にMDMDiagnosticsというフォルダが作成されそこにhtmlのレポートが作られます。
今回のポリシーも無事に反映されていました。安心。

考慮したこと

今回は、スクリプト→管理用テンプレートと順番を決めて配布しました。
仮に 管理用テンプレート→スクリプトと逆にしても特にエラーは起きなさそうです。
ただ、Windowsがファイル見つからないよ〜ってエラーを吐いたら嫌なので事前にスクリプトを配布しました。
もう無効化しないでくれーと祈るばかりです。
反映は遅いけど、好きだよ。Intuneくん

Discussion