どうも、サイオステクノロジー 山田です。
今回はとある案件で Windows Server 2008 R2 の ADFS2.0 を Windows Server 2016 の ADFS4.0 に移行するという作業があったため、その調査検証を記事にしました。
移行方法について
まず、移行方法は以下の2つとなります。
①全ての設定を手動で移行するか
②一部設定をツールで移行し、残りを手動で移行するか
なので、全ての設定をツール(Microsoft社提供)で移行はすることは出来ないようです。
ツールで移行可能な ADFS2.0 の設定項目は以下となっています。
■コマンドで設定する項目
Set-ADFSProperties、Set-ADFSClaimDescription、Set-ADFSClaimsProviderTrust など
■[AD FS 2.0 の管理]で設定する項目
-フェデレーション サービスのプロパティ(イベント設定のみ)
-[サービス]
-要求記述
-証明書
-[信頼関係]
-要求プロバイダー信頼
-証明書利用者信頼
-属性ストア
上記以外の設定(エンドポイントなど)に関しては手動で設定する必要があります。
また、ツールを利用する場合、Windows Server 2012 から利用可能な「グループ管理サービスアカウント(gMSA)」を利用した移行は出来ないようなので注意が必要です。ADFS起動時にエラーとなります。
移行実施
今回はツールを利用した、移行方法をご紹介します。
但し、構築環境により大きく操作など変わるため、参考にされる際は十分にご注意ください。
CLI操作は PowerShell で実行します。
前提
前提として移行元と移行先の構成を記載します。
以降はドメイン管理者権限を持つユーザで操作します。
■移行元
・OS:Windows Server 2008 R2
・ADFS構成
-バージョン:2.0
-インストール方法:”AdfsSetup.exe(KB974408)”を実行
-サーバの役割:フェデレーションサーバファーム
-サービスアカウント:ADFS用のサービスアカウント
-データベース:Windows Internal Database
■移行先
・OS:Windows Server 2016
・ADFS構成
-バージョン:4.0
-インストール方法:”役割と機能の追加”から
-サーバの役割:移行元と合わせます
-サービスアカウント:移行元と合わせます
-データベース:移行元と合わせます
設定のバックアップ
ADFS2.0 の設定を手動でバックアップします。
①保存フォルダを作成
※保存フォルダを変更する場合は適宜、読み替えてください。
1 2 | > md C:\Users\administrator\Desktop\adfs2.0_config > cd C:\Users\administrator\Desktop\adfs2.0_config |
②利用している証明書のリストをファイルにエクスポート
1 | > Get-ADFSCertificate | Out-File ".\certificates.txt" |
③フェデレーション サービスのプロパティをファイルにエクスポート
1 | > Get-ADFSProperties | Out-File ".\properties.txt" |
④アプリケーション構成ファイルをバックアップ
1 | > Copy-Item "C:\Program Files\Active Directory Federation Services 2.0\Microsoft.IdentityServer.Servicehost.exe.config" . |
⑤有効な ADFS エンドポイントのリストをファイルにエクスポート
1 | > Get-ADFSEndpoint | Out-File ".\endpoints.txt" |
⑥カスタム要求記述のリストをファイルにエクスポート
1 | > Get-ADFSClaimDescription | Out-File ".\claimtypes.txt" |
⑦IIS 設定ファイルをバックアップ
※格納先を変更している場合は適宜、読み替えてください。
1 | > Copy-Item "C:\inetpub\adfs\ls\web.config" . |
設定のエクスポート
ADFS2.0 の設定をツールでエクスポートします。
①移行先から”C:\Windows\ADFS\Export-FederationConfiguration.ps1″をコピーし、移行元の”C:\Program Files\Active Directory Federation Services 2.0\”に配置する
②移行先から”C:\Windows\ADFS\ja-JP\Migrate-FederationConfiguration.psd1″をコピーし、移行元の”C:\Program Files\Active Directory Federation Services 2.0\ja-JP\”に配置する
③保存フォルダを作成
※保存フォルダを変更する場合は適宜、読み替えてください。
1 2 | > md C:\Users\administrator\Desktop\adfs2.0_config\FederationConfig > cd C:\Users\administrator\Desktop\adfs2.0_config\FederationConfig |
④設定のエクスポート
1 2 3 4 5 6 7 8 9 | > C:\"Program Files"\"Active Directory Federation Services 2.0"\Export-FederationConfiguration.ps1 次のパラメーターに値を指定してください: Path: C:\Users\administrator\Desktop\adfs2.0_config\FederationConfig フェデレーション サービスの構成をサーバー '*****' からエクスポートしています... 証明書のエクスポートに使用するパスワードを入力してください: ***** パスワードの再入力: ***** 構成ファイルを保存しています... 次の AD FS 構成が 'C:\Users\administrator\Desktop\adfs2.0_config\FederationConfig' にエクスポートされました: |
移行
①移行先のサーバに、ADFSの役割を追加し、以下のように初期構成を設定します。
・移行元と同じフェデレーション サービス名 (ファーム名) を使用する。
・移行元と同じSSLサーバー認証証明書(.pfx)を指定する。
・移行元と同じサービス アカウント ID を指定する。
②自動ロールオーバー機能を無効化
1 | > Set-ADFSProperties -AutoCertificateRollover $false |
③移行元から”C:\Users\administrator\Desktop\adfs2.0_config\FederationConfig”をコピーし、移行先の”C:\”配下にコピーする。
※ファイルパスが長いと、この後のコマンドでエラーになります。
④設定のインポート
1 2 3 4 5 6 7 8 9 10 11 12 13 | > C:\Windows\ADFS\Import-FederationConfiguration.ps1 コマンド パイプライン位置 1 のコマンドレット Import-FederationConfiguration.ps1 次のパラメーターに値を指定してください: Path: C:\FederationConfig フェデレーション構成をインポートします。 フェデレーション構成のインポートを選択すると、ターゲット サーバーに存在するすべての要求プロバイダーと証明書利用者信頼が削除されます。続行しますか? [Y] はい(Y) [A] すべて続行(A) [N] いいえ(N) [L] すべて無視(L) [S] 中断(S) [?] ヘルプ (既定値は "Y"): Y フォルダー 'C:\FederationConfig' から構成を読み込んでいます... フェデレーション サービスの構成をサーバー '*****' にインポートしています... 構成は正常にインポートされました。 |
⑤ADFSサービスの再起動
1 | > Restart-service adfssrv |
⑥バックアップで取得したファイルと、移行先の設定を比べて、不足している設定を手動で設定します。
感想
今回はツールを利用した、ADFSの移行方法をご紹介しました。
感想としては、単純なSAML認証やファーム構成であればツールを利用するだけで、簡単におおむね移行できるのではないかと思いました。
GUIでポチポチやるよりも作業精度の向上や作業時間の短縮などが見込めると思いますので、ADFSを移行する際は検討してみては如何でしょうか。
サイオステクノロジー株式会社 山田