Microsoft Cloud Service/Identity

Microsoft Entra ID 기존 사용자 동기화 (하드 매칭)

o959 2024. 10. 17. 15:59
반응형

Microsoft Entra ID 기존 사용자 동기화 (하드 매칭)

 

지난 포스팅에서 소프트 매칭 테스트를 진행했었고

이번 포스팅에선 하드 매칭을 위해 기존에 사용하던 AD 서버를 강제로 삭제시키고 테스트를 진행해보려고 해요

 

하드 매칭을 해야하는 경우는 주로 AD 서버를 변경해야 한다거나 AD 서버에 장애가 발생하여 서버 복구를 못한다거나

동기화되고 있는 AD 개체를 실수로 삭제한 경우 등등 장애 상황에 주로 작업을 하게 됩니다

 

 

 

 

 

 

하드 매칭을 하기 위한 준비

 

 

소프트 매칭을 진행했던.. AD 서버를 강제 종료하고 가상머신을 삭제해버렸습니다.

일부러 장애 상태를 내어 하드매칭으로 복구하기 위한 사전작업으로 봐주시면 되겠습니다.

 

그리고 신규 AD를 설치해줬어요 

 

 

도메인은 Office365.kr로 했고

계정도 위처럼 현재 Microsoft 365에 있는 계정의 UserPrincipalName과 동일하게 맞췄답니다.

 

 

현재 삭제했던 온프레미스 AD와 계정이 된 상태이므로 우선 동기화연결을 삭제해줘야 해요

 

 

Connect-MgGraph -Scopes "Organization.ReadWrite.All"

$OrgID = (Get-MgOrganization).Id
$params = @{
    onPremisesSyncEnabled = $false
}

Update-MgBetaOrganization -OrganizationId $OrgID -BodyParameter $params

 

위 명령어를 이용해서 동기화연결을 끊어주세요

 

 

 

 

그리고 Azure 포탈에 접속한 뒤 "Microsoft Entra Connect" 메뉴 접속

그리고 "Connect Sync" 메뉴 접속 그리고 하단의 "Microsoft Entra Connect health"를 클릭해주세요

 

 

 

"Sync Services" 클릭 후 "Service name"을 클릭해주세요

 

 

 

 

서비스 삭제를 위해 상단 좌측 "Delete"를 클릭하고

서비스 이름을 입력한 뒤 "Delete"를 클릭해서 삭제를 완료해주세요

 

 

 

동기화 상태가 Cloud-Only로 변경된 것을 확인할 수 있어요

 

 

 

 

하드매칭 테스트

 

우선 해당상태로 테스트를 진행해보려고 해요

동기화 상태가 Cloud-Only고 온프레미스 AD에 동일한 계정이 생성되어 있는데

동기화를 하게되면 새로운 AD와 동기화 될 수 있지 않을까? 라는 생각으로 바로 동기화를 진행해보려고 해요

 

 

 

 

이번엔 CUserPrincipalName을 사용할 값을 UserPrincipalName값으로 동기화 될 수 있도록 설치를 진행했어요

그리고 동기화를 진행했습니다

 

 

다들 예상하고 알고계신것 처럼 기존 Cloud-Only계정에 소프트매칭이 되지 않고

기존 온프레미스 AD 계정과 사용자 이름이 다른 계정이 생성되었어요

 

이는 기존에 사용하고 있던 Cloud-Only 계정에 ImmuntableID 값 (SourceAnchor)가 있기 때문에

소프트매칭을 할 수 없으며, 사용자 이름(UserPrincipalName)이 같도록 계정을 생성할 수 없기 때문에

임의의 이름으로 동기화 계정이 생성이 된 케이스라고 생각하시면 돼요

 

 

우선 잘못생성된 계정들을 삭제해야하니, AD에 User01~03 계정을 삭제하고 동기화해주세요

