🆔

IDPをOktaへ3000ユーザー移行した時のお話

に公開

こんとろろ〜
株式会社GENDAのケンシロウです!

https://adventar.org/calendars/11540

今期はGiGOで利用していた別のIDPからOktaへの切り替えを実施しました。
この移行準備、移行中、移行後の話をしたいと思います。

目次

  • 1.移行背景
  • 2.移行準備
  • 3.移行作業
  • 4.移行後
  • 5.これから

1.移行背景

元々別のIDPを利用していたのですが、
ActiveDirectoryの運用や社内の認証基盤の見直しをしておりました。
別の担当の方が進めていたのですが、前期末に異動となったため代わりにPMとして私が入りました。
すでにコンサル会社へ依頼していたこともあり最初の1ヶ月
周りからすると何処の馬の骨とも知らない声がでかい人が
PMやり始めて意味わからなかったと思いますw
ちなみに今ではうるさいあの人で親しまれているはずです!

2.移行準備

ここはコンサル会社にすでに依頼していたこともあって一緒に進めていました。
Okta移行とIntuneの導入関連を進めております。
SASEもという話が出ていたのですが、時期尚早すぎて一旦ストップしました。
全部やらないといけないことは理解していますが、「まずは現実的に地盤を整えよう」 というところで認証基盤周りとMDMからちゃんと固めようという方針で進めました。
私が現状を把握するのに2-3ヶ月くらいかかってしまったなと言うところもありました。
特に本社、店舗と分かれているのでどちらも含めて全容を理解するのに時間がかかってしまいました。
わからないものはわからないのでとにかく聞きました。
直接お店に行ったり、倉庫もあるのでそこの担当者も捕まえて頭を下げたり、
当たり前ではあるんですけど足を動かしてお願いしに行くのが一番効果的でした。
そこから情報収集をして現状を把握、NWや今の認証基盤、
なぜそうしているかがおおよそ把握できました。

Active Directory

ここはBTCONJPでも話をしましたが、
FSxを利用していたりすることからActive Directoryをやめれない状況にありました。
まだ廃止までは至ってませんが、今はOkta AD Agentを利用して連携しています。
https://help.okta.com/oie/ja-jp/content/topics/directory/ad-agent-prerequisites.htm
幸運なことに、DHCPなどが含まれていないため周りのサービス整理も終われば
いつでも廃止はできる状態になることも含めて整理をしました。

3.移行作業

そして準備を重ねて移行当日、夜の18時から始まり朝の4時に時間通りに終了
だったのですが移行中に実際にあったトラブルの話をします
前提として、M365、jinjer、楽楽精算、MAJOR FLOW ZをOktaへ切り替えています

jinjer

jinjerに関してはOktaと連携できないので、EntraID SSOをしています。
事前に準備はできたのですが、謎に連携できなくて結果的に当日うまく行きました。
一番よくわからなかったですがうまく行ったからヨシ!

M365

事前準備をしていたのですが、一部設定確認が漏れていたため
前倒しで進んでいたのがピタッと止まりました。
別IDPからプロビジョニング設定をしていたことから、
ADのImmutable IDの値じゃなくIDP側のImmutable IDになっていたため認証不一致
結果的にログインできないという状況でした。
ここは私がすぐに特定したので原因は掴めたのですが、
ここから1時間ほどでバッチを作成しADのImmutable IDをEntraへ流し込みをしました。

ADのデータ取り出し

$Users = Get-ADUser -Filter *
foreach ($User in $Users)
{
   # 1. オンプレミスADユーザーのObjectGuid (バイナリ) を取得
    if ($User.UserPrincipalName -notlike "*@hogehoge.jp") {continue}
    $ObjectGuidBinary = $User.ObjectGuid.ToByteArray()

    # 2. バイナリをBase64文字列に変換
    $Base64ImmutableId = [System.Convert]::ToBase64String($ObjectGuidBinary)

    # 3. 結果を表示
    "$($User.UserPrincipalName),$($Base64ImmutableId)" | Out-File -FilePath "C:¥Temp¥hogehogeImmutableId.csv" -Encoding default -Append
}

Entraへデータ流し込み

$CsvFilePath = "C:\Temp\hogehogeImmutableId.csv"
$Users = Import-Csv -Path $CsvFilePath
$AllUsers = $(Get-MgUser -All).UserPrincipalName
foreach ($User in $Users)
{
    if ($AllUsers -notcontains $User.UserPrincipalName)
    {
        Write-Host "[情報]該当アカウントなし",$User.UserPrincipalName
        continue
    }
    try {Update-MgUser -UserId $User.UserPrincipalName -OnPremisesImmutableId $User.OnPremisesImmutableId}
    catch {Write-Host "[障害]更新エラー:",$User.UserPrincipalName,$User.OnPremisesImmutableId}
}

Okta側にはOkta AD AgentですでにImmutable IDは自動保存されているのでそちらの設定は不要ですが、この作業によってM365は無事に連携できました。

楽楽精算

こちらも何事もなく無事連携

MAJOR FLOW Z

こちらは連携後、認証した後になぜかMAJOR FLOW Zのログイン画面に飛んでしまうという事象が発生しました。
確認したところSSOのログインURL部分が小文字だと不具合になり、大文字だと認証もされ無事ログインできるという謎仕様…
これにより1時間くらい全員彷徨うという事態になり、リダイレクトされないのかーという珍事でした(泣)

4.移行後

基本的に店舗スタッフからの問い合わせは多かったものの、
全体が3000人ほどで現状問い合わせとしては80人ほどあり、
もっと来ると想定していたのですが事前周知や皆様の協力もあり大きな問題はなく無事移行できました。
ただ一部の店舗へ周知ができていなかったりなどの問題や、
店舗スタッフのスマートフォンバージョンがOkta Verifyに対応していないものなども何十件かあり、
こちらは今後FIDO2などでyubikeyなどを配布しての運用も一部検討と進めております。

5.これから

以前はIPアドレス制限をかけていたりしていたサービスもOktaの認証を挟ませる前提で現状見直しが始まりました。
これによりVPNに関しては一部Oktaに認証を寄せる形でのNW全体を含めた運用設計が進められているので、今後はIDP中心とした本社、店舗に関わらず色々と改善作業をしていきたいと思います。

また、デバイス証明書の配布も今後はIntuneなどのMDMを利用して運用していく形で検討を進めているので、より便利かつより楽により安全に運用できるようまだまだやることは多いので進めていきます。

さらに、開発用プロダクトの管理画面などにログインする際にOktaでできるようプロダクト側とも話を進めており、よりさらにOktaの事例が増えていきそうです!

まだまだ切り返しただけでスタートラインに立っただけなので、これから運用については色々と施策をしてまたアウトプットしますので皆様お楽しみに!

GENDA

Discussion