SaaS

Jamf Unlockを使ってiPhoneでMacのロックを解除してみた

はじめに

どーもみなさんこんにちは。ねもてぃです。
Jamf Unlockというものがリリースされました。
新製品なのか?と思いきやJamf Connectの拡張機能のようだったのでさっそく試してみました!
Jamf Connectに関してはこちらをご参照ください。
2020年のJNUC(Jamf Nation User Conference)であった”Passwordless authentication with Jamf Connect“というセッションで紹介されていたものがついに実装された形だと思っています。

Jamf Unlockって?

一言で言うと、「Macのロック解除にiPhoneを使えるようになるiOSアプリケーション」です。

Jamf Unlockは、ユーザーがパスワードを使用せずにモバイルデバイスでMacのロックを解除できるようにするモバイルデバイスアプリです。Jamfロック解除、ユーザーは、ペアとMacとの信頼関係を確立するために使用され、そのデバイス上の身元証明(証明書)を作成したり、生成するセットアッププロセスを完了します。セットアップが完了すると、ユーザーは次のシナリオで代替認証方法としてアプリを簡単に使用できます。

・Macのロックを解除する

・システム環境設定で設定を変更するように求めるプロンプト

・コマンドを使用してroot権限で実行される sudo コマンド

IT管理者は、Jamf Proを使用して、マネージドアプリ構成を介して認証設定を構成し、組織内のユーザーにアプリを展開できます。

以上、公式ドキュメントより自動翻訳

これができるようになると、スクリーンセーバー後のロック解除もiPhoneがあればパスワードを入力することなく行うことができるようになります。(Touch IDやFace IDといった生体認証と組み合わせた場合)

Apple WatchやTouch ID搭載のMacでいいやん・・・って話もありますが、今回はちょっと置いておきます。

必要なもの

  • Mac(macOS10.15.4以降)
  • iPhone(iOS14.0以降の管理対象デバイス)
  • Jamf Connect(Ver.2.4.0以降)
  • Azure ADやOktaなどJamf Connectに対応したCloud IdP
  • もろもろ配布用のMDM(ここではJamf Proとします)

利用環境

  • MacBook Pro (13-inch, M1, 2020)
  • macOS Big Sur 11.4
  • iPhone 8 (iOS 14.6)
  • Jamf Connect 2.4.0
  • Okta
  • Jamf Pro 10.29.2

準備

Jamf ConnectとOktaの統合に関しての説明は省きます。すでに統合が済んでいて、+αで設定する必要がある項目に関して記載していきます。

Jamf ConnectとOktaの統合に関してはこちらからご確認ください。

各種設定に関しては公式ドキュメントを参考に設定しています。

Oktaの設定

よし、ドキュメントみながら追加で設定していくぞ!ってやるとしれっと追加されているOkta側の設定を見落とすので最初に紹介しておきます。

  • Oktaの管理コンソール > Application からJamf Connect用に作成したアプリケーションを開きます。(Jamf Unlock用に追加でアプリを作成しても良いですが今回はJamf Connectユーザー用に作成したアプリに追加設定しました。)
  • Generalタブ > General SettingsのEditから編集モードにし、下の方にある「Sign-in redirect URIs」の”+ Add URI”を選択し、jamfunlock://callback/authを追加し”Save”を押して保存します。
Okta管理コンソールよりJamf Connect用アプリのGeneral編集画面

Okta側の設定は以上です。

Jamf Connectの設定

続いてJamf Connectの追加設定です。
Jamf Connectの設定内に、Jamf Unlockを有効にするためのUIを表示する設定が追加されています。
こちらは既存のJamf Connect用の構成プロファイルに追記せず、独立した構成プロファイルとして設定することもできるので今回はJamf Unlock用の設定のみを追加で作成しました。
追加する必要がある記述は以下のパラメータとなります。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Unlock</key>
<dict>
<key>EnableUnlock</key>
<true/>
<key>RequirePIN</key>
<true/>
</dict>
</dict>
</plist>
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Unlock</key> <dict> <key>EnableUnlock</key> <true/> <key>RequirePIN</key> <true/> </dict> </dict> </plist>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Unlock</key>
    <dict>
        <key>EnableUnlock</key>
        <true/>
        <key>RequirePIN</key>
        <true/>
    </dict>
</dict>
</plist>
  • Jamf Proから配布する場合は、コンピュータ > 構成プロファイル > アプリケーションとカスタム設定 > アップロード から
    • 環境設定ドメイン:com.jamf.connect
    • プロパティリスト:上記記述をコピペを設定して保存します。
一般ペイロードの設定やScopeの設定もお忘れなく・・・

アプリケーションとカスタム設定 > Jamfアプリケーション にもすでに追加されているようなのでそちらから設定する方法もありますがここでは割愛させていただきます。

Jamf Unlockの設定