그럼 다시 최초의 상태인 User01~03 계정만 테넌트에 Cloud-Only로 생성되어 있겠죠?

 

 

이제부터 매칭하는 방법은 2가지로 나뉩니다

첫번째, 해당 상태로 클라우드 계정 속성의 ImmuntableID를 삭제하여 소프트 매칭을 시킨다

두번째, 클라우드 계정 속성의 ImmuntableID를 온프레미스 AD 계정에 Ms-DS-ConsistencyGUID에 Convert하여 값을 넣고

하드 매칭을 시킨다.

 

 

 

클라우드 계정 속성의 ImmuntableID 삭제 후 소프트 매칭 진행

 

우선 간단한 방법부터 테스트 해보려고 해요

User01~03으로 테스트가 가능하니 User01 계정을 대상으로만 테스트 해볼께요

 

Get-Msoluser | select UserprincipalName, ImmutableID

 

 

우선 위 명령어로 동기화가 됬었던, 즉 ImmutableID가 있어서 하드매칭을 해야하는 계정먼저 확인을 해봤어요

User01~03계정이 ImmutableID가 있네요

 

 

Set-MsolUser -UserPrincipalName user01@office365.kr -ImmutableId "$Null"

Get-Msoluser | where -Property UserPrincipalName -Like User0* | select Userprinci*, Immutab*

 

그리고 위 명령어를 이용해서 ImmutableID를 삭제하고 정상적으로 값이 삭제된지 확인해봤어요

값은 정상적으로 삭제되었네요

 

 

이제 User01계정을 온프레미스 AD에 생성하고 동기화를 진행해줬어요

소프트매칭이 가능하다면, User01 계정은 임의의 계정이 생성되지 않고 기존 Cloud-Only 계정과 동기화 되어야 해요

 

 

예상했던 것 처럼 User01 계정은 Cloud-Only 계정에서 Synced 계정으로 변경되었어요!!

 

 

ImmuntableID 값을 Ms-DS-ConsistencyGUID에 Convert하여 값을 넣고 하드 매칭

 

이번엔 Cloud-Only 계정에 있는 ImmutableID 값을 Convert하여 온프레미스 AD 계정 속성의

MS-DS-ConsistencyGUID 값에 넣어 하드 매칭을 테스트해보려고 해요

이번에 테스트할 계정은 User02 계정 이에요

 

기본적으로 ImmutableID의 값, SoucreAnchor로 사용되는 값은 AD 계정의 ms-DS-ConsistencyGUID로 사용됩니다

물론 해당 값이 아닌 다른 값을 이용 할 수도 있습니다  

 

 

$User02 = `
Get-Msoluser -UserPrincipalName user02@office365.kr | Select DisplayName, UserPrincipalName, ImmutableId, `
                      @{N="ImmutableID-mS-DS-ConsistencyGuidBase64";E={([Guid]([Convert]::FromBase64String($_.ImmutableID)))}}


Set-AdUser -Identity user02 -replace @{'ms-ds-consistencyguid' = [guid]$user02.'ImmutableID-mS-DS-ConsistencyGuidBase64'}

 

위 명령어를 이용해서 Cloud-Only 계정의 ImmutableID를 mS-DS-ConsistencyGuid로 Convert를 한 뒤

값을 Import 해줬어요

 

 

Get-AdUser -Identity user02 -Properties * | select Userprincipalname, ms-ds-ConsistencyGUiD

 

 

그리고 위 명령어를 사용하여 값이 Import 된 것을 확인할 수 있었어요

 

그리고 동기화를 돌려볼께요

하드매칭에 필요한 값이 잘 들어갔으면 Cloud-Only 계정이 Sync 계정으로 변경되겠죠?

 

 

 

다행스럽게 예상한대로 User02 계정까지 정상적으로 동기화 되었어요!

이렇게 테스트가 완료 되었네요

 

하드매칭은 정말 복잡한것 같아요

 

 

 

 

 

반응형