社内のログオンユーザが利用している「chrome拡張機能」の一覧を一斉に取得する

## Why｜なぜやるのか？
- 「Google Chrome拡張機能」の社内利用について、どのように管理されていますでしょうか？
    - ソフトウェアとは異なり、インストール時に「管理者権限」が要求されるわけではない
    - 「Chrome ウェブストア」上で提供されているため、Googleによる最低限の審査？管理？が行われている
    - と同時に、「個人情報取得→漏洩のリスク」「悪意のある拡張機能の存在」は考慮する必要がある
- 上記の理由から、部門横断で業務効率化に寄与する拡張機能を「ホワイトリスト」として一覧化することとしました
- 「ホワイトリスト」に掲載されている拡張機能はユーザが自由にインストール可能とし、非掲載の拡張機能をインストールする場合には「SlackにてIT管理部門へ一声かけてもらう」という運用です

## How｜どうやってやるのか？
1. 「Chrome拡張機能が保存されているユーザフォルダ」に対して、ファイル名を出力するバッチファイルを作成します
2. グループポリシーにて「ログオフ」タイミングでスクリプトを実行させるよう設定し、ユーザごとに結果が出力されるようにします
3. ユーザごとの出力結果をコマンドで1ファイルにマージし、重複を削除することで、社内ユーザが利用している拡張機能一覧を作成します
4. 拡張機能一覧（ユーザ利用の全種）から、IDを基に「Chromeウェブストア」で検索して機能を確認し、「ホワイトリスト」を作成します 

## What｜なにをやるのか？

### 作成したスクリプト（バッチファイル）

```getChromeExtensions.bat
@echo off
chcp 65001
REM ************************************************
REM ログオンユーザのChromeの拡張機能一覧を取得
REM ************************************************

set yyyymmdd=%DATE:/=%

pushd \\hoge\fuga\スクリプト出力先

dir /b /a:d %USERPROFILE%\AppData\Local\Google\Chrome\"User Data"\Default\Extensions > %USERNAME%_%yyyymmdd%.txt
```
#### スクリプトの解説
- `dir /b`で「ファイル名のみ」を表示させます
- `dir /a:d`で「ファイルのみ（フォルダ以外）」を表示させます
- Windowsの場合、Chromeの拡張機能の保存場所は`C:\Users\<ユーザー名>\AppData\Local\Google\Chrome\User Data\Default\Extensions`フォルダ内です
- 実行日付を`set`し、`username`とともに出力ファイル名として、テキストファイルを作成する
- `pushed`に成果物の出力先のパスを指定します

### グループポリシーの設定
ユーザの「ログオフ」時に、指定のバッチファイルを実行させる設定を行います
1. グループポリシーの作成
2. グループポリシーの「ログオフ プロパティ」へスクリプトを配置する
3. 取得対象の全ユーザが含まれる「OU（Organizational Unit）」にポリシーをリンクする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/420464/aca3bd86-363c-ac59-5c7f-8218e9379acb.png)

:::note info
- PCの「スタートアップ」「シャットダウン」をトリガーにしたい場合
    - PC側のオブジェクトにGPOを追加する
- ユーザの「ログイン」「ログオフ」をトリガーしたい場合
    - ユーザ側のオブジェクトにGPOを追加する