Jamf Unlockの設定を行なっていきます。
「App Config(Appの構成)」を使用しますので必ずManaged Appとして配布する必要があります。
すでにApp StoreでリリースされているのでApple Business ManagerからJamf Unlockを検索し、ライセンスを購入(無償です)しておきます。
Jamf Pro上でJamf Unlockが同期されたらそちらから”Appの構成”を設定していきます。
Azure ADと連携させている場合はこちらから設定値を参照ください。
Oktaの場合は、

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<dict>
<key>com.jamf.config.idp.oidc.provider</key>
<string>Okta</string>
<key>com.jamf.config.idp.oidc.tenant</key>
<string>tenant-name</string>
<key>com.jamf.config.idp.oidc.client-id</key>
<string>abcdqxanb4Rb4veu0h8</string>
<key>com.jamf.config.idp.oidc.redirect-uri</key>
<string>jamfunlock://callback/auth</string>
</dict>
<dict> <key>com.jamf.config.idp.oidc.provider</key> <string>Okta</string> <key>com.jamf.config.idp.oidc.tenant</key> <string>tenant-name</string> <key>com.jamf.config.idp.oidc.client-id</key> <string>abcdqxanb4Rb4veu0h8</string> <key>com.jamf.config.idp.oidc.redirect-uri</key> <string>jamfunlock://callback/auth</string> </dict>
<dict>
    <key>com.jamf.config.idp.oidc.provider</key>
    <string>Okta</string>
    <key>com.jamf.config.idp.oidc.tenant</key>
    <string>tenant-name</string>
    <key>com.jamf.config.idp.oidc.client-id</key>
    <string>abcdqxanb4Rb4veu0h8</string>
    <key>com.jamf.config.idp.oidc.redirect-uri</key>
    <string>jamfunlock://callback/auth</string>
</dict>

となっていますが、tenant-nameabcdqxanb4Rb4veu0h8の部分を自環境のものに置き換える必要があります。
tenant-namehogehoge.okta.comの場合、hogehogeだけを記述します。
abcdqxanb4Rb4veu0h8の部分はOktaの設定の項で設定したJamf Connect用アプリケーションのClient IDと置き換えます。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<dict>
<key>com.jamf.config.idp.oidc.provider</key>
<string>Okta</string>
<key>com.jamf.config.idp.oidc.tenant</key>
<string>hogehoge</string>
<key>com.jamf.config.idp.oidc.client-id</key>
<string>abcdefg1234hijk5678</string>
<key>com.jamf.config.idp.oidc.redirect-uri</key>
<string>jamfunlock://callback/auth</string>
</dict>
<dict> <key>com.jamf.config.idp.oidc.provider</key> <string>Okta</string> <key>com.jamf.config.idp.oidc.tenant</key> <string>hogehoge</string> <key>com.jamf.config.idp.oidc.client-id</key> <string>abcdefg1234hijk5678</string> <key>com.jamf.config.idp.oidc.redirect-uri</key> <string>jamfunlock://callback/auth</string> </dict>
<dict>
    <key>com.jamf.config.idp.oidc.provider</key>
    <string>Okta</string>
    <key>com.jamf.config.idp.oidc.tenant</key>
    <string>hogehoge</string>
    <key>com.jamf.config.idp.oidc.client-id</key>
    <string>abcdefg1234hijk5678</string>
    <key>com.jamf.config.idp.oidc.redirect-uri</key>
    <string>jamfunlock://callback/auth</string>
</dict>

のような感じで2箇所変更します。必要最低限の設定は以上です。

最低限の設定値

必要最低限の設定は以上なのですが、私の場合はiPhone側の生体認証を強制させるパラメータとロゴ画像を変更するパラメータを追加しました。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<dict>
<key>com.jamf.config.idp.oidc.provider</key>
<string>Okta</string>
<key>com.jamf.config.idp.oidc.tenant</key>
<string>hogehoge</string>
<key>com.jamf.config.idp.oidc.client-id</key>
<string>abcdefg1234hijk5678</string>
<key>com.jamf.config.idp.oidc.redirect-uri</key>
<string>jamfunlock://callback/auth</string>
<key>com.jamf.config.ui.logo.url</key>
<string>画像のURLをここにいれてください</string>
<key>com.jamf.config.biometrics.required</key>
<true/>
</dict>
<dict> <key>com.jamf.config.idp.oidc.provider</key> <string>Okta</string> <key>com.jamf.config.idp.oidc.tenant</key> <string>hogehoge</string> <key>com.jamf.config.idp.oidc.client-id</key> <string>abcdefg1234hijk5678</string> <key>com.jamf.config.idp.oidc.redirect-uri</key> <string>jamfunlock://callback/auth</string> <key>com.jamf.config.ui.logo.url</key> <string>画像のURLをここにいれてください</string> <key>com.jamf.config.biometrics.required</key> <true/> </dict>
<dict>
    <key>com.jamf.config.idp.oidc.provider</key>
    <string>Okta</string>
    <key>com.jamf.config.idp.oidc.tenant</key>
    <string>hogehoge</string>
    <key>com.jamf.config.idp.oidc.client-id</key>
    <string>abcdefg1234hijk5678</string>
    <key>com.jamf.config.idp.oidc.redirect-uri</key>
    <string>jamfunlock://callback/auth</string>
    <key>com.jamf.config.ui.logo.url</key>
    <string>画像のURLをここにいれてください</string>
    <key>com.jamf.config.biometrics.required</key>
    <true/>
