Sansan Tech Blog

Sansanのものづくりを支えるメンバーの技術やデザイン、プロダクトマネジメントの情報を発信

Jamf Connect の導入について(前編)

こんにちは。コーポレートシステム部の寺園です。
モットーは「楽するための努力は惜しまない」です。

さて、だいぶ期間が空いてしまいましたが 以前書いたブログ で少し触れていた Jamf Connect について正式導入する運びとなったので、使ってみないと分からない Jamf Connect のあれこれをご紹介させていただこうと思います。*1

Jamf Connect って何?

Macのローカルアカウントとアイデンティティプロバイダ (IdP) のアカウントを連携させるためのツールです。 しかしざっくりと経緯を飛ばして言ってしまうと、私は Macのゼロタッチキッティングを完成させるための最後のピース であると考えています。

と言葉で説明するだけでは何が出来るようになるのか分かりづらいと思うので、まずはこちらの動画をご覧ください。

f:id:teddi:20210607234121g:plain
Jamf Connect によるゼロタッチキッティング

ご覧いただいたように起動してから必要になる操作は、設定アシスタントを進めることとIdPへのログインだけです。 あとは全て自動でセットアップが進行して完了していることが分かると思います。

Jamf Connect で変わるキッティング

元々Sansanで行っていたMacのキッティングについては、Macの ADE(Automated Device Enrollment、旧DEP)と Jamf Pro との組み合わせである程度の自動化は実現出来ていました。しかしユーザ貸与するためにはアカウント作成とFileVault(ディスク暗号化)のためどうしても管理者側とユーザ側での作業が必要となっていました。

これが Jamf Connect の導入により初回ログイン時にアカウント作成とFileVaultの有効化が出来るようになるためユーザ側だけでキッティング操作が完結、つまりゼロタッチキッティングが実現出来るようになります。

以下が新旧のキッティングフローを表した図です。 ゼロタッチキッティングでは貸与後にユーザ側だけでキッティングが完結することが分かります。

f:id:teddi:20210609153833p:plain

Jamf Connect って何ができるの?

まず大前提として理解しておくべきポイントがあります。

それは Jamf Connect はIdPとの同期ツールではない という点です。

冒頭で述べたように Jamf Connect はMacとIdPのアカウントを連携はしてくれますが、同期してアカウント(パスワード)を自動修正してくれるわけではありません。Jamf Connect を導入したとしてもMacの内部では何も変わらず引き続きローカルアカウントが利用されます。

Jamf Connect で出来そうで出来ないこと
  • IdPアカウントでパスワードが変更されるとMacのアカウントのパスワードも同期して変更される → されません
  • IdPアカウントが無効化されるとMacのアカウントも同期して無効化される → されません

ここがよくある誤解だと思われます。この点を正しく理解していないと求める期待値とのギャップが生じてしまうので注意が必要です。それでは何が出来るのかと言うと主に以下の機能があります。

Jamf Connect で出来ること
  • Macへのログイン時にIdPによる認証でログインできる
  • IdPとのパスワード同期状態を監視してくれる
  • IdPアカウントの情報でMacのローカルアカウントを作成できる

Macへのログイン時にIdPによる認証でログイン

Jamf Connect Login と呼ばれている機能です。デフォルトのログインウィンドウの代わりにIdPによる認証画面を表示させます。IdPの設定により認証のコントロールが出来るようになるためMacログイン時のセキュリティ向上にも繋がります。

実はこの機能はログインウィンドウをインターセプトしているだけで、裏側ではIdPによる認証が成功するとそのIdPアカウントのパスワードでMacのローカルアカウント認証を代行しています。よってこの認証を行うためには IdPアカウントのパスワード=Macローカルアカウントのパスワード という状態が常に保たれている必要があります。そこで必要となるのが次の機能です。

IdPとのパスワード同期状態の監視

