ディレクトリ拡張機能の属性の同期
みなさんこんにちは、宮崎です。
今回は、Azure AD Connect の、「ディレクトリ拡張機能の属性の同期」という機能についてご紹介したいと思います。
ディレクトリ拡張機能とは?
ディレクトリ拡張を一言でいうと、「Azure AD が既定で持つ属性以外に、独自で定義した属性を作成 (拡張) する」ことです。
Azure AD に存在するユーザー・グループなどの "オブジェクト" には必ず属性があり、例えば、表示名は DisplayName という属性に該当します。
Azure AD は、これらの既定の属性を拡張するカスタム機能を提供しており、これを一般的には "スキーマ拡張" と呼んでいます。
オンプレミスの Active Directory にも同じようなことができましたね。その代表的なものが Exchange Server のインストールによるスキーマ拡張でした。
Azure AD にも同様の考え方があり、特定のアプリケーションや、サービスを利用するにあたって、既定の属性では賄えない場合に、スキーマを拡張することで、カスタム属性として使用することができます。
どういったケースで必要なのか?
では、具体的にどういったケースでディレクトリ拡張機能を使用するのか?
Azure AD と連携するアプリケーションとの「プロビジョニング」、「SAML によるシングル サインオン」や、「動的グループ メンバーシップ」がなどがあります。
このような機能をいざ、設計・構成するときに「空き属性がなーい」といったシナリオはよくあると思います。
下図は動的グループ メンバーシップのルールを構成する画面になります。ディレクトリ拡張機能を使用することで、拡張した属性 (extension_<AppId>_<AttributeName>) をプロパティに指定することができます。
ディレクトリ拡張機能の利用には、Azure AD Connect をお使いの場合、構成ウィザードの「ディレクトリ拡張機能の属性の同期」メニューから簡単に構成できます。
一方、クラウド ユーザーであれば Graph API (または Azure Active Directory PowerShell Module v2) からディレクトリ拡張 および 属性値の設定をする必要があります。
構成するシナリオ
それでは、ディレクトリ拡張機能の属性の同期 を構成していきます。構成といっても Azure AD Conenct の構成ウィザードにあります「オプション機能」から簡単に設定可能です。
今回は「Slack にプロビジョニングするユーザーの表示名のソース属性を拡張属性に設定する」というシナリオを用意しました。
なお、msDS-cloudExtensionAttribute1 という属性は、既定では同期対象外の属性です。
オンプレミス での準備
まず、Active Directory (AD) の下準備からしていきます。
AD のユーザー オブジェクトの msDS-cloudExtensionAttribute1 属性を設定します。
次に、Azure AD Connect の構成ウィザードを起動します。
[同期オプションのカスタマイズ] - [ディレクトリ拡張機能の属性の同期] にチェックを入れます。
[使用可能な属性] 一覧にある "msDS-cloudExtensionAttribute1" を選択、構成します。なお、この変更には同期ルールの追加などが含まれるため、構成後の同期は完全同期が実行されますのでご注意を。
構成後の同期ログからは、Azure AD 方向の Outboud にextension_<AppId>_<AttributeName>が同期されていることが確認できます。
また、Synchronization Rules Editor からは、2 つの同期ルールが新規作成されていることが確認できます。
■ in from AD - User DirectoryExtension
■ Out to AAD - User DirectoryExtension
同期された値を確認する
同期された拡張属性を確認するには Graph API を叩く必要があります。
簡単に確認する方法として、Graph API をエンドポイントとする Azure Active Directory PowerShell Module を使用するか、Graph Explorer を使用する方法です。
PowerShell で確認するには、Get-AzureADUserExtension コマンドを実行します。
PS C:\Users\admin> Get-AzureADUserExtension -ObjectId <ユーザー サインイン名 (UPN)>
Key Value
--- -----
odata.metadata https://graph.windows.net/68ce8004-077b-4548-8004-da63aeddf0db/$metadata#directoryObjects/@Element
odata.type Microsoft.DirectoryServices.User
createdDateTime 3/21/2020 2:22:44 AM
employeeId
onPremisesDistinguishedName CN=TestUser01,OU=User,OU=contoso,DC=contoso,DC=com
userIdentities []
userState
userStateChangedOn
extension_2ba463354718435ba64d4e77a2323e4e_msDS_cloudExtensionAttribute1 Contoso 太郎
Microsoft Graph Explorer からも確認できます。
補足しておきますと、Azure AD Connect によって拡張された同期属性は以下の規則に従って作成されます。
extension_<アプリケーション ID>_<属性名>
Azure AD Connect から拡張する場合、"Tenant Schema Extension App" のアプリケーション ID が入ります。
Slack にプロビジョニング
Azure AD と Slack のプロビジョニング構成については、手順が公開されているので参考に。
プロビジョニングは、そのアプリケーションに対して有効化することで、定義済みの既定のマッピングが構成されます。これをカスタマイズすることも可能で、ソース属性には拡張属性が利用できます。
手順は特に難しくなく、以下のリンクを参考に操作してみてください。
おわりに
いかがでしたでしょうか。今回ご紹介したプロビジョニング以外の機能でも、空き属性が足りない問題はけっこう遭遇するものだと思いますので、そういった場合には是非ご利用ください。
それでは、よい Azure AD ライフを。