先日公開したAzure AD ConnectとCDATA API Serverを組み合わせたSalesforce.comへのプロビジョニングや、3年ほど前に公開したAzure AD ConnectからOpenAMのレポジトリとして構成したOpenDJへのプロビジョニングの記事では、Azure AD ConnectのMicrosoft Identity ManagerのSynchronization Serviceとしての機能を使ってカスタムのコネクタ(ECMA2エージェント)や組み込みのGeneric LDAP Connectorを使って「無理やり」、ADやAzure AD以外のシステムとの同期を実現していました。
※Azure AD ConnectにGeneric LDAP Connectorなどが同梱され始めたのは1年くらい前ですね。
2.パラメータ定義(GetConfigParametersメソッド)
API Server上のリソースURIや接続に使うAPI ServerユーザのAuthTokenを指定できるようにします。こんなコードになります。接続パラメータの部分だけで良いのでConnectivityの部分にパラメータを追加しています。
switch (_page)
{
case ConfigParameterPage.Capabilities:
break;
case ConfigParameterPage.Connectivity:
_configParametersDefinitions.Add(ConfigParameterDefinition.CreateLabelParameter("Connection parameters"));
_configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter(ConstDefinition.CFG_RESOURCE_URI, ""));
_configParametersDefinitions.Add(ConfigParameterDefinition.CreateStringParameter(ConstDefinition.CFG_AUTH_TOKEN, ""));
break;
case ConfigParameterPage.Global:
break;
case ConfigParameterPage.Partition:
break;
case ConfigParameterPage.RunStep:
break;
case ConfigParameterPage.Schema:
break;
}
先日、Azure AD Connectに関するセキュリティ・アドバイザリが発表され、脆弱性対応版として最新版がリリースされました。 脆弱性対応のためとはいえ、一部ヘルプデスク運用が変わってくるので、Office365やAzure ADの管理者の方は十分に注意して運用マニュアルの修正などを行う必要があります。
日本語「要求したユーザーが対象のオンプレミス AD アカウントのオーナーであるかどうかを検証します。それは、対象のオンプレミス AD アカウントと、要求したユーザーの Azure AD アカウントの関係をメタバースで確認します。要求したユーザーがオーナーの場合、Azure AD Connect はパスワード ライトバック要求を許可します。そうではない場合、要求は拒否されます」
原文「it then validates whether the requesting user is the owner of the target on-premises AD account. It does so by checking the relationship between the target on-premises AD account and the Azure AD account of the requesting user in its Metaverse. If the requesting user is indeed the owner, Azure AD Connect permits the Password writeback request. Otherwise, the request is rejected」
このオーナー(is the owner)というのが何を指すのか、が全く分からず、ローカルAD上のOUや対象ユーザのセキュリティ構成でオブジェクトのオーナーにしてみたり、と色々とやったのですが、結局オーナー=自身のアカウント、というオチだと思います。#違ったらご指摘ください。
今回「脆弱性」として取り上げられた仕組みは基本的にFIM/MIMにおいても同じですので、管理者権限を持つアカウントのパスワードを、悪意のある別の管理者がリセットすることが出来ます。これを製品の脆弱性や不具合と呼ぶのは微妙ですが、FIM/MIMにおいては今回Azure AD Connectが行った対応は入っていませんので、管理者権限を持つユーザについては自分自身でしかパスワードを更新できない様にMPRを工夫する、などの対応が必要となります。
全然気が付いていなかったのですが、先日のAzure AD Connectの最新バージョン(1.1.180)から以下の管理エージェントが同梱されています。
Generic LDAP
Generic SQL
PowerShell
Web Service
これが何を意味するか、というとこれまではあくまでオンプレミスのActive DirectoryからAzure Active DirectoryへのID同期を行うためのツールであったAzure AD Connectが「LDAPやSQLなど他のデータ・ソースを含めID同期を行うことが出来るようになった」、ということです。
Azure AD Connectにディレクトリ同期ツールが統合された際に、カスタムシステムとの接続を将来サポートする、という宣言はありましたが、ようやく第一歩を踏み出した、ということです。
各社のID管理製品は特にこのようなデータ削除に関する保護措置を用意しているものが多く、Microsoft Identity Manager(MIM)においてもあらかじめ設定した閾値を超えたオブジェクトの削除が一気に発生するとジョブを停止する機能「Specify number of deletions to process」が用意されています。
(昔からある機能なので、当然まだForefront Identity Manager(FIM)を使っていてもこの機能は使えます)
インポート処理で削除が一定の件数を超えたら処理を止めるための設定を行いますので、CSV取り込み用のConnector SpaceのRun ProfilesのImport処理の中に設定項目が存在します。
Thresholdの項目の中の「Specify number of deletions to process」にチェックを入れて、とりあえず10に設定してみます。
ちなみにこの設定、一度設定~保存しても、再度設定の編集画面を開くと保存した内容が「表示上」はクリアされてしまいます。キャンセルを行えば設定は残るのですが、間違えて保存をすると本当に設定がクリアされてしまうので、注意が必要です。(昔からのバグですね)
Azure AD Connect(AAD Connect)を使ってオンプレミスのActive DirectoryからAzure Active Directory(Azure AD)へIDを同期する際、実環境においては同期元となるADドメイン上に複数のドメインコントローラが複数サイトに配置されている場合が多いと思います。
Synchronization Service Managerを開いて同期履歴を見ると使われたドメインコントローラがわかります。
AD DSの管理エージェントの設定の[Last used]を見ても確認できます。
◆同期元とするドメインコントローラを設定する
いよいよ同期元となるドメインコントローラを設定します。
同じくSynchronization Service ManagerのConnectorsメニューよりAD DS管理エージェントの設定を開き、[Only use preferred domain controllers]にチェックを入れ、[Configure]を開きます。
属性条件
・Macbook Air上のVMware Workstationで計測
・ホストスペック
OS : Windows 10 Pro x64
CPU : Core i7-4650U 2.3GHz
メモリ : 8GB
ディスク : SSD
VM : VMware Workstation 10
・ゲストスペック
OS : Windows Server 2012 R2
CPU : 1vCPU(2core)
メモリ : 4GB
・ミドルウェア(すべて1台に同居)
SQL Server 2014 Standard SP1
SharePoint Foundation 2013 SP1
Active Directory Domain Service
Microsoft Identity Manager 2016
- Synchronization Service
- MIM Service
- MIM Portal
・同期条件
入力(HR相当):CSVファイル
出力:ADDS
ユーザ件数:10,000
同期属性:
- Account Name
- Display Name
- First Name
- Last Name
- Department
同期条件:Department属性値がEIDENTITYとなっていること