2016年1月8日金曜日

[MIM/FIM]間違ったオブジェクト削除を防ぐための仕組み

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

ID管理システムを本番環境で運用していると一番気を遣うのが、人事システムからわたってくるデータの間違いへの対応です。

ID管理システム自体はデータを生成するわけではないので、人事システムなどの信頼できるデータソースから従業員や組織に関する元情報を受け取り、そのデータをあらかじめ決めたポリシーに従ってActive Directoryやアプリケーションなどへ渡していきます。

つまり、ID管理システムが正しく動作するためにはデータソースから正しいデータがわたってきていることが大前提となっているわけです。

しかし、人事システムもあくまで人が運用しているシステム。社員情報を登録するのも人なわけで、必ず入力ミスは起きますし、データの受け渡しをするインターフェイスにバグが絶対に無いとは誰も言い切れるものではありません。

そのような前提を踏まえてID管理システムを設計~構築する時は、入力データのバリデーションをするための前処理を入れる検討をするなど、色々と気を使います。

その際に、まだ氏名の漢字間違い等であれば、あまり影響はないのですが、役職や組織などアクセス権に関する属性の間違い(これが意外と多いんです!)や、データの欠損を含む在籍状態の間違いなど、非常にインパクトの大きな間違いがしばしば発生するのも事実です。
間違って退職扱いになってしまい、各アプリケーションからIDが消えてしまったりするとリカバリを行うのに非常に大きな手間がかかりますし、特にActive DirectoryではObjectSidでIDを識別しているので、同じ名前でユーザを再作成すればよい、というものではなく大惨事を招いてしまいがちです。


各社のID管理製品は特にこのようなデータ削除に関する保護措置を用意しているものが多く、Microsoft Identity Manager(MIM)においてもあらかじめ設定した閾値を超えたオブジェクトの削除が一気に発生するとジョブを停止する機能「Specify number of deletions to process」が用意されています。
(昔からある機能なので、当然まだForefront Identity Manager(FIM)を使っていてもこの機能は使えます)


早速みてみます。

シナリオとしては、以下を想定してみます。

  • ユーザデータをCSVからMIMに取り込んでいる
  • 前日までの取り込みで現在MIM上に10,000ユーザが存在している
  • 人事システムとのインターフェイスの不備で取り込むCSVの大多数のレコードが消えてしまった


◆入力データ

 正しい入力データ(前日のデータ)はこちら。10,000件レコードが存在します


 しかし、当日2レコードしかないCSVがわたってきてしまいます。



 データ取り込み前まではMIM上に10,000件データが取り込めています。



◆何も考えずにデータを取り込む

 インポートすると、当然のことながら9,998件がDelete対象として認識されてしまいます。このままMetaverseへの同期処理を実行すると本気であちこち消えていきます。。。


◆一括削除防止機能を設定する

 インポート処理で削除が一定の件数を超えたら処理を止めるための設定を行いますので、CSV取り込み用のConnector SpaceのRun ProfilesのImport処理の中に設定項目が存在します。
 Thresholdの項目の中の「Specify number of deletions to process」にチェックを入れて、とりあえず10に設定してみます。
 ちなみにこの設定、一度設定~保存しても、再度設定の編集画面を開くと保存した内容が「表示上」はクリアされてしまいます。キャンセルを行えば設定は残るのですが、間違えて保存をすると本当に設定がクリアされてしまうので、注意が必要です。(昔からのバグですね)


◆取り込んでみる

 先の間違ったデータを取り込んでみます。
 すると、Statusが「stopped-deletion-limit」でジョブが停止しているのがわかります。


 削除対象としてマークされた件数も先ほど設定した10件になっていることがわかります。


 このようにジョブが異常終了してくれるので、後続で同期ジョブを流す前にConnector Spaceの段階でリカバリができ、大惨事を防ぐことが可能になります。

特に期初の大規模人事異動時などはこのような機能をうまく使って、上手にID運用をしていくとよいと思います。

2016年1月6日水曜日

[AAD Connect]特定のドメインコントローラからIDを同期する

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

Azure AD Connect(AAD Connect)を使ってオンプレミスのActive DirectoryからAzure Active Directory(Azure AD)へIDを同期する際、実環境においては同期元となるADドメイン上に複数のドメインコントローラが複数サイトに配置されている場合が多いと思います。

そのような場合、同期元とするドメインコントローラをある程度固定することでレプリケーションのタイムラグなどによる無用なトラブルを回避することが可能です。

※Forefront Identity Manager(FIM)やMicrosoft Identity Manager(MIM)を使っている方なら普通に行う設定ですが、AAD Connectについても考え方は同様で、正式にサポートされている方法です。


早速設定方法を見てみます。

◆AAD Connectの初期状態

複数ドメインコントローラが存在する環境にAAD Connectをインストールした状態です。
今回はds1-addsとds2-addsという2台のドメインコントローラを用意し、ds2-addsにAAD Connectを同居させているので、初期状態では自動的にds2-addsが同期元として選択されました。(基本的にネットワーク的に近い(ICMPのレスポンスが早い)サーバが自動選択される仕組みのはずです)

