業務する環境をセキュアにした話 その5

こんにちは✋

テクノロジー本部サービス開発部でエンジニアをしている @_k725 です。

2022年度も2ヶ月経ち、新卒の方が会社全体の研修を終えて部署内での研修を行っているのを見て、(新卒経験がほぼ無いのに)謎の懐かしさを覚えています。

Jamf Proの導入

はじめに

以下の記事にて既に公開はしていましたが、 Jamf Pro を導入しました。

この記事ではそれにあたって、もう少し深掘りしたお話しを書こうと思います。

techtekt.persol-career.co.jp

これまでの課題

コロナウイルスの影響でリモートワークが当たり前となりつつなった昨今ですが、マシンの運用や管理と言った点で課題を抱えていました。

以前の記事でセキュリティキーを導入して Context-Aware Access のデバイスポリシーを強制するようにしましたが、その際に以下のデバイスポリシーを満たして Google Workspace 内部のリソースにアクセスしなければいけません。

  • macOS のアップデートへの追従
  • 記憶媒体(HDD, SSD)の暗号化
  • スクリーンロックの設定

記憶媒体の暗号化や、スクリーンロックの設定などは一度設定してしまえば基本的に変更の必要が無い項目ですが、 macOS のアップデートの追従などは出来るだけ継続して行う必要性があります。

弊社では入社後に何かとやることが多く会社から依頼されている事項などを処理していると、自分で管理しなければいけない Mac のデバイスポリシーへの準拠などは後手になってしまい、いざ何らかのリソースにアクセスしようとしたときにアクセスが出来ず、原因のよく分からぬままオフィスからリモートワーク中の私に声が掛かる…といったこともありました。

本来であればこういったデバイスポリシーへの準拠を行うためにキッティングを行いますが、リモートワークの中でキッティングなどを行うのはあまり現実的ではありません。

また、既に運用しているマシンの状況を知るにも、直接見ることは難しいので Slack などで聞くことになりますが、相手の IT リテラシーなども考慮して聞く必要性であったり、全体の状況を知りたい際に結果が出るまでに時間が掛かるケースなどもありました。

Jamf Pro 自体の導入

導入にあたっては、 "はじめに" で紹介した記事にある程度書いていますが、 Jamf Pro の国内代理店から Jamf Pro Onboarding Services (旧: JumpStart)を受けました。

個人的な感想にはなりますが、既に体験版である程度触っているケースでも細かいところを深掘りして学べたりするので、コンサルテーションを受けて更に理解が深まったと感じます。

事前に行いたかったことの1つとして、キッティングを行うためにゼロタッチデプロイ (Automated Device Enrollment) で、ゼロタッチデプロイを行うために Apple Business Manager (ABM) の準備を行います。

ABM の契約には D-U-N-S® Number が必要ですが、弊社の場合は既に取得済みだったので契約がスムーズに進みました。

Jamf Pro 自体はオンプレミス版とクラウド版がありますが、今回は後者のクラウド版を利用しました。このクラウド版ではアクティベーションコードの入力を行うだけで使い始めることが出来ます。

新規に購入したMacへの導入

Apple 社から直接法人として購入すると、 "Apple お客様番号" という番号が発行されます。この "Apple お客様番号" を ABM に登録を行うと、これまでにその法人として購入した端末が登録され、新規で購入した端末も追加されていきます。

ABM 上で MDM サーバのアサインをしてあげることで、初回セットアップ時から MDM のプロファイルインストールが進みます。既存の端末に関してもこの画面でアサインしてあげることで、次回の初期化の際にゼロタッチデプロイの恩恵を受けられます。

端末のアサイン例

注文時の注文番号からも端末の絞り込みを行えるため、一括で大量に Mac を購入して一気にアサインを行う場合はその機能を使うと手間が省けます。

既存のMacへの導入

既にユーザーに利用されている Mac に対して Jamf Pro を利用するには手動でプロファイルを1つインストールする必要があり、 https://example.com/enroll のようなURLを組織に共有し、ユーザーのアサインとマシンの登録を行います。

"Continue" ボタンを押してプロファイルをダウンロード・インストールしてもらう。

インストールが終了すると Jamf によって管理されている旨のメッセージが表示される。

なお、弊社には別の経路で購入したためか何台か ABM で管理が行えていない Mac があり、次回の初期化の際にゼロタッチデプロイが行えない端末が存在していましたが、 特定の時期以降の端末に関しては iPhone 用 Apple Configurator を利用して、 ABM に登録を行うことが出来ます。

Apple Watch のペアリングに近い

幸い、 ABM で管理できていない Mac のほぼ全てが、条件を満たす端末だったためこの機能を有効に活用出来ました。(1台のみ MacBook Pro 15-inch, Mid 2015 で対象外でした)

