Google Apps Script で Jamf Pro のオブジェクト使用状況レポートを作成するツールを作ってみた
Jamf Pro のオブジェクト使用状況レポートをスプレッドシートに書き出して確認するためのツールを作成して公開しました。
概要
Jamf Pro の運用をしていると、各オブジェクトがどこで使用されているかというのが分かりづらくなってきます。
スマートコンピュータグループには "レポート済み" という機能があって、どこで使用されているかが把握できるようになっているのですが、その他のオブジェクトではこの機能がありません。
そこでこのツールを利用してスプレッドシートに使用状況レポートを書き出すことで、どのオブジェクトがどこで使用されているかというのを確認・分析することが可能になります。
シートの説明
Objects
以下のオブジェクトの一覧を出力します。
- category
- computer_group
- policy
- configuration_profile
- package
- script
- advanced_computer_search
- computer_prestage
ここで表示するのは基本的な項目のみに絞っているため、各オブジェクトの詳細を取得したい場合は個別の一覧を作成する必要があります。
Report
各オブジェクトがどこで使用されているかの状態を表したレポートです。
type〜enabled までが使用されている先の情報で、usage_type 以降が使用されているオブジェクト情報になります。
サンプル画像の例では "Install Slack" というポリシーにおいて、スクリプト、パッケージ、コンピュータグループの3つが使用されていることが分かります。
Objects シートの情報と突合させることでどのオブジェクトが使用されていて、どのオブジェクトが使用されていないのかが明確になります。
設定方法
前提条件
以下の設定が完了していることが前提となっています。
- Google Apps Script API の有効化
- clasp のパッケージインストール、Googleアカウントの認証
※ソースコードをGASのファイルにコピペしても動きますが、clasp でデプロイすることを前提としています。ここでは clasp の設定方法や使い方などは割愛させていただきます。
APIロールとクライアントの作成
Jamf API はユーザ名とパスワードによるBasic認証でも動作しますが、管理面やセキュリティ面を考慮して本ツールでは対応しておりません。
Jamf Pro で以下の権限を含んだAPIロールを作成し、そのロールを割り当てたAPIクライアントを作成します。
[必要な権限]
- Read macOS Configuration Profiles
- Read Advanced Computer Searches
- Read Smart Computer Groups
- Read Categories
- Read Packages
- Read Computer Extension Attributes
- Read Static Computer Groups
- Read Policies
- Read Scripts
- Read Computer PreStage Enrollments
Google Apps Script の作成
- 新規でスプレッドシートを作成して Apps Script プロジェクトを作成します
- Apps Script プロジェクトのスクリプトIDをコピーします
- .clasp.json.sample をコピーして .clasp.json を作成します
- .clasp.json を編集して
scriptId
の値にコピーしたスクリプトIDを指定します -
clasp push
でスクリプトをデプロイします
プロパティの設定
- Apps Script プロジェクトの設定画面を開きます
- スクリプトプロパティを編集 をクリックします
- 以下のプロパティを追加します
-
SERVER
: e.g. mycompany.jamfcloud.com -
CLIENT_ID
: 作成したAPIクライアントのクライアントID -
CLIENT_SECRET
: 作成したAPIクライアントのクライアントシークレット
-
レポートの作成方法
- スプレッドシートを開きます
- 既に開いている場合はリロードしてください
-
Jamf Pro
というメニューが追加されます - いずれかのメニューを選択して実行するとレポートが作成されます
-
Update Objects
: オブジェクト一覧を作成します -
Update Report
: 利用状況のレポートを作成します - 初回実行時のみGoogleアカウントの許可が必要です
-
使用上の注意点
- プロパティに設定したクライアントID、クライアントシークレットはスプレッドシートの編集権限のあるユーザは参照できてしまうため共有先にはご注意ください。
- オブジェクトが大量に存在する場合の実行時間やエラー処理までは対応できていないため、正常に動作しない可能性があります。不具合を確認されましたが Github の Issues 等でご連絡ください。
最後に
元々は同様のツールを Python で作成していたのですが、結局CSVで吐き出してスプレッドシートに読み込ませていたりしたので、最初からスプレッドシートに書き出してくれた方が良いと思いGAS化してみたのが本ツールになります。
Jamf API の実行箇所などは将来的に別用途でも使えるようにモジュール化するつもりで作成しているので、色々と応用もできると思います。要望やプルリクなどいただけると大変嬉しいです。
Discussion