Synchronization Service Managerを開いて同期履歴を見ると使われたドメインコントローラがわかります。


AD DSの管理エージェントの設定の[Last used]を見ても確認できます。



◆同期元とするドメインコントローラを設定する

いよいよ同期元となるドメインコントローラを設定します。
同じくSynchronization Service ManagerのConnectorsメニューよりAD DS管理エージェントの設定を開き、[Only use preferred domain controllers]にチェックを入れ、[Configure]を開きます。


ここで使用するドメインコントローラのFQDNを入力・設定します。



この設定を行うことにより、設定したドメインコントローラからのみIDが同期されるようになります。

再度同期ジョブを流すと設定したドメインコントローラが使われることがわかります。



◆優先ドメインコントローラが停止している場合の動作

先に設定した状態だと、優先設定したドメインコントローラからのみしか同期が行われないため、設定したドメインコントローラが停止していると同期エラーが発生してしまいます。


この事態を回避するためにはPreferred DCに複数のドメインコントローラを設定するか、[Only use preferred domain controllers]のチェックを外しておきます。


こうすることで優先ドメインコントローラが停止していたら、他のドメインコントローラを使って同期ジョブが実行されるため、同期が停止することはありません。



まとめると、以下のような動作となりますので環境に応じて設定を変更してうまく運用していきましょう。
DC1DC2Preferred DCOnly use preferred domain controllers同期ジョブ
起動起動DC1チェックONDC1を利用して同期実行
停止起動DC1チェックON同期エラー
起動起動DC1チェックOFFDC1を利用して同期実行
停止起動DC1チェックOFFDC2を利用して同期実行


2016年1月2日土曜日

MVP Renewal 7th!!

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

早いもので、ついに7年目に突入しました。
(ということはこのブログも、もうすぐ9年目に・・・)



先日のMVP Program Updateを受けて、今回からはEnterprise Mobilityという分野での受賞となりました。(Identity and AccessはEnterprise Mobilityへ属することになりました)

実は昨年夏のMicrosoft Identity Manager 2016(MIM)のリリースを前にForefront Identity Manager(FIM)のカテゴリはDirectory Servicesと統合されたので、2015年7月からはDirectory Services(DS)に変わっていたんですが、あっという間に分野の再編が行われてしましました。。。

思えば最初に受賞した時はIdentity Lifecycle Manager(ILM)、すぐにFIMへ名称変更、そしてDSからEnterprise Mobility、、と7年間でここまでカテゴリ名が変わった人もいないんじゃないか?と思う程に名前が変わっていますね。。。


昨年は仕事の面でもアイデンティティ(特にIDaaS)に特化した年でしたし、@IT日経ネットワークなどの各種媒体にIDaaS(Identity as a Service)に関する記事を公開したり、ID&IT Management ConferenceOpenID Summit TokyoAsia MVP/RD Meetupをはじめとした各種イベントでの登壇の機会を数多く頂いた年でした。

今年もIDaaSに関するこの活動はしばらく続く見込みなので、今年こそ日本における「IDaaS元年!」を目指して活動を継続していきたいと思います。

皆さま引き続きよろしくお願いいたします!!

2015年12月30日水曜日

日経ネットワークにAzure AD特集を寄稿しました

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

久しぶりの紙媒体です。
今週頭に発売された日経ネットワーク 2016年1月号でAzure Active Directory特集を書かせていただきました。

Azure ADの存在自体をご存じない方を含めターゲットにしているため、内容的には「Azure ADとは?」などの基礎的な部分から、実際にアプリケーションとのID連携(SSO/プロビジョニング)を行う方法のウォークスルーまで、と広く浅く10ページ程度でまとめています。

尚、日経ネットワークって書店ではほとんど扱っておらず、定期購読していない場合は、以下の直販サイトから購入できますので、よろしければどうぞ。

 日経ネットワーク 2016年1月号
 http://ec.nikkeibp.co.jp/item/backno/NN0189.html


以下、ゲラの編集中のイメージです。

2015年12月22日火曜日

[告知]1月は「企業及びクラウドにおけるアイデンティティ管理セミナー」

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

最近なんだかんだで毎月イベントに呼んで頂いていますね。
(カレンダーを見たら9月から毎月登壇してました・・・)

1月は以前からお世話になっている日本ネットワークセキュリティ協会(JNSA)のID管理ワーキンググループの創立10周年記念イベント「企業及びクラウドにおけるアイデンティティ管理セミナー」が開催されます。
(今週頭の段階ですでに定員の半分以上の申込があるので、興味のある方はお早めに!!)

申込サイト
 http://www.jnsa.org/seminar/2016/0121/



以前も紹介しましたが、本ワーキンググループは2005年から活動をしており、主要な成果物として「クラウド環境におけるアイデンティティ管理ガイドライン」や「ロール管理ガイドライン」などを出版しています。

