ID連携の花形!MIM 2016やってみる?(3) - MIMの構成とインストール(前編)

Microsoft

2021.10.12

MIMを構成する

前回から、ずいぶん時間が空いてしまい、大変申し訳ありません。コロナ過で皆さん大変な状況かと思いますが、前回投稿から1年半も経ってしまいました。本当に年1の更新とならないよう、気を付けていきたいと思います。

前回は、MIMの基本的なしくみとして、どのようなかたちでデータを取り込んで変換するか、というような話しをさせていただきましたが、今回はお待ちかねのインストール作業となります。 少々長いので、回を分けてご紹介したいと思います。なお、本環境は2020年に構築したものとなりますので、現時点で最新のバージョンとなっていない点は、ご了承ください。

MIMを構成する場合、すべてを1台にインストールする方法もありますが、検証環境のようなケース以外はお奨めしません。MIM自体もSharePoint Serverのうえに乗るアプリケーションとして動作負荷がかかりますが、 データエンジン(SQL Server)も相当に高い動作スペックを必要とするため、動きか遅くなってしまうためです。以下のように、サーバーを分けるとよいと思います。もちろん下記は、冗長性等考慮しない、最低構成の前提です。

  • ドメインコントローラー (認証に必要)
  • MIM同期サーバー (プロビジョニングに必要)
  • MIMサービス/ポータルサーバー (アカウント情報の入力・設定管理に必要)
  • データベースサーバー(MIM・SharePointのDBとして必要)

今回は資材の関係上、MIM同期サーバーとMIMサービス/ポータルサーバーは1台にまとめて構成します。インストールに必要な主なソフトウェアは以下の通りです。サイジングに関しては、各製品のポータルサイト等を直接確認してください。

  • Windows Server 2019 1809
  • Microsoft Identity Manager 2016 SP2
  • Microsoft SharePoint Server 2019
  • Microsoft SQL Server 2017 Standard

https://docs.microsoft.com/ja-jp/windows-server/get-started-19/sys-reqs-19
https://docs.microsoft.com/ja-jp/microsoft-identity-manager/capacity-planning-guide
https://docs.microsoft.com/ja-jp/sharepoint/install/hardware-and-software-requirements-2019
https://docs.microsoft.com/ja-jp/sql/sql-server/install/hardware-and-software-requirements-for-installing-sql-server?view=sql-server-ver15

なお、MIMでサポートされているソフトウェア一覧は、以下にありますので、組み合わせを変えたい場合は検討してください。

https://docs.microsoft.com/ja-jp/microsoft-identity-manager/microsoft-identity-manager-2016-supported-platforms

注意事項

MIMのインストールでいつも問題になるのが、「MIMコンポーネントは英語版が前提」であるということです。ユーザー入力や操作を行うMIMポータルは多言語化されており、日本語もサポートしています。 ですが、それ以外のコンポーネント類は英語環境が前提となっており、日本語環境にインストールが失敗するケースがあります。それを避けるには、すべてを英語版にすることが簡単ですが、できない場合、 SharePoint管理サイトに英語モジュールを有効化することで、作業そのものはできるでしょう。

また、MIMや関連ソフトウェア(とくにSharePoint)は、インストール時に関連モジュールを必要として、インターネットから自動ダウンロードを行います。インターネットに接続可能なサーバーで構築することをお奨めします。 オフラインの場合、手動でモジュールを集めてインストールする必要がありますので、手間がかかるでしょう。

ソフトウェアの入手方法・費用

MIMのソフトウェア自身は、ボリュームライセンスサービスセンター、Visual Studio Subscription(開発テストのみ)、あるいは評価版のいずれかでダウンロードが可能です。ソフトウェア自身に料金は発生しません。 利用ユーザー単位でのライセンス料が発生しますが、Azure ADとの連携環境でPremium 1または2の有償ライセンスがあれば、それで充当が可能です。ユーザー数が未定の場合、Software Assurance契約が必要です。Windows ServerやSQL Serverについても別途ライセンスが必要ですので、詳細は以下をご覧ください。

https://docs.microsoft.com/ja-jp/microsoft-identity-manager/microsoft-identity-manager-licensing



1. OSのインストール

OSのインストールや設定については、基本的に以下の標準設定で、問題はありません。MIM用およびSQL Server用サーバーは、ドメイン参加したメンバーサーバーとして構成します。今回はmsp-test.intellilink.co.jpドメインで構成します。 すべてのサーバーは日本語版環境で、問題はありません。

  • ドメインコントローラー 1台
  • MIM用サーバー 1台
  • SQL Server用サーバー 1台

