本文へ移動
技術を、自社の仕事に。
判断と実行を助けるメディア

記事を検索

Chrome拡張機能のリスク評価をAPIで取得 社内の棚卸しに使う

目次 · 6項目

PDFの変換、画面の翻訳、AIの要約。社員が仕事のために入れたChromeの拡張機能には、開いているページの内容を読み書きできる権限を持つものがあります。管理コンソールで拡張機能を許可制にする前に、まず「いま何が、何台に入っていて、どれから確かめるべきか」を知りたい、というのが棚卸しの出発点です。

Google の Chrome Management API には、組織のブラウザに入っている拡張機能を集計するレポートがあり、外部の評価会社によるリスクの段階(低・中・高)も返します。さらに2026年11月初めの更新で、拡張機能1つの詳細を返すメソッドの応答にも、同じリスク評価の項目が加わりました。APIリファレンスの該当ページ(2026年11月3日更新)に載っており、APIの定義(Discovery文書、revision 20261101)と、定義から自動生成される Go のクライアントライブラリ(11月4日のコミット)にも同じ項目が入っています。

本記事では、APIリファレンスと管理者向けヘルプの原文から、どのメソッドで何が取れるかを示し、棚卸しの進め方を提案します。2026年11月11日に公式資料を確認した資料調査で、APIの実際の呼び出しと管理コンソールの確認は行っていません。

使うメソッドは3つ

棚卸しに使えるのは、次の3つのメソッドです。順番に使うと、「全体の一覧」→「どこに入っているか」→「その拡張機能が何を求めているか」をたどれます。

Chrome Management APIで拡張機能を棚卸しする3つのメソッドの順番。countInstalledAppsで組織全体の一覧とリスクの段階、findInstalledAppDevicesとfindInstalledAppProfilesで入っている端末とプロファイル、apps.chrome.getで権限・アクセスするサイト・リスク評価を取得する

メソッド返すもの必要なスコープ
reports.countInstalledApps組織(または組織部門)に入っているアプリ・拡張機能の一覧と台数、リスク評価chrome.management.reports.readonly
reports.findInstalledAppDevices / findInstalledAppProfiles指定した拡張機能が入っている管理対象のブラウザ/プロファイルchrome.management.reports.readonly
apps.chrome.getChrome ウェブストアの情報(権限、アクセスするサイト、リスク評価など)chrome.management.appdetails.readonly

countInstalledApps の結果の各行には、拡張機能のID・名前・種類(appType)・入れ方(appInstallType。通常のインストール、管理者による配布、開発者モード、サイドロードなど)・入っているブラウザの台数(browserDeviceCount)・プロファイル数(profileCount)・権限(permissions)が並びます。1ページの上限は100件で、totalSize に全体の件数が返ります。

管理コンソールでは、同じ種類の集計がアプリと拡張機能の使用状況のレポート(ヘルプの英語版の表記で「Devices > Chrome > Reports > Apps & extensions usage」)に表示され、リスク評価(Risk assessment)の列もあります。ヘルプによると、この報告には Chrome ブラウザのクラウドでの報告(Cloud reporting)を有効にしておく必要があり、データが表示されるまで最大24時間かかります。

リスク評価として返る項目

リスク評価(riskAssessment)の中身は、リファレンスでは次のとおりです。

  • overallRiskLevel:全体の段階。RISK_LEVEL_LOW・RISK_LEVEL_MEDIUM・RISK_LEVEL_HIGH のいずれかで、リファレンスには「すべての評価のうち最も高い段階」と書かれています。
  • entries:評価会社ごとの評価。評価会社(provider)、その評価会社の段階(riskLevel)、評価の詳細(riskAssessment)が入ります。
  • 評価の詳細には、評価の値(assessment)、詳しい説明のURL(detailsUrl)、評価の対象になった拡張機能のバージョン(version)があります。

評価会社の値は、LayerX Security と Spin.AI(V2)の2つが現役です。CRXcavator と旧版の Spin.AI は、リファレンスで「非推奨」と書かれています(Go のクライアントライブラリの履歴では、Spin.AI V2 は2026年1月、旧版の非推奨は同年7月の定義の更新で入りました)。

注意したいのは、評価の値(assessment)について、リファレンスが「現在は数値で、その解釈は評価会社ごとに異なる」と書いている点です。管理者向けヘルプには、段階の目安が評価会社ごとに載っています。

評価会社低(LOW)中(MEDIUM)高(HIGH)
LayerX0〜3.94〜6.97〜10
Spin.AI1〜3435〜6465〜100

