2015年7月11日土曜日

[MIM]Active Directoryの特権アカウント管理環境を構築する~環境構築編

こんにちは、富士榮です。

今回は、先日紹介したMicrosoft Identity Manager 2016(MIM)を使ったActive Directoryの特権アカウント/アクセス管理の環境構築について紹介したいと思います。

 参考)
  [MIM]特権アカウント管理機能の概要
  http://idmlab.eidentity.jp/2015/06/mim.html

特権アクセス管理を行うだけであれば、MIMの持っているID同期機能(MIM Synchronization Service)やID管理ポータル(MIM Portal)、パスワード管理機能(Self Service Password Reset / Self Service Password Registration)等のコンポーネントを導入する必要がないので、最低限必要な環境だけを一台のサーバに詰め込んでしまうことも可能です。

 最低限必要な環境
 ・Active Directory Domain Service(新規フォレスト、ドメイン)
 ・Internet Information Service
 ・SQL Server 2012以上(今回は2014を使用)
 ・Microsoft Identity Manager 2016(MIM)
  ・MIM Service
  ・Priviledged Access Management

これらのコンポーネントを一台のサーバに導入して特権管理したい既存のドメインの横に置いておくだけで特に既存の環境に大きな影響を与えることなく特権管理機能だけを追加することができます。

早速構成してみましょう。
※ちなみに全部英語版のOSに設定しています。あくまで経験上ですが、サーバソフトウェアを導入する時は英語版を導入して必要なコンポーネントに日本語Language Packを適用する方が安定します。


◆Active Directory Domain Service(AD DS)の導入

新規インストールしたWindows Server 2012 R2のマシンに、特権管理ドメインを以下の名前で構成します。
・フォレスト/ドメイン名:pyramid.local
・サーバ名:mimpam
・機能レベル:Windows Server 2012 R2


ウィザードを使って構成しても良いですが、面倒なのでPowerShellで構成しました。

・モジュールのインストール
Import-Module ServerManager
Install-WindowsFeature AD-Domain-Services,DNS -restart -IncludeAllSubFeature -IncludeManagementTools

・フォレスト/ドメインの構成
Import-Module ADDSDeployment
Install-ADDSForest -CreateDnsDelegation:$false -DatabasePath "C:\Windows\NTDS" -DomainMode Win2012R2 -DomainName "pyramid.local" -DomainNetbiosName "PYRAMID" -ForestMode Win2012R2 -InstallDns:$true -LogPath "C:\Windows\NTDS" -NoRebootOnCompletion:$false -SysvolPath "C:\Windows\SYSVOL" -Force:$true

◆Internet Information Service(IIS)の導入

特権アカウント管理はREST APIでコントロールするため、APIをホストするWeb Serverの導入を行います。
DドライブにOSのDVDを挿入した状態で以下を実行します。

Import-Module ServerManager
Install-WindowsFeature Web-WebServer,Net-Framework-Features,rsat-ad-powershell,Web-Mgmt-Tools,Application-Server,Windows-Identity-Foundation,Server-Media-Foundation -includeallsubfeature -restart -source d:\sources\SxS

◆必要なユーザアカウントの作成と設定

以下のアカウントが必要です。
尚、それぞれサービスアカウントなのでパスワード期限は無期限にセットしておきます。

用途アカウント名権限備考
MIM Monitoring ServiceMIMMonitor
MIM Component ServiceMIMComponent
MIM ServiceMIMServiceDomain Admins
MIM 管理AgentMIMMA使わないがセットアップに必要なので作成
SQL ServerSqlServer
PAM REST API Web ServicePAMAppPoolDomain Admins


