【Jamf Connect】 Microsoft Entra ID 条件付きアクセスの意図しないブロックを回避する 〜その2:概要編〜
はじめに 〜その2:設定編〜 の位置づけ
前回の 〜その1:概要編〜 に続き、下記のような Jamf Connect 利用時の条件付きアクセスによる意図しないブロック事象に対する対応の設定手順についてまとめます。
対応内容の詳細については 〜その1:概要編〜 をご覧ください。
条件付きアクセスによる意図しないブロック事象の例
〜その1:概要編〜 より
・「すべてのクラウドアプリ」に対して多要素認証を要求するケース
→Jamf Connect MenuBar によるパスワード同期のバックグラウンド処理が多要素認証を行えず中断してしまい、サインインログに大量の中断のログが出力される。
・「すべてのクラウドアプリ」に対してデバイスの準拠を求めるケース
→Jamf Connect からはデバイス情報(準拠状況)の提示ができないため、条件付きアクセスのデバイスの準拠を求めるポリシーでブロックされる。
設定手順
〜その1:概要編〜 より
1. カスタムAPIを使用して「プライベートエンドポイント」アプリケーション登録を作成
2. カスタムスコープを呼び出す「パブリックエンドポイント」アプリケーション登録を作成
3. カスタムセキュリティ属性を作成し、アプリケーションに適用
4. 「すべてのクラウドアプリ」に対して多要素認証を要求する Entra ID 条件付きアクセスポリシーを作成
5. 「すべてのクラウドアプリ」に対してデバイスの準拠を要求する Entra ID 条件付きアクセスポリシーを作成
6. 端末へ適用する構成プロファイルを作成し、展開

イメージ:対応内容に設定手順をマッピング
<参考資料>
- Jamf の GitHub
https://github.com/jamf/jamfconnect/tree/main/azure_conditional_access
ここにある 1〜4のPDFにある説明のとおりに実施すると今回ご案内する設定が完成します。 - YouTube : Jamf and Microsoft Entra ID Conditional Access | JNUC 2023
https://www.youtube.com/watch?v=D9-4miD-3pM
27〜38分くらいの約10分で、なぜこのような設定が必要なのか?について、(やや)わかりやすく説明されています。
準備するもの
- Microsoft Entra ID のグローバル管理者権限
アプリケーションの登録や、カスタムセキュリティ属性の作成をする際に必要です。なお、カスタムセキュリティ属性の作成と割り当てには以下の権限も必要なため、途中で付与します。
- 属性割り当て管理者
- 属性割り当て閲覧者
- 属性定義管理者
- 属性定義閲覧者 - Jamf Connect Configuration App
クライアントに配布する Jamf Connect Login・Jamf Connect MenuBar の設定ファイルを作成するツール。最新版をこちらから入手してください。
設定前の注意事項
今回ご案内する設定では、条件付きアクセスポリシーを使ってクラウドアプリケーション毎にユーザに対して多要素認証を要求します。
そのため、ユーザーごとの Microsoft Entra 多要素認証を有効にしていると、常に
多要素認証が強制されるため、想定通りの動作をしません。
特に、Jamf Connect MenuBar によるパスワード同期のバックグラウンド処理が中断されることを回避する場合は必ず無効にしてください。
※ 〜その1:概要編〜 でも言及している内容です
私はこの事実に気づくまでにだいぶ時間がかかり、たくさんの時間を無駄にしました。。😅

設定開始
1. カスタムAPIを使用して「プライベートエンドポイント」アプリケーション登録を作成
1 – 1. Microsoft Entra ID Portal (Microsoft Entra ID ポータル) にログインし、 サービスからMicrosoft Entra ID を選択し、サイドバーから[アプリの登録]に移動して[新規登録]より、アプリの登録を開始します。
添付画像のように必要な値を設定して[登録]ボタンをクリックします。