2. MIM用アカウント・グループの構成

MIMでは、専用の管理アカウント・サービスアカウントといった、個別アカウントやグループが必要になります。ですので、最初の段階で、作成しておく必要があります。

通常のActive Directoryアカウントでもよいのですが、今回はマイクロソフトの推奨であるgMSA(グループ マネージド サービス アカウント)で構成しましょう。gMSAは簡単にいうと、 「パスワード」がシステム管理されたWindowsサービス専用のアカウントとなります。パスワードを盗まれる危険が少なく、特定のサーバー上でしか利用できないサービス専用アカウントなので、セキュリティ防御が高まります。

参考

https://docs.microsoft.com/ja-jp/windows-server/security/group-managed-service-accounts/group-managed-service-accounts-overview

作成が必要なgMSAアカウント

  • MIMSyncGMSAsvc :MIM同期サービス用
  • MIMSrvGMSAsvc :MIMサービス用
  • MIMPRstGMSAsvc :MIMパスワードリセットサービス用
  • MIMPRegGMSAsvc :MIMパスワード登録サービス用

作成が必要なActive Directoryアカウント

  • MIMAdmin :MIM管理者アカウント
  • svcSharePoint :SharePointサービスアカウント
  • svcMIMSql :SQL Serverサービスアカウント
  • svcMIMAppPool :MIMアプリケーションプールサービスアカウント(SharePointで必要)

作成が必要なグループ

  • MIMSyncAdmins :MIM同期管理者グループ
  • MIMSyncOperators:MIM同期オペレーターグループ
  • MIMSyncJoiners :MIM同期ジョイナーグループ
  • MIMSyncBrowse :MIM同期ブラウザーグループ
  • MIMSyncPasswordSet :MIM同期パスワードセットグループ
  • MIMSync_Servers :MIM同期サーバーグループ(gMSAに必要)
  • MIMPWReset_Servers:MIMパスワードリセットサーバーグループ(gMSAに必要)
  • MIMPWRegist_Servers:MIMパスワード登録サーバーグループ(gMSAに必要)


以下のPowerShellコマンドレッドを実行し、一括作成を行います。

import-module activedirectory
$sp = ConvertTo-SecureString "P@ssw0rd" -asplaintext -force

# 管理アカウント作成
New-ADUser -SamAccountName MIMAdmin -name MIMAdmin
Set-ADAccountPassword -identity MIMAdmin -NewPassword $sp
Set-ADUser -identity MIMAdmin -Enabled $true -PasswordNeverExpires $true

New-ADUser -SamAccountName svcSharePoint -name svcSharePoint
Set-ADAccountPassword -identity svcSharePoint -NewPassword $sp
Set-ADUser -identity svcSharePoint -Enabled $true -PasswordNeverExpires $true

New-ADUser -SamAccountName svcMIMSql -name svcMIMSql
Set-ADAccountPassword -identity svcMIMSql -NewPassword $sp
Set-ADUser -identity svcMIMSql -Enabled $true -PasswordNeverExpires $true

New-ADUser -SamAccountName svcMIMAppPool -name svcMIMAppPool
Set-ADAccountPassword -identity svcMIMAppPool -NewPassword $sp
Set-ADUser -identity svcMIMAppPool -Enabled $true -PasswordNeverExpires $true

# MIMグループ作成
New-ADGroup -name MIMSyncAdmins -GroupCategory Security -GroupScope Global -SamAccountName MIMSyncAdmins
New-ADGroup -name MIMSyncOperators -GroupCategory Security -GroupScope Global -SamAccountName MIMSyncOperators
New-ADGroup -name MIMSyncJoiners -GroupCategory Security -GroupScope Global -SamAccountName MIMSyncJoiners
New-ADGroup -name MIMSyncBrowse -GroupCategory Security -GroupScope Global -SamAccountName MIMSyncBrowse
New-ADGroup -name MIMSyncPasswordSet -GroupCategory Security -GroupScope Global -SamAccountName MIMSyncPasswordSet
Add-ADGroupMember -identity MIMSyncAdmins -Members Administrator
Add-ADGroupMember -identity MIMSyncAdmins -Members MIMAdmin

setspn -S http/mim.msp-test.intellilink.co.jp msp-test\svcMIMAppPool