</dict>

com.jamf.config.ui.logo.urlというkeyに表示したい画像のURLを、iPhoneの生体認証を強制するcom.jamf.config.biometrics.requiredというkeyを有効にするためにtrueという値をを追加しています。

最終的に使用した設定値

あとは認証に使用するiPhoneをScopeにいれ、Managed Distributionタブから「Volume Purchasing コンテンツを割り当て」にチェックをいれて保存します。

これでJamf Unlockの配布設定も完了しました。

動作確認

それでは実機での動作確認に移ります。

Jamf UnlockとJamf Connectをペアリング

まずiPhone側で配布されたJamf Unlockを開き、”Get Started”から初期設定を行います

“Get Stearted”を押します

「”Unlock”がサインインのために”okta.com”を使用しようとしています。」とでるので続けるを押します。

“続ける”を押します

Oktaの認証画面が表示されるのでそのまま認証します。

Oktaに設定したアプリに割り当てられたユーザーでサインインします

認証が完了するとiPhone側にアプリのアクセス許可を与えるフローに移ります。生体認証もしくはパスコードの利用許可、Wi-Fi検索の利用許可、位置情報サービスの利用許可、カメラへのアクセス許可を求められます。

“Continue”を押します
Touch IDを利用している場合は許可をするためにそのまま指紋認証を行ないます
“Continue”を押します
“OK”を押します
“Continue”を押します
“Appの使用中は許可”を押しました
“Continue”を押します
“OK”を押します

カメラのアクセス許可まで完了するとペアリングさせるためのQRコードを読み込む画面になります。Mac側のJamf ConnectメニューバーAppより、”Paired Devices”を選択します。

メニューバーからJamf Connectのアイコンを押すと表示されます

ペアリング画面が表示されるので”Pair new device”を選択します。

“Pair new device”を押します

ここで表示されるQRコードをJamf Unlockで読み取ります

いくつか認証や許可を求められるので設定していきます。

パスワードを入力し、”ヘルパーをインストール”で許可します
パスワードを入力し”OK”で許可します
Bluetoothの使用も許可します

ここまで設定できたらもう一度iPhoneに戻って設定の続きを道なりに行います。

“Finish”を押します
“Continue”を押します
これが最後です。通知を”許可”します
派手目な画面が表示され”Start Using Unlock”より利用ができるようになります
最終的に表示される画面です

ここまで表示されましたらペアリング設定は完了です。

Macのロックを解除してみる

それではMacのロック画面を確認してみます。

プレースホルダーテキスト(パスワードを入力するところ)が「PIN」という表示になっていることが確認できます。この状態でReturnキーを押すとJamf Unlockに通知が飛びます。

Jamf Unlockを開くと認証を求められるので認証します。

Jamf Unlockを起動するための認証です
Macから飛んできた認証要求に応答するための画面です

「Unlock authentication sent to Mac」がJamf Unlockに表示されると同時にMacのロック画面が解除されます。

システム環境設定の鍵を外してみる

システム環境設定 > セキュリティとプライバシー > 左下鍵マークをクリックし、解除してみます。

MacにTouch IDを設定している場合はそのまま使えちゃいますが、”PINを使用”をクリックします
Macのロック画面の時と同様に”ロックを解除”を押すとJamf Unlockに認証要求が通知されます

ターミナルでsudoを実行してみる

ターミナルからsudoコマンドを実行しようとすると通常パスワードが求められますが、「Enter PIN for ‘JamfUnlock’」と表示が変更されていることが確認できます。

こちらも同様にそのままReturnを押すとJamf Unlockに認証要求が通知されます
Jamf Unlockで応答すると無事実行されました!

注意事項と感想

ざっと触ってみた感じですが、正直なところ使い所に迷うなぁというのが感想です。と、いうのも、

  • 30秒以内に認証要求を完了しなかった場合、通常通りローカルのパスワード入力になってしまう
  • 管理者からJamf Unlockの利用をユーザーに強制することはできない
  • FileVault2やJamf Connect Loginの認証には利用できないため結局パスワード入力は残ってしまう

といった注意しなければいけない点があるからです。

Jamf Connectのライセンスでそのまま使える追加機能ではありますが、実際に現場で展開するかと聞かれるとまだ時期尚早かな、といった印象でした。

おわりに

最後に落とすようなことを書きましたが、こんな感じでMacのロック解除や管理者権限の認証にiPhoneを利用できるのは面白いですね。iPhoneを開かなければならないのは手間ではありますが、パスワードを入力しなくて良い、というのはそれはそれで便利だと思います。まだまだこれからの機能だとは思うので今後のアップデートに期待ですね!それでは!

ねもてぃ(nemotea)

2020年10月入社。デバイスチーム所属。
前職ではAppleデバイスとMDM周りのエンジニアをしていました。
漫画・アニメとお酒が好きなギタリストです。