こちらもPowerShellで一括で作ります。
Import-Module activedirectory
$sp = ConvertTo-SecureString "P@ssw0rd" -asplaintext -force
New-ADUser -SamAccountName MIMMonitor -name MIMMonitor -DisplayName MIMMonitor
Set-ADAccountPassword -identity MIMMonitor -NewPassword $sp
Set-ADUser -identity MIMMonitor -Enabled 1 -PasswordNeverExpires 1
New-ADUser -SamAccountName MIMComponent -name MIMComponent -DisplayName MIMComponent
Set-ADAccountPassword -identity MIMComponent -NewPassword $sp
Set-ADUser -identity MIMComponent -Enabled 1 -PasswordNeverExpires 1
New-ADUser -SamAccountName MIMService -name MIMService
Set-ADAccountPassword -identity MIMService -NewPassword $sp
Set-ADUser -identity MIMService -Enabled 1 -PasswordNeverExpires 1
New-ADUser -SamAccountName MIMMA -name MIMMA
Set-ADAccountPassword -identity MIMMA -NewPassword $sp
Set-ADUser -identity MIMMA -Enabled 1 -PasswordNeverExpires 1
New-ADUser -SamAccountName SqlServer -name SqlServer
Set-ADAccountPassword -identity SqlServer -NewPassword $sp
Set-ADUser -identity SqlServer -Enabled 1 -PasswordNeverExpires 1
New-ADUser -SamAccountName PAMAppPool -name PAMAppPool
Set-ADAccountPassword -identity PAMAppPool -NewPassword $sp
Set-ADUser -identity PAMAppPool -Enabled 1 -PasswordNeverExpires 1
Add-ADGroupMember "Domain Admins" PAMAppPool
Add-ADGroupMember "Domain Admins" MIMService


◆その他設定

その他、必要な設定を行います。(必要に応じて再起動します)

・GroupPolicy設定

 デフォルト・ドメイン・コントローラ・ポリシー
 ・コンピュータの管理->ポリシー>Windowsの構成>セキュリティ設定>ローカルポリシー>監査ポリシー
  ・アカウント管理 : 成功/失敗
  ・ディレクトリアクセス : 成功/失敗

 デフォルト・ドメイン・ポリシー
 ・コンピュータの管理>ポリシー>Windowsの構成>セキュリティ設定>ローカルポリシー>ユーザ権限の管理
  ・バッチジョブとしてログオンを拒否する
   MIMMonitor / MIMComponent / MIMService
  ・リモートデスクトップ経由でのログオンを拒否する
   MIMMonitor / MIMComponent / MIMService


・Kerberosの権限移譲

 Active Directoryユーザとコンピュータより委譲設定。
 ・委譲先ユーザ: MIMMonitor / MIMComponent
 ・委譲権限 : ユーザの作成・削除・管理、グループのメンバシップの変更


・Service Principal Name(SPN)の設定

 以下を設定します。
setspn -S FIMService/mimpam.pyramid.local PYRAMID\MIMService
setspn -S http/mimpam.pyramid.local PYRAMID\PAMAppPool
setspn -S http/mimpam PYRAMID\PAMAppPool


・特権管理対象ドメインへの名前解決設定

 後で既存のドメインから信頼関係を結ぶので、既存ドメインの名前解決ができるようにゾーンを構成しておきます。今回は以下の環境に設定をしています。

 既存ドメイン : eidentity.local
 既存ドメインコントローラ(DNSサーバ) : 192.168.5.30

 条件付きフォワーダを設定します。

Add-DnsServerConditionalForwarderZone -name "eidentity.local" -masterservers 192.168.5.30


◆SQL Server 2014 Standard Editionの導入

 メディアを挿入し、以下で最低限必要なコンポーネントを導入します。

.\setup.exe /Q /IACCEPTSQLSERVERLICENSETERMS /ACTION=install /FEATURES=SQL,SSMS /INSTANCENAME=MSSQLSERVER /SQLSVCACCOUNT="PYRAMID\SqlServer" /SQLSVCPASSWORD="P@ssw0rd" /AGTSVCSTARTUPTYPE=Automatic /AGTSVCACCOUNT="NT AUTHORITY\Network Service" /SQLSYSADMINACCOUNTS="PYRAMID\Administrator"


◆Microsoft Identity Manager 2016(MIM)の導入

・MIMコンポーネントの導入

 最低限のコンポーネントしか導入しないため、同期サービス設定などで警告は出ますが、無視しても大丈夫です。

