ヘルプは、LayerX で3.1〜3.9の拡張機能が、管理コンソールで一時的に「中」と表示されることがあるとも書いています。また Chrome のリリースノートによると、Chrome 146 から管理コンソールの Spin.AI の点数は、0が低いリスク、100が高いリスクを表す形に変わりました。物差しが評価会社ごとに違い、時期によっても変わるため、評価会社をまたいで数値を比べたり、数値だけで機械的に判断したりするのは避けます。段階(LOW/MEDIUM/HIGH)を入口にして、詳しい説明のURLを人が確かめる、という使い方が現実的です。

評価が付く範囲について、ヘルプは「Chrome ウェブストアで一般公開されている拡張機能」が対象で、「評価会社はほとんどの版を評価しようとするが、評価がない場合もある」と書いています。Google は評価会社のデータの内容を保証せず、変更もしない、とも明記しています。

11月に変わったのは個別の詳細の側

countInstalledApps の行のリスク評価と、並べ替え・絞り込みの項目 risk_score は、今回確認できた最も古い2025年1月の定義に、すでにありました。2026年11月初めの更新で加わったのは、apps.chrome.get(拡張機能1つの詳細)の側の riskAssessment です。

これで、一覧で気になった拡張機能について、権限(permissions)やアクセスするサイトの範囲(siteAccess)と同じ応答の中で、リスク評価も確かめられるようになりました。apps.chrome.get は、customers/my_customer/apps/chrome/<拡張機能のID>@<バージョン> の形で、バージョンを指定して呼べます。

棚卸しの進め方(編集部の提案)

ここからは編集部の提案です。

1. 一覧を取り、段階が高いものと台数が多いものを先に見る。 countInstalledApps で全件を取り、overallRiskLevel が HIGH・MEDIUM のものを、入っている台数の多い順に並べます。評価のない拡張機能(リファレンスでは「If available」)は、別の列に分けて残します。

2. 入れ方を見る。 ヘルプでは、DEVELOPMENT は「デベロッパーモードで、パッケージ化していないものを読み込んだ」、SIDELOAD は「端末上の別のソフトウェアが入れた」と説明されています。ウェブストアの審査を通っていないものや、評価が付かないものが含まれうるため、リスク評価の段階とは別に、確かめる対象に加えます。

3. 気になったものは、どこに入っているかと、何を求めているかを確かめる。 findInstalledAppDevices / findInstalledAppProfiles で端末とプロファイルを特定し、apps.chrome.get で権限・アクセスするサイト・リスク評価を確かめます。

4. 判断は人がして、方針は管理コンソールで決める。 業務で必要か、代わりはあるかを利用者に確かめたうえで、許可・ブロックの方針を決めます。追加費用なしで拡張機能を管理下に置く設定は、Chrome Enterprise Coreの記事で扱いました。

なお、Chrome のリリースノートには、評価会社(Spin.AI・LayerX)の点数がしきい値を超えた拡張機能を、管理コンソールの設定で自動的にブロックする機能も載っています。ただし、Chrome 147 のノートは「148で段階的に展開」、Chrome 148 のノートは「149で段階的に展開」と時期の書き方が異なり、今回はいつから全組織で使えるかを確かめられていません。自動ブロックを使う場合も、まず一覧で段階と台数を見て、しきい値で止まる拡張機能が業務に必要か確かめておくと安全です。

Apps Script で一覧をスプレッドシートに出す例

1の一覧を Google スプレッドシートに書き出す Apps Script の例です。この例は編集部がリファレンスから書いたもので、実際の環境では実行していません。 リファレンスに並べ替えの方向や絞り込みの値の書き方が書かれていないため、全件を取ってからスクリプトの側で並べ替えています。

