ヘッダー画像

Active Directory Exchangeスキーマ拡張のやり方と注意点

はじめに

Microsoft365を利用するうえでアカウント情報を一元管理したいというご要望はよくあります。Active Directory のユーザやグループにはいろいろな属性値があり、その属性値の情報をMicrosoft365のサービスで利用することがあります。ExchangeはExchange専用で利用する属性値(オンプレミス時代の属性を引きづっている)があり、Active Directory 標準の属性では足らないものをスキーマ拡張することにより利用できるようにする方法をご紹介します。今回利用するExchangeスキーマは2016を前提としています。

スキーマ拡張の必要性

そもそもなんでスキーマ拡張が必要になるのかですが、Active Directory をIDの源泉とした場合でAzure AD Connectで同期したユーザはMicrosoft365の管理画面上で属性値の変更ができない仕様になっているため一部の属性値の変更を行うにあたりスキーマ拡張が必要になってしまいます。代表的な属性値がアドレス帳を非表示にするための属性値「HiddenFromAddressListsEnabled」の値を変更したい場合です。そのほかにも拡張属性である「extensionattribute」の利用が想定されます。

スキーマ拡張の注意事項

  • ExchangeスキーマはオンプレミスExchageが導入されている環境において利用することを前提にしてありますので、オンプレミスExchageサーバを未導入の状態でスキーマ拡張を実施した場合、一部メーカーサポート範囲外とされる場合がござます。
  • スキーマ拡張を実施する前には必ずActive Directoryサーバのシステムフルバックアップを取るようにしてください。
  • スキーマ拡張を実行する際は、必ずレプリケーションを停止した状態で実施をしてください。Active Directory サーバは基本的に冗長化されていると思いますが、レプリケーションを止めておかないと導入に不具合があった場合に全部のActive Directory サーバをリストアすることになってしまいます。

スキーマ拡張前に現在の状態を保存

どんな作業でも同じことですが、今の状態をエクスポートしておくことでトラブルが発生した時でも対応が容易になったりしますのでめんどくさがらずにやりましょう。

  1. ADSIエディタを起動します
  2. ADSIエディタのメニューから[操作]-[接続]をクリックします
  3. [既知の名前付けコンテキストを選択する]を選択して、プルダウンから[スキーマ]を選択して[OK]ボタンを押下します
  4. スキーマ一覧に「CN=ms-Exch-Schema-Version-Pt」が存在しないことを確認します。存在している場合はプロパティを開き[属性エディタ]タブで[rangeUpper]の値が[15334]未満※1であることを確認します
  5. [スキーマ]-[CN=Schema,CN=Configuration…]を選択して右クリックから[一覧のエクスポート]をクリックします
  6. 保存先とファイル名を指定してスキーマ状態確認は完了です。

※1 環境によって表示されるバージョン情報に差があります。

ADSIエディタの接続

レプリケーション停止

万が一不具合が出た場合でも被害を最小限に抑えるためレプリケーションを停止します。以下のコマンドを実行してレプリケーションを停止します。UACが有効な環境では明示的にコマンドプロンプトを管理者として実行していただく必要があります。

#IN/OUT両方を停止します
repadmin /options [Acrtive Directoryサーバ名] +DISABLE_OUTBOUND_REPL
repadmin /options [Acrtive Directoryサーバ名] +DISABLE_INBOUND_REPL

#停止の確認
repadmin /showrepl

停止確認の結果下記のメッセージが出ていればレプリケーションは停止されている状態です。

レプリケーション停止 repadmin showrepl

Exchage2016のCUをダウンロード

スキーマ拡張にはExchangeのCUインストーラーが必要になります。都度最新のものを使ってください。記事記載時点ではCU22が最新ですのでこの記事ではCU22を利用して確認していきます。

iso形式のファイルでダウンロードされますので、スキーマ拡張するActive Directory サーバ上でファイルをダブルクリックしてマウントします。

スキーマ拡張の実行

本題のスキーマ拡張作業を実施します。 UACが有効な環境では明示的にPowershellを管理者として実行していただく必要があります。

#マウントされたドライブパスへ移動
E:

#スキーマ拡張を実行
.\setup.exe /PrepareSchema /IAcceptExchangeServerLicenseTerms

実行結果が以下のようになっていれば作業は完了です。

スキーマ拡張 実行結果

インストール後の確認

事前確認の時と同様にADSIエディタを使ってスキーマの状態を確認します。

  1. ADSIエディタを起動します
  2. ADSIエディタのメニューから[操作]-[接続]をクリックします
  3. [既知の名前付けコンテキストを選択する]を選択して、プルダウンから[スキーマ]を選択して[OK]ボタンを押下します
  4. スキーマ一覧に「CN=ms-Exch-Schema-Version-Pt」が存在しないことを確認します。存在している場合はプロパティを開き[属性エディタ]タブで[rangeUpper]の値が[15334]※1であることを確認します

※1 インストールしたバージョンによって値が変わります。

合わせてイベントログでレプリケーション以外のエラーが出力されていないことを確認しましょう。「Application」と「システム」の両方をチェックします。ソース「MSExcahnge Common」と「MSExchange Access」はエラーが出ていても無視して問題有りません。

レプリケーションを再開

停止した時と同様にコマンドプロンプトで以下のコマンドを実行します。 UACが有効な環境では明示的にコマンドプロンプトを管理者として実行していただく必要があります。

#IN/OUT両方を再開します
repadmin /options [Acrtive Directoryサーバ名] -DISABLE_OUTBOUND_REPL
repadmin /options [Acrtive Directoryサーバ名] -DISABLE_INBOUND_REPL

#再開の確認
repadmin /showrepl

レプリケーションの再開までに15分ほど時間がかかる場合があります。エラーが発生して再開できない場合は以下のコマンドを実行してみてください。

#エラーが出て失敗する場合
repadmin /syncall /PeA
repadmin /Syncall /eA

#IN/OUT両方を再開します
repadmin /options [Acrtive Directoryサーバ名] -DISABLE_OUTBOUND_REPL
repadmin /options [Acrtive Directoryサーバ名] -DISABLE_INBOUND_REPL

#再開の確認
repadmin /showrepl

確認結果のIN/OUTに以下のメッセージが表示されていれば作業は完了です。

repadmin 実行結果

まとめ

今回の記事では、Exchangeスキーマ拡張の方法について記載しました。冒頭申し上げました通り、オンプレExchangeがあることを前提としたスキーマになりますので、一部メーカーサポート範囲外の構成になってしまうリスクがあることをご認識の上でご対応いただけますようお願いいたします。

本記事が皆様の初期導入、運用管理の一助となりましたら幸いです。