Microsoft 365を他社IDaaSで利用していた場合のユーザ移行について

Microsoft 365(Azure AD)を他社のIDaaSと認証連携している場合、IIJ IDとMicrosoft 365の認証連携をするにはユーザの移行を実施する必要があります。
本ページでは、その場合のユーザ移行の手順を説明します。

移行の前提条件

本手順はActive DirectoryユーザのmS-DS-ConsistencyGuid属性に値を書き込み、その属性値をIIJ IDユーザのアプリケーション連携IDに同期させます。
既にmS-DS-ConsistencyGuid属性を別の目的で利用している場合には利用できません。

移行の流れ

本手順にある移行スクリプトにより、Azure ADのimmutableId属性値をActive DirectoryのmS-DS-ConsistencyGuid属性に書き込みます。

Azure AD
Active Directory
immutableId⇒書き込み⇒mS-DS-ConsistencyGuid

次にDirectory Syncの設定を変更し、Active DirectoryユーザのmS-DS-ConsistencyGuid属性値をIIJ IDのdownstreamId(アプリケーション連携ID)に同期します。

Active Directory
IIJ ID
mS-DS-ConsistencyGuid⇒同期⇒downstreamId
移行手順
  1. Windows PowerShellをセットアップします。
    セットアップ方法については、「Windows PowerShellをセットアップする」をご覧ください。
  2. 移行スクリプトを作成します。
    以下の内容の移行スクリプトをファイル名「migrate.ps1」で作成します。

    Import-Module ActiveDirectory
    Install-Module -Name Microsoft.Graph
    
    Write-Host 'Start importing immutableId'
    
    Connect-MgGraph -Scopes 'User.Read.All' -ContextScope Process
    
    $azureADUsers = Get-MgUser -All -Property @("UserPrincipalName", "OnPremisesImmutableId")
    
    $SearchBase = Read-Host -Prompt 'Input your BaseDN'
    $adUsers = Get-ADUser -Filter * -Properties DistinguishedName,UserPrincipalName,mS-DS-ConsistencyGuid -SearchBase $SearchBase
    
    ForEach ($azureADUser in $azureADUsers) {
      ForEach ($adUser in $adUsers) {
        If ($azureADUser.UserPrincipalName -eq $adUser.UserPrincipalName) {
          Write-Output("Import the immutableId ({0}) into {1}" -f $azureADUser.OnPremisesImmutableId, $azureADUser.UserPrincipalName)
    
          Set-ADUser -Identity $adUser.DistinguishedName -replace @{'mS-DS-ConsistencyGuid' = $azureADUser.OnPremisesImmutableId}
        }
      }
    }
    
    Write-Host 'End importing immutableId'
    【参考】

    移行スクリプトの処理内容は以下の通りです。

    1. Azure ADの全ユーザを取得
    2. Azure ADユーザとUserPrincipalName属性が一致するActive Directoryユーザを検索
    3. UserPrincipalName属性が一致するユーザがActive Directoryに存在しない場合、何もせずに処理を終了
    4. UserPrincipalName属性が一致するユーザがActive Directoryに存在する場合、Azure ADユーザのimmutableId属性値をActive DirectoryユーザのmS-DS-ConsistencyGuid属性に設定

    【参考】

    最初にSet-ADUserコマンドの行をコメントアウトしてスクリプト実行することを推奨します。
    Set-ADUserコマンドをコメントアウトすることで、事前にActive DirectoryユーザのmS-DS-ConsistencyGuid属性に設定される値を確認できます。

  3. Windows端末上でPowerShellを起動します。

  4. PowerShellスクリプトを以下のコマンドを例に実行します。

    実行例)

    PS> powershell -ExecutionPolicy bypass -File '.\migrate.ps1'
  5. Azure ADへ接続するために認証画面が表示されるので、認証を行います。

    【参考】

    実行時に以下の画面が表示される場合があります。
    この画面が表示された場合は「組織の代理として同意する」にチェックを入れずに「承認」をクリックしてください。

  6. Active Directoryユーザを検索するためのパス(BaseDN)を入力します。
    入力例)

    OU=Users,DC=EXAMPLE,DC=COM
  7. Directory Syncをセットアップします。 セットアップの際に、config.ymlにてユーザのアプリケーション連携ID(downstreamId)及びbase64_disabledオプションを以下の様に設定します。
    config.ymlの例)

    iid:
      scim:
        attribute:
          user:
            ad_bind:
              downstreamId: mS-DS-ConsistencyGuid
          base64_disabled:
            - mS-DS-ConsistencyGuid     # ※1

    ※1 Base64エンコードによる変換を無効にする。詳細については「config.yml」をご覧ください。