- その他、上手く動作していない場合のチェックポイントには下記を参照しました
    - [GPO が適用されないときのトラブルシューティング手法と対処例](https://jpwinsup.github.io/blog/2022/07/03/ActiveDirectory/GroupPolicy/cannot-applying-the-grouppolicy/)
:::

### ユーザごとの出力結果を集計し「拡張機能一覧」を作成
出力結果は、下記のようなテキストファイルになっています
```%USERNAME%_%yyyymmdd%.txt
abcdefghijklmnopqrstuvwxyzabcdef
bcdefghijklmnopqrstuvwxyzabcdefg
cdefghijklmnopqrstuvwxyzabcdefgh
defghijklmnopqrstuvwxyzabcdefghi
efghijklmnopqrstuvwxyzabcdefghij
```

出力結果のあるフォルダにて下記のコマンドを実行し、ユーザごとの出力結果を1ファイルに纏めます
```
copy *.txt all¥merge.txt
```
上記統合ファイルの中身を、Excelやスプレッドシート上で「重複削除」することで、ユーザがインストールしている「拡張機能のID一覧」を作成します

### 社内的「ホワイトリスト」の作成
今回のバッチファイルではChrome拡張機能のIDを取得しています<br>

アナログにはなりますが、「Chromeウェブストア」で「ID」を検索し、「拡張機能名」と「機能の概要」を把握します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/420464/9f58f5bc-d28d-64d9-2ce3-152a88ea8244.png)

あとは「機能」や「使い勝手」を基に、IT管理部門にて全社的に活用できるものを判断して、「社内ホワイトリスト」に記載します<br>

初回のリスト作成時点で掲載した拡張機能の一例です

:::note info
- [Black Menu for Google™](https://chrome.google.com/webstore/detail/black-menu-for-google/eignhdfgaldabilaaegmdfbajngjmoke?hl=ja)
    - ワンクリックでGoogle各サービスにアクセスできる機能
- [Event Merge for Google Calendar™](https://chrome.google.com/webstore/detail/event-merge-for-google-ca/idehaflielbgpaokehlhidbjlehlfcep?hl=ja)
    - Googleカレンダーを見やすくする機能
- [Google Sheets Row Highlighter](https://chrome.google.com/webstore/detail/google-sheets-row-highlig/cejijldbedfmdehondfmoadlkhgjcmkd?hl=ja)
    - Googleスプレッドシートでカレントセルの行(列)をハイライトする
- [FireShot](https://chrome.google.com/webstore/detail/take-webpage-screenshots/mcbpblocgmgfnpjjppndjkmgjaogfceg?hl=ja)
    - ウェブページ全体のスクリーンショットを撮影、編集
- [ChatGPT Ctrl+Enter Sender](https://chrome.google.com/webstore/detail/chatgpt-ctrl%2Benter-sender/gbncgdhklmnckojlibfhdadpfbcdbnch?hl=ja)
    - ChatGPTでのメッセージ送信を「Ctrl+Enter」に割り当て、途中送信を防ぐ
:::

なお、取得したIDのうち「約25%」はChromeウェブストアで検索結果が出ませんでした。拡張機能ではなくテーマのIDだったりしたのでしょうか？

#### （補足）「Chrome Stats」を使った拡張機能の簡易リスクチェック
- [Chrome Stats](https://chrome-stats.com/)

インストールする拡張機能を検索すると、当該拡張機能の「基本情報」と「リスクインパクト」を確認できます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/420464/8435d684-5004-4a5b-0507-bdb966b54113.png)

- Risk欄に赤字で「Very high risk impact 」の記載があったら、要確認です
   - 本当に業務に必要かどうかを改めて確認する
    - 発行元を確認して、完全に信頼できる発行元でない場合は利用を控える
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/420464/744ed6ae-744b-d828-378b-e4366632f502.png)



<br>
以上です

## 参考サイト
- [Chromeの拡張機能やテーマが保存されているフォルダはどこ？](https://aprico-media.com/posts/7201)
- [Compare and analyze Chrome extensions](https://chrome-stats.com/)
- [Google Chromeの拡張機能、約半数が個人情報漏洩など高リスクの可能性](https://news.mynavi.jp/techplus/article/20221202-2527205/)
- [悪意あるコードが仕込まれたChrome拡張機能が大量に発見される](https://gigazine.net/news/20230602-chrome-web-store-malicious-extensions/)
- [グループポリシーとログオンスクリプトでログオン・ログオフ時間を記録する](https://www.rem-system.com/windows-logon-log/)
- [CSVやTXTなど複数のファイルを結合してまとめる方法 Windowsのコマンドで簡単にできる！](https://digimamalife.com/howto-merge-csv-files)