【Jamf Connect】 Microsoft Entra ID 条件付きアクセスの意図しないブロックを回避する 〜その2:設定編〜
はじめに 〜その2:設定編〜 の位置づけ
前回の 〜その1:概要編〜 に続き、下記のようなJamf Connect 利用時の条件付きアクセスによる意図しないブロック事象に対する対応の設定手順についてまとめます。
対応内容の詳細については 〜その1:概要編〜 をご覧ください。
<参考資料>
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 - 2. サイドバーで、[APIのアクセス許可]に移動します。ユーザに代わってAPIがユーザ情報へアクセスすることに対して管理者の同意を組織に付与します。
[〇〇(組織名)に管理者の同意を与えます]ボタンをクリックし、表示される確認ダイアログで[はい]ボタンをクリックします。
1 - 3. サイドバーで、[APIの公開]に移動して、後に作成する「パブリックエンドポイント」アプリケーション登録からの呼び出しで使用するアプリケーションID URIとスコープを定義します。
アプリケーションID のURI にて[追加]のリンクをクリックし、表示されたデフォルトの値のまま[保存]ボタンをクリックします。
[Scopeの追加]ボタンをクリックしてスコープを追加します。
追加したスコープの横にあるコピーボタンをクリックしてスコープをコピーし、後で OpenID Connect Scopes (OIDCScopes) 設定として後の 6. の工程で使用します。
このアプリケーションが、次の手順で登録する「パブリックエンドポイント」アプリケーションから呼び出されて追加の API 権限を借用できるようになります。
2. カスタムスコープを呼び出す「パブリックエンドポイント」アプリケーション登録を作成
2 - 1. Microsoft Entra ID Portal (Microsoft Entra ID ポータル) にログインし、 サービスからMicrosoft Entra IDを選択し、サイドバーから[アプリの登録]に移動して[新規登録]より、アプリの登録を開始します。
2 - 2. サイドバーで、[認証]へ移動して「パブリッククライアントフローを許可」を有効にします。
この設定により、リソース所有者パスワード資格情報 (ROPG) によるパスワードの検証を可能にします。
2 - 3. サイドバーで、[APIのアクセス許可]に移動します。ユーザに代わってAPIがユーザ情報へアクセスすることに対して管理者の同意を組織に付与します。
[〇〇(組織名)に管理者の同意を与えます]ボタンをクリックし、表示される確認ダイアログで[はい]ボタンをクリックします。
[アクセス許可の追加]ボタンをクリックして表示された
APIアクセス許可の要求画面にて[自分のAPI]タブを選択して、Jamf Connect - Conditional Access Policy API アプリケーションをクリックします。
jamfconnect のチェックボックスを選択してから[アクセス許可の追加]ボタンをクリックします。
追加したAPIについても、ユーザに代わってAPIがユーザ情報へアクセスすることに対して管理者の同意を組織に付与します。
[〇〇(組織名)に管理者の同意を与えます]ボタンをクリックし、表示される確認ダイアログで[はい]ボタンをクリックします。
2 - 4. (オプション) サイドバーで、[アプリロール]に移動して管理者(Admin)および標準(Standard)の役割を追加します。
2 - 5. 概要画面まで戻った後、サイドバーの[エンタープライズアプリケーション]から、作成した「パブリックエンドポイント」アプリケーションを開きユーザもしくはグループへ作成したアプリロールを割り当てます。
この例のように、予め割り当て用のグループを作成しておくとよいです。
アプリロールを使用して、Macのローカルカウントに管理者権限を付与するか否か
をコントロールできます。詳細については、ログインウィンドウの設定 を参照してください。
3. カスタムセキュリティ属性を作成し、「パブリックエンドポイント」アプリケーションに適用
カスタムセキュリテイ属性については、Microsoft のドキュメント Microsoft Entra ID のカスタム セキュリティ属性とはを参照してください。
このカスタムセキュリティ属性のタグを使用してアプリケーションを条件付きアクセスポリシーの対象外にすることができます。
<前提>
カスタムセキュリテイを作成するには、Entra ID で下記のユーザ権限が必要です
・属性割り当て管理者
・属性割り当て閲覧者
・属性定義管理者
・属性定義閲覧者
<作業準備>
概要画面まで戻った後、サイドバーの[ロールと管理者]より、対象のロールを
この作業を行うユーザに割り当ててください。
3 - 1. 概要画面まで戻った後、サイドバーの[カスタムセキュリティ属性]から属性セットを追加します。
3 - 2. 追加したカスタムセキュリティ属性セットを開き、[属性の追加]ボタンで属性を追加します。
3 - 3. 作成したカスタムセキュリティ属性を 2. で作成したアプリに適用します。 概要画面まで戻った後、サイドバーの[エンタープライズアプリケーション]から[割り当ての追加]で属性セットを追加します。
4. 「すべてのクラウドアプリ」に対して多要素認証を要求する Entra ID 条件付きアクセスポリシーを作成
概要画面まで戻った後、サイドバーの[セキュリティ]を選択し、[条件付きアクセス]>[ポリシー]の[新しいポリシー]ボタンから条件付きアクセスポリシーを作成します。
その際、ターゲットリソースの[対象]タブにて「すべてのクラウドアプリ」へポリシーを割り当てつつ、[対象外]タブで、3.で作成したカスタムセキュリティ属性のフィルタを適用して、Jamf Connect MenuBarによるパスワード同期のバックグラウンド処理が中断されることを回避します。
このフィルタは、JamfConnect Menu Bar がローカルパスワードIDPパスワードの比較をする際に使用する認証(ROPG)が対話型でないことによりMFAチャレンジが失敗することを回避するための設定です。
アクセス制御にて、多要素認証の要求を設定します。
《参考》
Jamf Connectログインを始めとした「特定のアプリのみ」多要素認証したい場合は、ターゲットリソースへ「すべてのクラウドアプリ」ではなく、1. の工程で作成したアプリケーションを指定してMacへの多要素認証を強制します。
その場合は、対象外のフィルタ設定は不要です。
5. 「すべてのクラウドアプリ」に対してデバイスの準拠を要求する Entra ID 条件付きアクセスポリシーを作成
同様に、次はデバイスの準拠を要求する条件付きアクセスポリシーを作成します。
その際、ターゲットリソースの[対象]タブにて「すべてのクラウドアプリ」へポリシーを割り当てつつ、[対象外]タブで、1.で作成したプライベートエンドポイントアプリケーションを指定してデバイス準拠の対象から外します。
アクセス制御にて、準拠の要求を設定します。
6. 端末へ適用する構成プロファイルを作成し、展開
Jamf Proから展開する場合、Jamf Connect Configurationを使用して設定用のPlistファイルを作成し、Jamf Proの構成プロファイルとして展開するとよいです。
Jamf Connect Configurationを使用してPlistファイルを作成する
6-1. [クラウドアイデンティティプロバイダ]タブの設定
6-2. [Login]タブの設定
その他の設定は、下記リンク先を参考に要件に合わせて設定してください。
・ログインウインドウの設定
6-3.[Connect]タブの設定
その他の設定は、下記リンク先を参考に要件に合わせて設定してください。
・メニューバー App の設定
Jamf Proからプロファイルを作成して展開する
以上の設定ができたら、[Jamf Connect Login] 設定と、[Jamf Connect Menubar] 設定 をそれぞれplist形式で保存してください。
6-4. Jamf Pro へ [Jamf Connect Login] 設定の plistファイルをアップロードして構成プロファイルを作成し、展開する。
6-5. Jamf Pro へ[Jamf Connect Menubar] 設定の plistファイルをアップロードして構成プロファイルを作成し、展開する。
動作確認
以上の設定がうまく設定できていると、以下のような動作になります。
Jamf Connect MenuBarによるパスワード同期のバックグラウンド処理(ROPG)には、多要素認証の適用が回避され、多要素認証に応答ができずに認証が中断されるログが出力されなくなります。→ 確認1
Jamf Connect Login によるMacへのログイン(OIDC)には、多要素認証が要求され、デバイスの準拠のブロックが回避されます。→ 確認2
確認1:バックグラウンド処理のログ確認
想定通りの結果が得られ、バックグラウンド処理の中断ログは出力されなくなりました。
確認2: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 を使用しているケースは多いので、導入時のお困りごとが少しでも減るよう、気合を入れて書きましたので、対応が必要な方は参考にしていただけますと幸いです。
それにしても、ずいぶん長くなってしまいました。
最後まで読んでいただき、ありがとうございました。
以上、 エンジニアの中峯が担当いたしました。