Jamf Connect メニューバーアプリと呼ばれてる機能です。Macにログインした後の稼働中にIdPアカウントとMacローカルアカウントのパスワード同期状態(一致しているか)を監視するためのアプリです。どちらか一方でパスワード変更が行われると通知を表示してパスワード変更して同期するよう警告してくれます。

ここで前提でお話していた同期ツールではないという点が理解出来たと思いますが、あくまでIdPアカウントとMacローカルアカウントの 同期状態を保つためにパスワード変更するのは自分自身 です。 Jamf Connect は正しく同期されているのかを確認してくれるだけです。同期のための補助ツールと考えるとしっくり来ると思います。

IdPアカウントの情報でMacのローカルアカウントを作成

こちらも Jamf Connect Login の機能の一つです。Jamf Connect のログイン成功時にそのIdPアカウントのMacローカルアカウントが未作成だった場合、IdPアカウントの情報を利用して自動的に新しいMacのローカルアカウントを作成(同時にFileVaultを有効化)してくれるという機能になります。まさにこの機能こそがゼロタッチキッティングには欠かせない機能です。

これらの機能をまとめると以下の図のようになります。

f:id:teddi:20210610141353p:plain

Jamf Connect は必要なのか?

ここまでの説明で「同期ツールじゃないの?」「それだけの機能だったらローカルアカウントのままでいいや」という考えをされた方もいらっしゃると思います。

正直なところローカルアカウントのままで良いという企業の場合 Jamf Connect は必要ないと考えます。ゼロタッチキッティングについてもローカルアカウントを利用するのであれば、Jamf Pro 単体でも構成することは可能です。

よって Jamf Connect の仕様を正しく理解し、その機能が自社にとって価値があるかを判断することが大事だと考えます。

Sansanで Jamf Connect を導入した理由

それではそれらの仕様を理解したうえで何故Sansanで導入を決定したのか?それには以下のような理由があります。

シンプルなユーザ体験

私達のコーポレートシステム部ではSansanで働く従業員に対してシンプルなユーザ体験を提供することをミッションとしています。 Oktaの導入によって社内で利用しているサービスの大部分はOktaに統合されました。これにより社員は基本的にOktaアカウントでサービスが利用可能になっています。 しかしOktaのパスワードとPCログインのパスワードが分離している場合、それぞれのパスワードを管理する必要が生じるためシンプルなユーザ体験ではなくなると考えました。

モバイルアカウントの課題

ユーザ体験のために今まで利用していたのがAD(Active Directory)アカウントによるモバイルアカウントです。古くからMacでADアカウントを利用するために用いられていた方式で、ADサーバとMacを接続(ADバインド)してADアカウント(ネットワークアカウント)でMacにログインします。そしてこのアカウントをMac上に実体のあるアカウントとして作成するために利用されるのが「モバイルアカウント」です。

このモバイルアカウントというのは、大本はADアカウントですので管理元はADサーバになります。そのためADサーバに接続されていないとパスワード変更も出来ませんし、AD側でアカウントパスワードの変更が行われてしまうとMacのキーチェーンやSecureTokenとの差異が生じてしまい正常に動作しなくなってしまいます。
そしてADアカウントを利用するためにはADサーバとの接続が必須となることから社内でしかセットアップが出来ず、場所を選ばずにセットアップ出来る必要のあるゼロタッチキッティングの仕組みを作るうえでの弊害となっていました。

Jamf Connect 導入の決定

これらの課題からまずはモバイルアカウントの廃止を検討しました。そしてIdPとしてOktaを導入したこともあり、IdPアカウントとの統合を実現し、かつゼロタッチキッティングの完成を目指せるツールとして検討を重ねた結果 Jamf Connect を導入することとなりました。

運用課題

さて、こうして導入が決まっていざ運用開始となっても安心は出来ません。運用にはトラブルがつきものです。ここで代表的な運用課題と対策案をご紹介します。