1 – 1:アプリケーションの登録
<設定値>
表示名:Jamf Connect – Conditional Access Policy API
※画像と異なりますが、読み替えてください。
サポートされているアカウントの種類:この組織のみに含まれるアカウント
リダイレクトURI:Webを選択。右の欄は空欄でよい。
1 – 2. サイドバーで、[APIのアクセス許可]に移動します。ユーザに代わってAPIがユーザ情報へアクセスすることに対して管理者の同意を組織に付与します。

1-2:APIのアクセス許可
[〇〇(組織名)に管理者の同意を与えます]ボタンをクリックし、表示される確認ダイアログで[はい]ボタンをクリックします。
1 – 3. サイドバーで、[APIの公開]に移動して、後に作成する「パブリックエンドポイント」アプリケーション登録からの呼び出しで使用するアプリケーションID URIとスコープを定義します。
アプリケーションIDのURIにて[追加]のリンクをクリックし、表示されたデフォルトの値のまま[保存]ボタンをクリックします。

1-3-1 アプリケーションID のURI
[Scopeの追加]ボタンをクリックしてスコープを追加します。

1-3-2 Scopeの追加
<設定値>
スコープ名:jamfconnect
同意できるのは誰ですか?:管理者とユーザー
管理者の同意の表示名:Read user information
※設定内容は自由
管理者の同意の説明: ※設定内容は自由
ユーザーの同意の表示名:Read user information
※設定は任意。且つ、設定内容も自由
ユーザーの同意の説明: ※設定は任意。且つ、設定内容も自由
追加したスコープの横にあるコピーボタンをクリックしてスコープをコピーし、後で OpenID Connect Scopes (OIDCScopes) 設定として後の 6. の工程で使用します。
このアプリケーションが、次の手順で登録する「パブリックエンドポイント」アプリケーションから呼び出されて追加のAPI権限を借用できるようになります。
2. カスタムスコープを呼び出す「パブリックエンドポイント」アプリケーション登録を作成
2 – 1. Microsoft Entra ID Portal (Microsoft Entra ID ポータル) にログインし、 サービスからMicrosoft Entra ID を選択し、サイドバーから[アプリの登録]に移動して[新規登録]より、アプリの登録を開始します。

2-1
<設定値>
表示名:Jamf Connect – OIDC Endpoint
※画像と異なりますが、読み替えてください。
サポートされているアカウントの種類:この組織のみに含まれるアカウント
リダイレクトURI:パブリッククライアント/ネイティブ (モバイルとデスクトップ)を選択。右の欄は https://127.0.0.1/jamfconnect を入力。
2 – 2. サイドバーで、[認証]へ移動して「パブリッククライアントフローを許可」を有効にします。

2-2:パブリックワークフローを許可
この設定により、リソース所有者パスワード資格情報 (ROPG) によるパスワードの検証を可能にします。
2 – 3. サイドバーで、[APIのアクセス許可]に移動します。ユーザに代わってAPIがユーザ情報へアクセスすることに対して管理者の同意を組織に付与します。
[〇〇(組織名)に管理者の同意を与えます]ボタンをクリックし、表示される確認ダイアログで[はい]ボタンをクリックします。

2−3−1:APIのアクセス許可
[アクセス許可の追加]ボタンをクリックして表示された
APIアクセス許可の要求画面にて[自分のAPI]タブを選択して、Jamf Connect – Conditional Access Policy API アプリケーションをクリックします。

2-3-2:API アクセス許可の要求
jamfconnect のチェックボックスを選択してから[アクセス許可の追加]ボタンをクリックします。

2-3-3:APアクセス許可の要求
追加したAPIについても、ユーザに代わってAPIがユーザ情報へアクセスすることに対して管理者の同意を組織に付与します。
[〇〇(組織名)に管理者の同意を与えます]ボタンをクリックし、表示される確認ダイアログで[はい]ボタンをクリックします。