#パスワードリセット・登録サイトURLのDNS登録
$ipaddress = [array]"192.168.10.51"
Add-DnsServerResourceRecordA -Name "mim" -ZoneName "msp-test.intellilink.co.jp" -AllowUpdateAny -IPv4Address $ipaddress
Add-DnsServerResourceRecordA -Name "passwordreset" -ZoneName "msp-test.intellilink.co.jp" -AllowUpdateAny -IPv4Address $ipaddress
Add-DnsServerResourceRecordA -Name "passwordregistration" -ZoneName "msp-test.intellilink.co.jp" -AllowUpdateAny -IPv4Address $ipaddress


# gMSA用ルートキー設定
Add-KDSRootKey -EffectiveTime ((Get-Date).AddHours(-10))

# gMSAアカウント・グループ作成
New-ADGroup -name MIMSync_Servers -GroupCategory Security -GroupScope Global -SamAccountName MIMSync_Servers
Add-ADGroupmember -identity MIMSync_Servers -Members chabmim$
New-ADServiceAccount -Name MIMSyncGMSAsvc -DNSHostName MIMSyncGMSAsvc.msp-test.intellilink.co.jp -PrincipalsAllowedToRetrieveManagedPassword "MIMSync_Servers"

Set-ADServiceAccount -Identity MIMSyncGMSAsvc -ServicePrincipalNames @{Add="PCNSCLNT/chabmim.msp-test.intellilink.co.jp"}

New-ADGroup -name MIMService_Servers -GroupCategory Security -GroupScope Global -SamAccountName MIMService_Servers
Add-ADGroupMember -identity MIMService_Servers -Members chabmim$
New-ADServiceAccount -Name MIMSrvGMSAsvc -DNSHostName MIMSrvGMSAsvc.msp-test.intellilink.co.jp -PrincipalsAllowedToRetrieveManagedPassword "MIMService_Servers" -OtherAttributes @{'msDS-AllowedToDelegateTo'='FIMService/chabmim.msp-test.intellilink.co.jp'}

Set-ADServiceAccount -Identity MIMSrvGMSAsvc -TrustedForDelegation $true -ServicePrincipalNames @{Add="FIMService/chabmim.msp-test.intellilink.co.jp"}

Add-ADGroupmember -identity MIMSyncPasswordSet -Members MIMSrvGMSAsvc$ 
Add-ADGroupmember -identity MIMSyncBrowse -Members MIMSrvGMSAsvc$


#パスワードリセットAPPPool用設定
New-ADGroup -name MIMPWReset_Servers -GroupCategory Security -GroupScope Global -SamAccountName MIMPWReset_Servers
Add-ADGroupMember -identity MIMPWReset_Servers -Members chabmim$
New-ADServiceAccount -Name MIMPRstGMSAsvc -DNSHostName MIMPRstGMSAsvc.msp-test.intellilink.co.jp -PrincipalsAllowedToRetrieveManagedPassword "MIMPWReset_Servers" -OtherAttributes @{'msDS-AllowedToDelegateTo'='HTTP/passwordreset.msp-test.intellilink.co.jp'}

Set-ADServiceAccount -Identity MIMPRstGMSAsvc -TrustedForDelegation $true -ServicePrincipalNames @{Add="HTTP/passwordreset.msp-test.intellilink.co.jp"}

Add-ADGroupmember -identity MIMSyncPasswordSet -Members MIMPRstGMSAsvc$ 
Add-ADGroupmember -identity MIMSyncBrowse -Members MIMPRstGMSAsvc$

#パスワード登録APPPool用設定
New-ADGroup -name MIMPWRegist_Servers -GroupCategory Security -GroupScope Global -SamAccountName MIMPWRegist_Servers
Add-ADGroupMember -identity MIMPWRegist_Servers -Members chabmim$
New-ADServiceAccount -Name MIMPRegGMSAsvc -DNSHostName MIMPRegGMSAsvc.msp-test.intellilink.co.jp -PrincipalsAllowedToRetrieveManagedPassword "MIMPWRegist_Servers" -OtherAttributes @{'msDS-AllowedToDelegateTo'='HTTP/passwordregistration.msp-test.intellilink.co.jp'}

Set-ADServiceAccount -Identity MIMPRegGMSAsvc -TrustedForDelegation $true -ServicePrincipalNames @{Add="HTTP/passwordregistration.msp-test.intellilink.co.jp"}

