[GAS]SentinelOne APIを利用して社員PCのアプリケーション脆弱性を取得

2022.08.29

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

  • t_o_dと申します。
  • SentinelOneでの脆弱性管理の際に、SentinelOne APIを利用すると容易に情報を取得することができます。
  • そこでSentinelOne APIで社員PCのアプリケーション脆弱性をGASで取得してシートに書き出す方法を記録いたします。

結果

  • GASのスクリプトを実行すると、以下のようにアプリケーションの脆弱性一覧が指定のシートに書き出されます。
    • ※以下の画像のL列の「Agent name」がPC名にあたるため、どのユーザーが保有しているPCにアプリケーションの脆弱性が存在するのかを特定することができます。

環境

  • mac OS Monterey 12.2
  • Google Apps Script

注意

  • ※こちらの機能はEA(Early Access)版、いわゆるBeta版扱いであり取得情報が不安定な部分も見受けられるため、ご利用の際は十分にご検討ください。
    • 例 : 「最新バージョンを脆弱性バージョンと誤検知」や「取得バージョンの誤り」等。

手順

EA(EarlyAccessProgram)の有効化

  • 現時点でEA(EarlyAccessProgram)、いわゆるBeta版扱いであるため利用するには事前に有効化する必要があります。
  • まず、SentinelOneの管理画面にアクセスしてサイドメニューの「Settings」をクリックして「Early Access Program」欄へ移動します。
  • そして「Join the SentinelOne Early Access Program」をONにして有効化してください。

APIトークンの生成

  • SentinelOneの脆弱性情報を取得するために必要なトークンを生成します。
  • まず、SentinelOneの管理画面にアクセスして右上から「My User」をクリックしてください。

  • 次にポップアップされた画面の「Options」から「generate API token」もしくは「Regenerate API token」をクリックしてください。

  • クリック後、APIトークンが表示されるのでメモしておいてください。

スプレッドシート作成

  • 新規でスプレッドシートを作成して、そのシートIDをメモしておいてください。
  • その後、シート内の「拡張機能」タブから「Apps Script」でスクリプトエディタを開いてください。

プロパティ設定

  • スクリプトエディタを開いたら、スクリプトプロパティに以下の内容を設定してください。
プロパティ
SENTINEL_API_BASE SentinelOne API URL
例: https://xxxxxx.sentinelone.net/web/api/v2.1
xxxxxxの部分は契約しているSentinelOneアカウントです。
SENTINEL_API_TOKEN 上記手順で取得したAPIトークン
SHEET_ID 上記手順で作成スプレッドシートID

コード記述

  • プロパティ設定後、以下の内容をスクリプトエディタの任意のgsファイルに記述します。
const properties = PropertiesService.getScriptProperties().getProperties();
const baseAPi = properties.SENTINEL_API_BASE
const token = properties.SENTINEL_API_TOKEN

// メイン処理
function main(){
  // シート情報
  const sheetId = properties.SHEET_ID
  const spread = SpreadsheetApp.openById(sheetId)
  const sheet = spread.getSheetByName('シート1')

  // ハイリスクアプリケーション情報
  const highRiskApplications = getHighRiskApplications(token)

  // シートに記入
  sheet.getRange(1,1,highRiskApplications.length,highRiskApplications[0].length).setValues(highRiskApplications)
}

// ハイリスクアプリケーション取得
function getHighRiskApplications(token){
  const res = UrlFetchApp.fetch(`${baseAPi}/export/installed-applications?riskLevels=critical,high`,{
    method: 'get',
    headers: {
      'Authorization': `ApiToken ${token}`,
    }
  })
  return Utilities.parseCsv(res.getContentText())
}

実行

  • コード記述後、main関数を実行して、スプレッドシートが以下の内容となることを確認します。

  • 以上です。

まとめ

  • 弊社ではこの仕組みを利用して、「脆弱性の棚卸し・ハイリスクPC保有者への通知」を行い、社員が安心して快適に業務に取り組める環境を目指しています。
  • この機能はEA(Early Access)版ですが、社内PCのアプリ脆弱線検出にとても有用だと感じました。
  • そのため早期の正規リリースを非常に期待しております。
  • 今後もSentinelOne APIのさまざまなサービスを適宜利用していき、日々の業務改善に努めてまいります。

参考

  • 公式ドキュメント_全体 : https://xxxxxx.sentinelone.net/api-doc/
  • 公式ドキュメント_アプリケーション脆弱性 : https://xxxxxx.sentinelone.net/api-doc/api-details?category=application-risk
    • **「https://xxxxxx.sentinelone.net」**の「xxxxxxx」の部分は契約しているSentinelOneアカウントです。

アノテーション株式会社について

アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。「らしく働く、らしく生きる」のスローガンを掲げ、様々な背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。少しでもご興味あれば、アノテーション株式会社WEBサイトをご覧ください。