// appsscript.json の oauthScopes に次を加える(例)
// "https://www.googleapis.com/auth/chrome.management.reports.readonly",
// "https://www.googleapis.com/auth/spreadsheets.currentonly",
// "https://www.googleapis.com/auth/script.external_request"
function listExtensionsByRisk() {
  const url = 'https://chromemanagement.googleapis.com/v1/customers/my_customer/reports:countInstalledApps';
  const headers = { Authorization: 'Bearer ' + ScriptApp.getOAuthToken() };
  const order = { RISK_LEVEL_HIGH: 0, RISK_LEVEL_MEDIUM: 1, RISK_LEVEL_LOW: 2 };
  const rows = [];
  let pageToken = '';
  do {
    const q = 'pageSize=100' + (pageToken ? '&pageToken=' + encodeURIComponent(pageToken) : '');
    const res = JSON.parse(UrlFetchApp.fetch(url + '?' + q, { headers }).getContentText());
    for (const app of res.installedApps || []) {
      if (app.appType !== 'EXTENSION') continue;
      const risk = app.riskAssessment || {};
      rows.push([
        app.displayName, app.appId, app.appInstallType,
        app.browserDeviceCount || 0, app.profileCount || 0,
        risk.overallRiskLevel || '(評価なし)',
        (risk.entries || []).map(e => e.provider + ':' + (e.riskLevel || '')).join(' / '),
        (app.permissions || []).join(', '),
      ]);
    }
    pageToken = res.nextPageToken || '';
  } while (pageToken);
  rows.sort((a, b) => ((order[a[5]] ?? 3) - (order[b[5]] ?? 3)) || (b[3] - a[3]));
  const sheet = SpreadsheetApp.getActiveSheet();
  sheet.clearContents();
  sheet.appendRow(['名前', 'ID', '入れ方', 'ブラウザ台数', 'プロファイル数', '全体の段階', '評価会社ごと', '権限']);
  if (rows.length) sheet.getRange(2, 1, rows.length, rows[0].length).setValues(rows);
}

組織部門ごとに分けたい場合は、orgUnitId を加えます。開発者向けガイドによると、countInstalledApps・findInstalledAppDevices・findInstalledAppProfiles には、管理者の権限「Services -> Chrome Management -> View Extensions List Report」(または ChromeOS の設定の側の同名の権限)が要ります。

公式資料からは分からないこと

今回確かめた公式資料からは読み取れない点も残っています。導入前に、自社の管理コンソールで確かめてください。

  • 使える条件:どの契約・エディションで、このレポートとリスク評価が使えるか。ヘルプの報告のページは Chrome Enterprise Core への登録を案内していますが、エディションごとの対応は書かれていません。
  • 並べ替えの数値:risk_score が、どの評価会社のどの値をもとにしているか。
  • 評価の算出方法:評価会社ごとの値(assessment)をどう計算しているか。ヘルプにあるのは段階の目安だけです。
  • APIと画面の差:API の応答と管理コンソールの表示が同じ時点の値か(ヘルプは画面について「評価会社ごとの最新の点数」と書いています)。

評価会社の段階が LOW でも、業務のデータを扱うページを読める権限を持っていれば、確かめる価値はあります。リスク評価は「どれから見るか」を決める材料として使い、最終的な判断は権限とアクセスするサイトの範囲、利用者への確認で行う、という分担がよいと考えます。

確認した範囲

2026年11月11日に、Chrome Management API のリファレンス(countInstalledApps、apps.chrome.get と応答の AppDetails。後者は2026年11月3日更新)、開発者向けガイド(Reports API の管理者の権限)、Discovery 文書(revision 20261109)、googleapis/google-api-go-client の定義の履歴(11月4日の 1179cf8 で apps.chrome.get の応答に riskAssessment を追加、1月の 1315da9e で Spin.AI V2 を追加、7月の 5116a489 で旧版の Spin.AI を非推奨に)、Chrome Enterprise の管理者向けヘルプ(アプリと拡張機能の使用状況、アプリの詳細)とリリースノートを確認しました(資料調査)。API の Release log(2024年10月更新)と Google Workspace Updates には、今回の追加の告知は見当たりませんでした。APIの呼び出し、管理コンソールの画面の確認、Apps Script の例の実行は行っていません。

Chrome のブラウザ管理を含めて Google Workspace の運用を整えたい、拡張機能の棚卸しを定期的な仕組みにしたい場合は、グリームハブの IT・Google Workspace 無料相談をご利用ください。SaaS の利用状況の棚卸しは、Chrome Management APIでシャドーAIを棚卸しする記事でも扱っています。お問い合わせからご相談ください。

参考資料

この記事を共有XFacebook
鈴木 翔

技術の可能性に魅了され、学生時代からプログラミングとデジタルアートの分野に深い関心を持つ

この記事のテーマを、自社の次の一歩へ

自社に合う、Workspaceの進め方を。

移行するデータ、共有ルール、管理体制を整理し、導入から日々の運用までの進め方を考えます。

  • 移行と初期設定
  • 共有・権限の整理
  • 管理体制
Workspaceの導入・運用を相談する

構想段階からご相談いただけます。この記事の情報を相談フォームに引き継ぎます。

最新記事をメールで受け取る