Add-ADGroupmember -identity MIMSyncPasswordSet -Members MIMPRegGMSAsvc$ 
Add-ADGroupmember -identity MIMSyncBrowse -Members MIMPRegGMSAsvc$

Windows役割・機能のインストール

MIMサーバーに対して、Windows役割・機能をインストールします。SharePointインストール等の必要要件ともなりますが、GUIでインストールすると大変ですので、CUI(PSコマンドレット)で作業しましょう。 Winodows ServerインストールディスクをDドライブにメディア装着しておく必要があります。(そうでない方はインストールコマンドレットを読み替え修正してください)

Add-WindowsFeature Web-Server, `
windows-identity-foundation, `
NET-Framework-45-ASPNET, `
Net-Framework-Features, `
Web-Mgmt-Console, `
Web-Mgmt-Compat, `
Web-Metabase, `
Web-Lgcy-Mgmt-Console, `
Web-Lgcy-Scripting, `
Web-Mgmt-Tools, `
Web-WMI, `
Web-Common-HTTP, `
Web-Windows-Auth, `
NET-HTTP-Activation, `
NET-Non-HTTP-Activ, `
NET-WCF-HTTP-Activation45,`
rsat-ad-powershell,`
Server-Media-Foundation,`
Xps-Viewer -includeallsubfeature -source D:\sources\sxs

gMSA等のセキュリティ設定

gMSA等サービスアカウント類は、Winodowsサービスに対して使用可能になるよう、セキュリティ設定を変更します。また特定アカウントは「ネットワーク経由でログオンを拒否」に設定し、 外部からのアクセスを禁止してセキュリティ低下を防ぎます。

(MIMサーバー:ローカルセキュリティポリシー→[セキュリティの設定]-[ローカルポリシー]-[ユーザー権利の割り当て]-<サービスとしてログオン>)

(MIMサーバー:ローカルセキュリティポリシー→[セキュリティの設定]-[ローカルポリシー]-[ユーザー権利の割り当て]-<ネットワーク経由のアクセスを拒否>)

(DBサーバー:ローカルセキュリティポリシー→[セキュリティの設定]-[ローカルポリシー]-[ユーザー権利の割り当て]-<サービスとしてログオン>)

MIMサーバーのインストール前準備

MIMサーバーで、サーバーソフトウェアをインストールする前提として、以下のソフトウェアのインストール・設定変更を行います。既にインストールされているものについては、 インストール済みの表示が出るので、スキップで問題ありません。

  • VisualStudio 2013 Visual C++再頒布パッケージのインストール
  • .NET Framework 4.6のインストール
  • SQL Server 2012 Native Clientのインストール
  • MIMAdminアカウントのローカルAdministratorsグループへの登録

DBサーバーのSQL Serverインストール

DBサーバー上で、SQL Serverをインストールします。アプリケーション用のデータベースは、そのアプリケーションインストール時に自動作成されますが、 その下地としてSQL Server一式が必要です。GUIだと大変ですので、CUIでインストールを行います。

.\setup.exe /Q /IACCEPTSQLSERVERLICENSETERMS /ACTION=install /FEATURES=SQL /INSTANCENAME=MSSQLSERVER /SQLSVCACCOUNT="msp-test\svcMIMSql" /SQLSVCPASSWORD="P@ssw0rd" /AGTSVCSTARTUPTYPE=Automatic /AGTSVCACCOUNT="NT AUTHORITY\Network Service" /SQLSYSADMINACCOUNTS="msp-test\MIMAdmin"

SQL ServerにはCU(累積的アップデート)があり、追加インストールを行うことで、セキュリティ・不具合の修正が可能になります。以下をご覧いただくと、必要なCUモジュールが確認できるでしょう。

https://docs.microsoft.com/ja-jp/sql/database-engine/install-windows/latest-updates-for-microsoft-sql-server?view=sql-server-ver15

インストールが完了した後、1344/tcpポートを外部から参照できるようWindows Firewallを調整する必要があります。そうしないと、SQL Serverに外部からアクセスができません。

まず、前編としてはここまでになります。後編はMIMサーバーの前提構成(Share Point Serverの構成)、および実際のMIMサーバーのインストールになります。

  • 文章中の商品名、会社名、団体名は、各社の商標または登録商標です。

ID連携の花形!MIM 2016やってみる?(3) - MIMの構成とインストール(前編)