パスワード忘れの対応

こちらが Jamf Connect 最大の課題と言っても過言ではないでしょう。この記事の中でも説明したとおり Jamf Connect はあくまでIdPとの連携を補助するためのツールで内部で利用されるのはMacのローカルアカウントです。 Jamf Connect ログイン画面ではIdPでの認証が行われ、IdPアカウントのパスワードでMacのローカルアカウントの認証を代行します。

使用中のIdPアカウントのパスワード変更を行った場合、Macのローカルアカウントのパスワードとは当然差異が生じます。Jamf Connect ログインではIdP認証後にローカルアカウントの認証を代行しますが差異が生じているため失敗します。ここで Jamf Connect はMacのローカルアカウントのパスワード(つまりIdPアカウントにとっての旧パスワード)を求めてきます。旧パスワードと新パスワードを用いてローカルアカウントを新パスワードに修正しようとするわけです。

f:id:teddi:20210610152844p:plain

意図的にパスワード変更を行った場合は良いでしょう。まだ旧パスワードを覚えている場合も多いと思います。しかし本当にパスワードを忘れてしまいリセットせざるを得なくなった場合はどうなるでしょうか?

実はこの問題に対する正規の対応手順は用意されていません。

事前に管理者アカウントを作成しておき、緊急時にそちらのアカウントを利用するように案内することも出来ますが、常に緊急用のアカウントが存在するのはスマートではありません。

macOS Big Sur での課題解決

しかし macOS Big Sur でこの課題解決に役立つ機能が実装されました。
それは Bootstrap Token という機能です。

FileVaultを有効化したデバイスではユーザアカウントにSecureTokenが付与されます。しかしデバイス内で追加の新しいアカウントが作成されても、既存のアカウントから許可されないと新しいアカウントはSecureTokenを持つことが出来ませんでした。そしてそのSecureTokenを持たないアカウントでは、SecureTokenを持つアカウントのパスワードを変更することが出来ないという制限があります。

Big Surで実装されたBootstrap Tokenでは Jamf Connect と組み合わせることで Jamf Connect による新規ユーザ作成処理の際に自動的にSecureTokenを発行することが出来るようになりました。この機能を利用することで以下のような解決手段が取れるようになります。

パスワードを忘れた場合のリカバリ手順

  • IdP側で対象アカウントのパスワード変更を行う(ユーザ or 管理者)
  • 対象デバイスの復旧キーを確認*2してユーザに伝える(管理者)
  • リカバリ用のIdPアカウントを作成して認証情報をユーザに伝える(管理者)
  • 復旧キーを利用してFileVaultのロック解除を行う(ユーザ)
  • リカバリ用のIdPアカウントを利用してログインする(ユーザ)
  • システム環境設定で対象アカウントのパスワードをリセットする(ユーザ)
  • 再起動して対象アカウントでログインし、新しいパスワードで認証出来るようになったことを確認する(ユーザ)

ポイントはリカバリ用のIdPアカウントで Jamf Connect でログインすることでSecureTokenを付与されたアカウントが作成されることです。SecureTokenを付与されることで初めて他のSecureTokenアカウントのパスワードリセットが可能になります。

多少手順は複雑ですが何も手段が無いよりはマシかなと私は考えています。

また、デバイスに作成されたリカバリ用のIdPアカウントは作業完了後に削除されるよう専用のポリシーやスクリプトを作成するなど対応が必要になりますのでご注意ください。

まとめ

今回の記事では Jamf Connect の機能と運用課題についてご紹介しました。
長くなりましたので今回は一旦ここまでとさせていただいて、次回具体的な環境構築していくうえでのポイントなどをご紹介したいと思います。お楽しみに!

*1:本記事で紹介している Jamf Connect の機能はバージョン2.3.3を元にしています

*2:復旧キー利用するため Jamf Pro で抽出するよう設定されている必要があります

© Sansan, Inc.