2-3-4:APIのアクセス許可
2 – 4. (オプション) サイドバーで、[アプリロール]に移動して管理者(Admin)および標準(Standard)の役割を追加します。

2-4-1 アプリロールの作成
<設定値>
表示名:Admin や Standard など
許可されたメンバーの種類:ユーザー またはグループ
値:Admin や Standard など ※この値は後工程で使用します
説明: ※必須なので何らかセットしてください

2-4-2 作成されたアプリロール
2 – 5. 概要画面まで戻った後、サイドバーの[エンタープライズアプリケーション]から、作成した「パブリックエンドポイント」アプリケーションを開きユーザもしくはグループへ作成したアプリロールを割り当てます。

2-5 アプリロールの割り当て
この例のように、予め割り当て用のグループを作成しておくとよいです。
アプリロールを使用して、Mac のローカルカウントに管理者権限を付与するか否か
をコントロールできます。詳細については、ログインウィンドウの設定 を参照してください。
3. カスタムセキュリティ属性を作成し、「パブリックエンドポイント」アプリケーションに適用
カスタムセキュリテイ属性については、Microsoft のドキュメント Microsoft Entra ID のカスタム セキュリティ属性とはを参照してください。
このカスタムセキュリティ属性のタグを使用してアプリケーションを条件付きアクセスポリシーの対象外にすることができます。
<前提>
カスタムセキュリテイを作成するには、Entra ID で下記のユーザ権限が必要です
・属性割り当て管理者
・属性割り当て閲覧者
・属性定義管理者
・属性定義閲覧者
<作業準備>
概要画面まで戻った後、サイドバーの[ロールと管理者]より、対象のロールを
この作業を行うユーザに割り当ててください。

作業準備:割り当て対象のロール
3 – 1. 概要画面まで戻った後、サイドバーの[カスタムセキュリティ属性]から属性セットを追加します。

3-1:カスタムセキュリティ属性セットの追加
<設定値>
属性セット名:ApplicationsAndServices など
※スペースや特殊文字を含めない 32 文字。変更不可。
説明:Additional attributes for cloud applications, services.. など任意の値
属性の最大数:25 デフォルト値
3 – 2. 追加したカスタムセキュリティ属性セットを開き、[属性の追加]ボタンで属性を追加します。

3-2:カスタムセキュリティ属性の追加
<設定値>
属性名:caExemptFromMFA など
※スペースや特殊文字を含めない 32 文字。変更不可。
説明:Used to determine a list of applications that should be exempted from MFA requirement など任意の値
データ型:String
複数の値を割り当てることができるようにする:いいえ
定義済みの値のみを割り当てることができるようにする:はい
定義済みの値:Exempt
※値の追加で入力する。この値は後工程で手入力で使用します。
3 – 3. 作成したカスタムセキュリティ属性を 2. で作成したアプリに適用します。 概要画面まで戻った後、サイドバーの[エンタープライズアプリケーション]から[割り当ての追加]で属性セットを追加します。

3-3:カスタムセキュリティ属性の割り当て
<設定値>
属性セット:ApplicationsAndServices など
※3−1. で作成した属性セット名を選択する
属性名:caExemptFromMFA など
※3−2. で作成した属性名を選択。属性の説明やデータ型などは自動セット
割り当てられた値:Exempt など
※3−2. で指定した値を選択する。この値は後工程で手入力で使用します。
4. 「すべてのクラウドアプリ」に対して多要素認証を要求する Entra ID 条件付きアクセスポリシーを作成
概要画面まで戻った後、サイドバーの[セキュリティ]を選択し、[条件付きアクセス]>[ポリシー]の[新しいポリシー]ボタンから条件付きアクセスポリシーを作成します。
その際、ターゲットリソースの[対象]タブにて「すべてのクラウドアプリ」へポリシーを割り当てつつ、[対象外]タブで、3.で作成したカスタムセキュリティ属性のフィルタを適用して、Jamf Connect MenuBar によるパスワード同期のバックグラウンド処理が中断されることを回避します。
このフィルタは、JamfConnect Menu Bar がローカルパスワードIDPパスワードの比較をする際に使用する認証(ROPG)が対話型でないことによりMFAチャレンジが失敗することを回避するための設定です。

