オンプレミスXenMobileのActive Directoryとのやり取り
Siddartha Vupala
この記事では、XenMobileサーバーとActive Directoryのやり取りについて説明します。XenMobileサーバーとActive Directoryのやり取りは、インラインとバックグラウンドの両方で行われます。以下のセクションでは、Active Directoryとのやり取りを伴うインライン操作およびバックグラウンド操作の詳細について説明します。
......
この記事ではやり取りの概要のみを示し、細かい詳細については扱いません。XenMobileコンソールでActive DirectoryとLDAPを設定する方法について詳しくは、「ドメインまたはドメイン+セキュリティトークン認証」を参照してください。
インラインでのやり取り
XenMobileサーバーは、管理者が構成するLDAP設定を使用してActive Directoryとの通信を行います。この設定により、ユーザーとグループに関する情報が取得されます。XenMobileサーバーとActive Directory間のやり取りが生じる操作を次に示します。
LDAPActive Directory自体を構成するため、Active Directoryとのやり取りが行われます。XenMobileサーバーはActive Directoryで構成情報の認証を行うことで、構成情報の検証を試みます。この認証は、インターネットプロトコル、ポート、および指定のサービスアカウントの資格情報を使用して行われます。バインドが成功すれば、接続は適切に構成されています。
グループベースの対話。
役割ベースのアクセス制御(RBAC)時およびデリバリーグループの定義の作成時における1つ以上のグループの検索。XenMobileサーバーの管理者が、XenMobileコンソールで検索テキストを入力します。XenMobileサーバーにより、指定した文字列の一部が含まれるすべてのグループについて選択したドメインが検索されます。次に、XenMobileサーバーは検索で見つかったグループのobjectGUID属性、sAMAccountName属性、識別名属性を取得します。
......
この情報は、XenMobileサーバーのデータベースには格納されません。
RBACおよび展開グループの定義の追加または更新。XenMobileサーバーの管理者が上記の検索結果に基づいて目的のActive Directoryグループを選択し、展開グループの定義に追加します。XenMobileサーバーにより、Active Directory内で指定したグループが一度に1つずつ検索されます。XenMobileサーバーはobjectGUID属性を検索し、メンバーシップ情報を含む選択した属性を取得します。グループのメンバーシップ情報により、取得したグループとXenMobileサーバーデータベースの既存のユーザーまたはグループ間のメンバーシップが特定されます。グループのメンバーシップを変更すると、影響を受けるユーザーメンバーに関わるRBACおよび展開グループが確認され、ユーザーの権利割り当てが行われます。
......
展開グループの定義を変更すると、影響を受けるユーザーのアプリまたはポリシーの使用権が変更される場合があります。
ワンタイムPIN(OTP)招待状。XenMobileサーバー管理者が、XenMobileサーバーデータベースに存在するActive Directoryグループの一覧からグループを選択します。このグループのすべてのユーザーが、直接的および間接的にActive Directoryから取得されます。前の手順で特定されたユーザーに対して、OTP招待状が送られます。
......
上記3つのやり取りは、XenMobileサーバーの構成変更によりグループベースのやり取りが開始されることを示しています。構成に変更がない場合、これらのやり取りではActive Directoryとの通信は行われません。また、定期的にバックグラウンドジョブでグループ側の変更を取得する必要もありません。
ユーザーベースの対話。
ユーザー認証。ユーザー認証のワークフローでは、Active Directoryと2種類のやり取りが行われます。
- 指定した資格情報によるユーザーの認証
- XenMobileサーバーデータベースへの選択したユーザー属性(objectGUID、識別名、sAMAccountName、グループのダイレクトメンバーシップなど)の追加または更新。グループのメンバーシップを変更すると、アプリ、ポリシー、アクセス資格の再評価が行われます。
ユーザーは、デバイスとXenMobileサーバーコンソールのどちらからでも認証を行うことができます。どちらの場合でも、Active Directoryとのやり取りの動作は同じです。
App Storeへのアクセスおよび更新。ストアを更新すると、ダイレクトグループメンバーシップを含むユーザー属性が更新されます。この処理により、ユーザー資格の再評価が可能になります。
デバイスのチェックイン。管理者は、定期的にXenMobileコンソールでデバイスのチェックインを構成します。デバイスのチェックインが行われるたびに、ダイレクトグループメンバーシップを含む対応するユーザー属性が更新されます。こうしたチェックインにより、ユーザー資格の再評価が可能になります。
グループ単位でのOTPによる招待。XenMobileサーバー管理者が、XenMobileサーバーデータベースに存在するActive Directoryグループの一覧からグループを選択します。ユーザーメンバーが直接的および間接的(入れ子構造の場合)にActive Directoryから取得され、XenMobileサーバーデータベースに保存されます。前の手順で特定されたユーザーメンバーに対して、OTP招待状が送られます。
ユーザー単位でのOTPによる招待。管理者が、XenMobileコンソールで検索テキストを入力します。XenMobileサーバーによりActive Directoryに対する紹介が行われ、入力したテキストに一致するユーザーレコードが返されます。次に、管理者がOTP招待状の送信先となるユーザーを選択します。ユーザーへの招待状の送信前に、XenMobileサーバーがActive Directoryからユーザーの詳細を取得してデータベースの該当する情報を更新します。
バックグラウンドでのやり取り
Active Directoryとのインライン通信で1つわかることは、XenMobileサーバーの構成が変更されるとグループベースのやり取りが行われるということです。構成に変更がない場合、グループについてActive Directoryとの通信は行われません。
こうしたやり取りではバックグラウンドジョブにより、Active Directoryと定期的に同期して変更内容を対象のグループに反映する必要があります。
Active Directoryをのやり取りを行うバックグラウンドジョブを次に示します。
グループ同期ジョブ。このジョブの目的は、対象のグループについて一度に1グループずつActive Directoryに照会し、識別名属性またはsAMAccountName属性の変更がないか確認することです。このActive Directoryに対する検索クエリでは、対象グループのobjectGUIDを使用して識別名属性とsAMAccountName属性の現在の値を取得します。対象グループの識別名またはsAMAccountNameの値の変更結果で、データベースが更新されます。
......
このジョブでは、ユーザーのグループメンバーシップ情報は更新されません。
ネストされたグループ同期ジョブ。このジョブでは、対象グループの入れ子構造の変更内容が反映されます。XenMobileサーバーでは、対象グループの直接メンバーと間接メンバーの両方が資格を得ることができます。ユーザーのダイレクトメンバーシップは、ユーザーベースのインラインでのやり取りの際に更新されます。このジョブはバックグラウンドで実行され、間接メンバーシップを追跡します。間接メンバーシップとは、対象グループのメンバーであるグループにユーザーが属している状態を指します。
このジョブでは、XenMobileサーバーデータベースからActive Directoryグループのリストを取得します。Active Directoryのグループは、展開グループかRBAC定義のどちらかに含まれます。このリストの各グループについて、XenMobileサーバーがグループのメンバーを取得します。グループのメンバーは、ユーザーとグループの両方を表す識別名をリスト化したものです。XenMobileサーバーはActive Directoryに対して別のクエリを実行し、対象グループのユーザーメンバーのみを取得します。これら2つのリストの差を取ると、対象グループのグループメンバーのみが残ります。メンバーグループへの変更結果がデータベースに反映されます。階層内のすべてのグループについて、同じ手順が繰り返されます。
入れ子構造を変更すると、影響を受けるユーザーに対して資格の変更処理が行われます。
無効なユーザーのチェック。このジョブは、XenMobile管理者が無効なユーザーをチェックする操作を作成した場合のみ実行されます。このジョブはグループ同期ジョブの範囲内で実行されます。このジョブでは、Active Directoryに対してクエリを実行し、対象ユーザーの無効化状態を一度に1ユーザーずつ確認します。
よくある質問
デフォルトでは、バックグラウンドジョブの実行頻度はどのようになっていますか?
- グループ同期ジョブはローカル時間の02:00から5時間ごとに実行されます。
- 入れ子グループの同期ジョブは1日に1回、ローカル時間の深夜に実行されます。
なぜグループ同期ジョブが必要なのですか?
- Active DirectoryのユーザーレコードのmemberOf属性から、ユーザーが直接メンバーとなっているグループのリストが得られます。組織単位間でグループが移動された場合、memberOf属性には識別名の最新の値が反映されます。また、XenMobileサーバーデータベースには最後に更新された値が保持されます。グループの識別名が一致しない場合、ユーザーは展開グループにアクセスできなくなります。同時に、展開グループに関連付けられているアプリやポリシーにもアクセスできなくなります。
- バックグラウンドジョブにより、XenMobileサーバーデータベースのグループの識別名属性が最新の状態に保たれるため、ユーザーは使用権へのアクセスを確保できます。
- Active Directoryでのグループが変更される頻度は高くないと考えられるため、同期ジョブは5時間間隔でスケジュールされています。
グループ同期ジョブは無効化できますか?
- 組織単位間で対象グループが変更されないことがわかっている場合は、ジョブを無効化できます。
なぜ入れ子グループによる処理中のバックグラウンドジョブが必要なのですか?
- Active Directory内のグループの入れ子構造の変更は、毎日発生するわけではありません。対象グループの入れ子構造を変更すると、影響を受けるユーザーの使用権が変更されます。階層にグループを追加すると、そのメンバーユーザーに各役割の使用権が付与されます。グループが入れ子構造から外されると、そのグループのメンバーユーザーはこうした役割ベースの使用権にアクセスできなくなる場合があります。
- 入れ子構造の変更内容は、ユーザーによる更新時には取得されません。入れ子構造の変更をオンデマンドで行うことはできないため、変更内容はバックグラウンドジョブにより取得されます。
- 入れ子構造の変更はあまり行われないものと考えられるため、このバックグラウンドジョブは1日に1回実行され、変更の有無を確認します。
入れ子グループによる処理中のジョブは無効化できますか?
- 該当するグループに入れ子構造の変更が発生していないことがわかっている場合は、ジョブを無効化できます。