今回のセミナーでは10年の歩みを振り返りつつ、これまで作成してきた各種成果物の概要を解説しますので、かなり凝縮された濃い内容になると思います。

ちなみに私は上記アイデンティティ管理ガイドラインの中で紹介している「ID管理プロジェクトの進め方」について解説するセッションを担当しますが、他にも特権ID管理やロール管理に関するセッション、クラウドやID管理に取り組む上で避けて通れないEUデータ保護指令とどのように付き合うべきか、改正個人情報保護法とID管理に関連したセッション、本ワーキンググループが様々なベンダやコンサル、SIから構成されている特色が良く出るであろうパネルディスカッションも予定されています。

また、セミナー自体は2016年に食い込んでしまっていますが、今年2015年はActive Directoryの15周年にあたる年でもありますので、日本マイクロソフトの安納さんによるActive Directoryを振り返るセッションも予定されています。


いずれもかなり濃い内容になると思いますので、早めにお申し込みください!

2015年12月21日月曜日

[Azure AD/IDaaS]Web記事連載が一息つきました

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

夏から続けていた@ITへのIDaaS(Identity as a Service)関連の連載が先日終了したので、ラップアップをしてみます。



連載は以下でご覧いただけます。



全体をとおしてのテーマは「IDaaS」です。最近Azure ADはもちろん、OneLoginやPingOneなど各社のIDaaSが国内でも採用されてきているので、何故ここにきて「IDaaS」が注目されているのか?を「クラウド」、「モバイル」、「グループ&グローバル」の3つのキーワードで解説をしています。

また、第2回~第3回ではIDaaSの実装例としてAzure ADを例に何ができるのか?を「認証」、「ID管理」、「監査」の3つの側面から紹介しています。この中でAzure ADのアプリケーション連携のSSOやプロビジョニング機能、レポート機能の概要を解説しています。

最後は少し毛色を変えてWindows 10とAzure ADを組み合わせた場合を例に、IDaaSの別の一面であるデバイス管理について紹介しています。この中で、Microsoft Passportの仕組みをオンプレミスADでの統合Windows認証と対比しながら解説しています。



全体を通して、なるべく入門レベルを目指して書いているので、まず全体像を把握するための活用して頂けると幸いです。

尚、別の媒体(紙)でもAzure ADについて解説記事が近々公開される予定なので、また紹介したいと思います。


2015年12月11日金曜日

[Azure AD]PowerShellを使ってユーザの多要素認証設定を変更する

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

Azure ADで多要素認証を使う場合、ユーザ毎に有効/無効/強制の設定を行う必要があるため非常に面倒です。(CSVで一括設定することも可能ですが、リストファイルを作成して管理コンソールからアップロードする必要があるので、ユーザが増えてくると結果確認などを考えると結構面倒です)

そういう場合のPowerShellです。

早速方法を紹介します。

手順は割愛しますが、まずはConnect-MSolServiceで全体管理者の権限を持つユーザでAzureへ接続します。
※Azure PIM(特権ID管理)をうまく使ってヘルプデスクユーザへ一時的に権限を与えてスクリプトを実行させるとセキュアで便利です。この辺りはそのうち細かく紹介したいと思います。

うまく接続できたら、早速設定をしてみます。

◆有効
以下を実行します。
PS C:\> $auth = New-Object -TypeName Microsoft.Online.Administration.StrongAuthenticationRequirement
PS C:\> $auth.RelyingParty = "*"
PS C:\> Set-MsolUser -UserPrincipalName mfa@xxxx.onmicrosoft.com -StrongAuthenticationRequirements @($auth)




管理コンソールで確認すると有効化されていることがわかります。



◆無効
同様に無効化です。
PS C:\> Set-MsolUser -UserPrincipalName mfa@xxxx.onmicrosoft.com -StrongAuthenticationRequirements @()




@()で空の配列をStrongAuthenticationRequirementsに渡してあげます。
管理コンソールを見ると無効化されていることがわかります。



◆強制
最後に強制です。
PS C:\> $auth = New-Object -TypeName Microsoft.Online.Administration.StrongAuthenticationRequirement
PS C:\> $auth.RelyingParty = "*"
PS C:\> $auth.State = "Enforced"
PS C:\> Set-MsolUser -UserPrincipalName mfa@xxxx.onmicrosoft.com -StrongAuthenticationRequirements @($auth)




少しトリッキーです。$auth.StateにEnforcedをセットします。

管理コンソールで確認します。




尚、設定結果の取得ですが、上記では管理コンソールでの目視をしましたが、もちろん以下のようにGet-MsolUserを使って確認することも可能です。
PS C:\> $user = Get-MsolUser -UserPrincipalName mfa@xxxx.onmicrosoft.com
PS C:\> $auth = $user.StrongAuthenticationRequirements
PS C:\> $auth | fl





この辺りをうまく使ってAzure ADの管理体制を上手に運用していけるといいですね。
※本当は全体管理者権限ではなく、もう少し細かい権限がほしいところです・・・