・Firewall設定

 特権管理ポータル、PAM REST APIへの外部からのアクセスを許可するため、以下のTCPポートをWindows Firewallで解放します。

 ・8086 : PAM REST API
 ・8090 : 特権管理ポータル


・FIMServiceデータベースへのPAM関連サービスアカウントのアクセス権限付与

 MIMComponent / MIMMonitorの各サービスがFIM Serviceのデータベースから必要な情報を読み出すため、SQL Serverへのアカウントの設定を行います。

[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO')
$uc = New-Object -TypeName Microsoft.SqlServer.Management.Smo.Login -ArgumentList "localhost","PYRAMID\mimcomponent"
$uc.LoginType = 'WindowsUser'
$uc.Create()
$um = New-Object -TypeName Microsoft.SqlServer.Management.Smo.Login -ArgumentList "localhost","PYRAMID\mimmonitor"
$um.LoginType = 'WindowsUser'
$um.Create()
$s = New-Object ('Microsoft.SqlServer.Management.Smo.Server') "localhost"
$d = $s.Databases['FIMService']
$uc2 = New-Object ('Microsoft.SqlServer.Management.Smo.User') ($d, "PYRAMID\mimcomponent")
$uc2.Login = "PYRAMID\mimcomponent"
$uc2.Create()
$um2 = New-Object ('Microsoft.SqlServer.Management.Smo.User') ($d, "PYRAMID\mimmonitor")
$um2.Login = "PYRAMID\mimmonitor"
$um2.Create()
$d.Roles['db_datareader'].AddMember("PYRAMID\mimcomponent")
$d.Roles['db_datareader'].AddMember("PYRAMID\mimmonitor")


・特権管理ポータル用Webサイトを構成する

 CTPで提供されているサンプルポータルを使います。最新ビルドだとちょっと改造が必要なので、そのあたりは追々。。

 とりあえずサンプルモジュールを
  C:\Program Files\Microsoft Forefront Identity Manager\2010\Privileged Access Management Portal\
 へ展開し、Webサイトを作成します。

New-WebSite -Name "MIM Privileged Access Management Example Portal" -Port 8090 -PhysicalPath "C:\Program Files\Microsoft Forefront Identity Manager\2010\Privileged Access Management Portal\"



◆既存ドメインとの信頼関係設定を行う

 既存のドメインから特権管理ドメインへの片方向の信頼関係を結びます。

・名前解決設定

 既存のドメインコントローラから特権管理ドメインへの名前解決ができるように既存ドメインのDNSサーバにpyramid.localのスタブゾーンを作ります。(もちろん別の方法でも良いです)


・SAMデータベースへのRPCの有効化

 既存ドメインコントローラで以下のレジストリを設定(PowerShellで設定)します。これでSID Historyをリモートで読み取れるようになります。

New-ItemProperty -Path HKLM:SYSTEM\CurrentControlSet\Control\Lsa -Name TcpipClientSupport -PropertyType DWORD -Value 1


・特権管理サービスのコマンドレットで必要な信頼関係設定を行う

 信頼関係を結ぶのに必要な設定がパッケージ化されたコマンドレットが用意されているので、特権管理サーバ上で以下のコマンドレットを実行します。
 クレデンシャルが求められるので、既存ドメインの管理者アカウントの権限を入力します。

$ca = get-credential
New-PAMTrust -SourceForest "eidentity.local" -Credentials $ca
New-PAMDomainConfiguration -SourceDomain "eidentity" -Credentials $ca


・既存ドメイン上のオブジェクトへの読み込み権限を委譲する

 Active Directoryユーザとコンピュータより特権アカウント管理ドメイン上のユーザ(MIM MonitorサービスおよびDomain Admins)へ既存ドメイン上のユーザ情報の読み取り権限を委譲します。

 ・委譲先ユーザ: MIMMonitor / Domain Admins
 ・委譲権限 : すべてのユーザ情報の読み取り


ここまでで環境の導入は終了です。
次回は必要な特権管理用ユーザ、グループの設定をしてテストをしてみます。

0 件のコメント: