
ID連携の花形!MIM 2016やってみる?(3) - MIMの構成とインストール(前編)
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でサポートされているソフトウェア一覧は、以下にありますので、組み合わせを変えたい場合は検討してください。
注意事項
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サービス専用のアカウントとなります。パスワードを盗まれる危険が少なく、特定のサーバー上でしか利用できないサービス専用アカウントなので、セキュリティ防御が高まります。
参考
作成が必要な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モジュールが確認できるでしょう。
インストールが完了した後、1344/tcpポートを外部から参照できるようWindows Firewallを調整する必要があります。そうしないと、SQL Serverに外部からアクセスができません。
まず、前編としてはここまでになります。後編はMIMサーバーの前提構成(Share Point Serverの構成)、および実際のMIMサーバーのインストールになります。
- 文章中の商品名、会社名、団体名は、一般に各社の商標または登録商標です。