OSSの活用

Jamf Pro などの管理ツールで利用出来るツール類の活用をしています。

ゼロタッチデプロイ時の進捗表示

macOS の初期設定後にデスクトップが表示される際にゼロタッチデプロイ用のスクリプトが流れますが、デフォルトでは特に表示が無くバックグラウンドで進みます。

DEPNotify というツールは、テキストのログを読み取りつつ画面に進捗状況を表示することができ、なおかつ DEPNotify 起動中に操作を禁止することができます。

任意のロゴや文言を設定出来るので、 標準の UI のような統一された表示をしつつ自社のロゴを表示しながら注意事項などを記載し、スマートにゼロタッチデプロイを進められます。

DEPNotify のウィンドウ

macOS 更新のお知らせ表示

macOS でもデフォルトで自動更新機能や更新通知機能は存在しますが、ユーザーが拒否することが可能です。

一番最初の課題でも書きましたが、 Context-Aware Access の導入に伴い最小の OS バージョンを指定するようになりました。ユーザーに正しく期日までに macOS のアップデートを行ってもらうのはセキュリティを保つ上でもとても重要です。

Nudge というツールでは指定した期日までに更新を行うようにダイアログを定期的に表示させます。期日が近づくにつれてダイアログの表示頻度は上がるので、積極的にアップデートを促すことが出来ます。

指定した期日を14日間経過した Nudge のウィンドウ

運用のコツ

Smart Computer Groups の活用

Jamf Pro には Smart Computer Groups という条件に応じて動的なグループを作成する機能があります。

ダッシュボードからその条件に一致した Mac の数を表示することも出来ますし、一括操作やプロファイルの配布などを行う際にもこの動的なグループが活用出来るのでオススメです。

macOS 12.2 未満の Mac をまとめる例

Self Service の活用

Jamf Pro では Self Service というアプリが利用可能になり、管理者が以下の項目を追加出来ます。

  • Web ページへのリンク
  • Volume Purchase Program (VPP) を利用した App Store からのアプリのインストールボタン
  • .pkg ファイルのインストールボタン
  • 任意のシェルスクリプトの起動

なお、先述の Smart Computer Groups も活用出来るので、例えば "FileVault 2 を有効にするシェルスクリプトを起動するボタン" を FileVault 2 を有効化していない人にのみ表示させることも可能です。

Self Service のウィンドウ

スクリプトの Git 管理

Jamf Proではシェルスクリプトを利用してユーザーの端末にアプリケーションをインストールしたりすることが出来ますが、標準で用意されてる機能では Jamf Pro の管理画面にシェルスクリプトを入力して保存という機能に留まっています。

標準で用意されてるスクリプト入力画面

手作業で変更の適用作業を行うのは色々と億劫に感じる部分があったので、 ShellCheck を利用してシェルスクリプトのチェックを行い、 GitHub でシェルスクリプトの管理と Jamf Pro の API を GitHub Actions で呼び出し、スクリプトの同期を行っています。

GitHub で管理しているコードの一部

GitHub Actions で ShellCheck とデプロイを行っている例

Patch Manager の活用

Jamf Proでは端末のエージェントが定期的にインストールされているアプリケーションを報告してくれます。

その情報を元に、 Jamf 社で収集した最新バージョンと比較して、全体のどの程度が最新版かというのを表示することができます。

Citrix Workspace の利用状況

また、Google Chromeのような自動アップデートが強力なアプリケーションを管理するのは向いていませんが、シェルスクリプトでのダウンロードやインストールが難しいアプリケーションの場合は、バージョン毎に .pkg ファイルを指定出来るので指定した上で、更新ポリシーを決めてあげることによってアップデートの配布とインストールが容易に行えます。

Citrix Workspace のパッチ定義画面

さいごに

Jamf Proを導入することで、大幅な手間の削減が行えました。

特にゼロタッチデプロイなどのお陰で、 "安定したインターネット" にさえ接続していれば基本的に眺めているだけで終わる状況に持って行けたのは良かったと思います。

そのため、新しく入社された方には基本的に新品の Mac を貸与していますが、一度も起動すること無く貸与が出来る状態になっています。(現状では資産管理用のシールを貼る為に、一度シュリンクラップを破いてしまっていますが…)

なお、Jamf Pro を扱うにあたっては稀にメーカーサポートに頼ることにもありますが、コミュニティ上の投稿や公式ドキュメントなども十分にやりたいことのヒントになります。

それでは 👋

@_k725

@_k725さんのプロフィール

エンジニアリング統括部 サービス開発部 第3グループ エンジニア

お寿司が好きです🍣

※2022年6月現在の情報です。

▶エンジニアリング統括部の求人ページはこちら