4-1:ターゲットリソースの設定
<設定値>
・ターゲットリソースの[対象]タブ
「すべてのクラウドアプリ」を選択
・ターゲットリソースの[対象外]タブ
フィルタの編集
属性:caExemptFromMFA など
※3−2. で作成した属性名を選択する
演算子:次の値に等しい
値:Exempt など
※3−3. で指定した値を選択する

4-2:アクセス制御の設定
アクセス制御にて、多要素認証の要求を設定します。
<設定値>
アクセス権の付与:多要素認証を要求する
《参考》
Jamf Connect ログインを始めとした「特定のアプリのみ」多要素認証したい場合は、ターゲットリソースへ「すべてのクラウドアプリ」ではなく、1. の工程で作成したアプリケーションを指定して Mac への多要素認証を強制します。
その場合は、対象外のフィルタ設定は不要です。
5. 「すべてのクラウドアプリ」に対してデバイスの準拠を要求する Entra ID 条件付きアクセスポリシーを作成
同様に、次はデバイスの準拠を要求する条件付きアクセスポリシーを作成します。
その際、ターゲットリソースの[対象]タブにて「すべてのクラウドアプリ」へポリシーを割り当てつつ、[対象外]タブで、1.で作成したプライベートエンドポイントアプリケーションを指定してデバイス準拠の対象から外します。

5-1:ターゲットリソースの設定
<設定値>
・ターゲットリソースの[対象]タブ
「すべてのクラウドアプリ」を選択
・ターゲットリソースの[対象外]タブ
除外されたクラウドアプリの選択:Jamf Connect – Conditional Access Policy API 等
※ 1.で作成したプライベートエンドポイントアプリケーションを選択

5-2:アクセス制御の設定
アクセス制御にて、準拠の要求を設定します。
<設定値>
アクセス権の付与:デバイスは準拠しているとしてマーク済みである必要があります
6. 端末へ適用する構成プロファイルを作成し、展開
Jamf Pro から展開する場合、Jamf Connect Configuration を使用して設定用のPlistファイルを作成し、Jamf Pro の構成プロファイルとして展開するとよいです。
- Jamf Connect Configuration を使用してPlistファイルを作成する
6-1. [クラウドアイデンティティプロバイダ]タブの設定

6-1-1:[クラウドアイデンティティプロバイダ]タブ

6-1-2:OpenID Connect スコープの取得
<設定値:[アイデンティティプロバイダ]タブ>
※今回の設定に必須の箇所のみご案内します。
アイデンティティプロバイダ:Microsoft Entra ID
OIDC クライアントID:2. で作成した「パブリックエンドポイント」アプリケーションのクライアントID
ROPG クライアントID:2. で作成した「パブリックエンドポイント」アプリケーションのクライアントID
テナント:Entra ID のディレクトリ (テナント) ID
OpenID Connect スコープ:1. で作成した「プライベートエンドポイント」アプリケーションのスコープ文字列に「+openid+profile+email」を加えるapi://[Random UUID String]/jamfconnect+openid+profile+email
6-2. [Login]タブの設定

6-2:[Login]タブ
<設定値:[Connect]タブ>
※今回の設定に必須の箇所はありませんが、2-4. にてアプリロールを追加した場合は、管理者の役割と属性の設定が必要です。
管理者の役割:Admin など
※2-4 で追加したアプリロールの値を正確に設定してください
管理者の属性:roles
その他の設定は、下記リンク先を参考に要件に合わせて設定してください。
・ログインウインドウの設定
6-3.[Connect]タブの設定

6-3:[Connect]タブ
<設定値:[Connect]タブ>
※今回の設定に必須の箇所のみご案内します。
クライアントID:2. で作成した「パブリックエンドポイント」アプリケーションのクライアントID
テナント:Entra IDのディレクトリ (テナント) ID
ROPG スコープ:openid+email+profile
その他の設定は、下記リンク先を参考に要件に合わせて設定してください。
・メニューバー App の設定
- Jamf Pro からプロファイルを作成して展開する
以上の設定ができたら、[Jamf Connect Login] 設定と、[Jamf Connect Menubar] 設定 をそれぞれplist形式で保存してください。
6-4. Jamf Pro へ [Jamf Connect Login] 設定の plistファイルをアップロードして構成プロファイルを作成し、展開する。

6-4:Jamf Connect Login 設定用 構成プロファイル
<設定値:[Jamf Connect Login]設定>
環境設定ドメイン:com.jamf.connect.login
ファイルをアップロード:[Jamf Connect Login]設定用のplistファイルをアップロードSCOPE等、他の設定は適宜実施してください。
6-5. Jamf Pro へ[Jamf Connect Menubar] 設定の plistファイルをアップロードして構成プロファイルを作成し、展開する。

6-5:Jamf Connect Menubar 設定用 構成プロファイル
<設定値:[Jamf Connect Menubar]設定>
環境設定ドメイン:com.jamf.connect
ファイルをアップロード:[Jamf Connect Menubar]設定用のplistファイルをアップロード SCOPE等、他の設定は適宜実施してください。
動作確認
以上の設定がうまく設定できていると、以下のような動作になります。
- Jamf Connect MenuBar によるパスワード同期のバックグラウンド処理(ROPG)には、多要素認証の適用が回避され、多要素認証に応答ができずに認証が中断されるログが出力されなくなります。→ 確認1
- Jamf Connect Login による Mac へのログイン(OIDC)には、多要素認証が要求され、デバイスの準拠のブロックが回避されます。→ 確認2

サインインログ
確認1:バックグラウンド処理のログ確認

バックグラウンド処理のログ
想定通りの結果が得られ、バックグラウンド処理の中断ログは出力されなくなりました。
確認2:Mac ログイン時のログ確認

Mac ログイン時のログ
想定通りの結果が得られ、ログイン時に多要素認証が要求され、デバイス準拠要求のブロックも回避されていました。
ただ、今回の検証ケースに関係なく以前より出力されているものですが、ログイン時に多要素認証を応答できずに中断されるログが必ず1件出力されてしまいます。
この点は解決できませんでした。
恐らく、今回の設定の範囲とは関係ない問題であると考えられます。
実は・・・
ここまでの設定でも回避できない問題があります。
「すべてのクラウドアプリ」に対してデバイスの準拠を求める場合、Jamf Connect Menubar からのパスワード変更ができません。
ただ、回避策はあります。
https://travellingtechguy.blog/jamf-connect-and-ms-azure-conditional-access-password-change-url/#workaround-opening-a-full-browser-via-jamf-connect
(今回は長くなってしまったので、これ以上はやめておきます。😅)
簡単に言うと、メニューバーのからの Entra ID のパスワード変更画面をフルブラウザのパスワード変更画面にするという対応です。
あとがき
既にこの対応を実施されている方もいらっしゃるかもしれませんが。。
仕組みを理解するのが難しく、設定自体も煩雑なため、自分自身の理解・メモという意味も込めてまとめてみました。
Microsoft Entra ID 条件付きアクセスを使用している環境で、Jamf Connect を使用しているケースは多いので、導入時のお困りごとが少しでも減るよう、気合を入れて書きましたので、対応が必要な方は参考にしていただけますと幸いです。
それにしても、ずいぶん長くなってしまいました。
最後まで読んでいただき、ありがとうございました。
以上、 エンジニアの中峯が担当いたしました。