Hyper-VでAndroidを実行する方法 (Wi-Fi接続もあるよ)

ITインフラに関わる、様々なサービスや機能に関する検証を行う場合、WindowsマシンやLinuxマシン、場合によってMacOSを使って動作に関わる検証を行えば十分でしたが、最近ではスマートフォンやタブレットを使って会社のITシステムに接続する場合も増えてきたので、スマートフォンやタブレットも検証の対象に加えなければなりません。

しかし、スマートフォンやタブレットはPCと違って、仮想マシンを立ち上げて、すぐに検証というわけにはいきません。私自身、機会があってMicrosoft IntuneやAzure Active Directoryの検証を行うことが多いのですが、そのときにAndroidやiOSでの接続確認が何かと面倒くさかったりします。

そんな折、Android限定ですが、Hyper-Vの仮想マシンとして立ち上げる方法を見つけたので、
備忘録代わりとして載せておきます。

 

Androidイメージの用意

Android自体、フリーでOSを提供しているので、最新のOSをダウンロードして利用できます。

http://www.android-x86.org/download

上記サイトからAndroidのISOファイルをダウンロードしたら、
Hyper-Vで仮想マシンを作成し、ISOファイルをマウントすれば、、

ところが、いくつかのトラップが待ち受けています。
注意点を次から紹介します。

 

Hyper-V仮想マシンの作成

Hyper-Vの仮想マシンを作成自体は普通の作成方法で問題ありません。
ちなみに私は
次のパラメータで作成しました。

・仮想ディスク:第1世代 (必ず第1世代で作成してください)
・仮想ディスクの容量:可変32GB (普通のスマートフォンでもだいたいこれくらいですよね)
・仮想メモリの容量:1024MB (1GB程度割り当てておくと、スムーズに動作します)
・仮想スイッチ:接続しない
・インストールオプション:ダウンロードしたISOファイルを指定

仮想スイッチですが、普通の仮想スイッチはAndroidの仮想マシンで認識しないため、
レガシネットワークアダプターを利用しなければなりません。
Hyper-V仮想マシンの設定画面で、[ハードウェアの追加]から[レガシネットワークアダプター]を追加します。

image

それから、既存のネットワークアダプターは使わないので、削除しておきます。
最後にレガシネットワークアダプターに外部仮想スイッチを割り当てて完了。
最終的に以下のような設定になります。

image

ここまでで設定は完了です。
Android自体はCDブートで動作するので、仮想マシンの電源を入れれば、
Androidが使い始められるようになります。

image

また、デフォルトではネットワーク接続がオフの状態なので、Wi-Fi(ランチャーから[設定]を起動して操作)も起動しておきます。
(Androidの初期設定が完了してからでないと、Wi-Fiはオンにできません)

image

これで、すべてがうまくいきます。
Hyper-Vホストのネットワークが有線LANならば。

 

Hyper-Vホストが無線LANを利用している場合の設定

ここまで紹介した設定はHyper-Vホストが有線LANを利用していることを前提にしています。
そのため、SurfaceのようなWi-Fiしか装備していないノートPCで
Hyper-Vを起動し、Androidを動かそうと思ったら、うまくいきません。

そこで、こんなひと手間をかけてみました。

image

Hyper-Vホストに内部仮想スイッチと外部仮想スイッチをそれぞれ作成し、
Android仮想マシンのレガシネットワークアダプターは
内部仮想スイッチを利用するように設定します。

そして、外部仮想スイッチは作成すると、ネットワークアダプター一覧は次のように表示されるので、
外部仮想スイッチのプロパティを開きます。

image

ネットワークアダプターのプロパティで[共有]タブを開き、インターネット接続の共有を以下のように設定します。[ホームネットワーク接続]には内部仮想スイッチ(下の画面ではvEthernet (Internal))を選択します。

image

こうすれば、Android仮想マシン→内部仮想スイッチ→外部仮想スイッチ→インターネットという
接続になり、Wi-Fiを利用している環境でもAndroid仮想マシンが利用できるようになります。

これで普通のAndroidと同じように使えるのですが、
自動消灯(スリープ)の設定が有効になっていると、
一定時間経過したのちスリープに入り、二度とマシンを操作できなくなります。
利用するときはスリープ([設定]-[ディスプレイ])をオフにしておくことをお勧めします。

【Azure AD】パスワードリセットのログ

皆さん、こんにちは。国井です。

今日は完全な備忘録です。
2014年7月に「クラウドからActive Directoryのパスワードを変更する方法」という投稿で、
Azure Active Directory Premiumを利用することで、Microsoft Azure のユーザー用ポータル画面であるアクセスパネルからパスワードをリセットし、オンプレミスのActive Directoryのパスワードをリセットさせることができると紹介しました。

そのパスワードリセット機能を利用した場合、ディレクトリ同期ツールを使ってAzureユーザーのパスワードをオンプレミスADユーザーに同期しますが、この同期は3時間に1回のタイミングで行われる同期ではなく、別のプロセスによって行われています。そのため、miisclient.exeのOperationsログからはパスワードが同期されたことを確認できません。

そこで、パスワードの同期はイベントビューアからアプリケーションログを使って確認します。

image

image

パスワード同期が始まったことはPasswordResetServiceソースのID31001、同期完了はID3002でそれぞれ確認できます。

誰かの役に立てれば幸いです。

 

 

ディレクトリ同期を今すぐ実行する方法 – AADSync版

皆さんこんにちは、国井です。

2014年10月に「ディレクトリ同期を今すぐ実行する方法 – 2014年版」という投稿をさせていただき、
Start-OnlineCoexistenceSyncコマンドレットが有効だという話をさせていただきました。

ところが、前回の投稿でも登場したAADSyncでは、Start-OnlineCoexistenceSyncコマンドレットがなくなり、DirSyncで行っていたディレクトリ同期を今すぐ実行する方法が利用できなくなりました。

では、AADSyncツールではどうやってディレクトリ同期を今すぐ実行するか?

その答えはタスクスケジューラにありました。

[タスクスケジューラ]管理ツールからAADSyncのタスク(Azure AD Sync Scheduler)を開き、右ペインの[実行]をクリックすれば、いつでも実行開始できます。

image
([トリガー]タブを見ると、3時間ごとに同期タスクを実行するように設定されていることがわかりますね)

また、[操作]タブを見ると、c:\program files\microsoft azure ad sync\binフォルダーにある
DirectorySyncClientCmd.exeが同期実行のプログラムになっていることが確認できます。

image

 

つまり、DirectorySyncClientCmd.exeを実行すれば、ディレクトリ同期を今すぐ実行できることがわかります。

Office 365管理者のためのディレクトリ同期ツール入門 AADSync編

皆さん、こんにちは。国井です。

Office 365管理者のためのディレクトリ同期ツール入門シリーズの最後は
Azure Active Directory Sync(AADSync)ツールについてです。

2015年1月時点では、Office 365管理ポータルからダウンロード可能な
ディレクトリ同期ツールはDirSyncツールですが、将来的にAADSyncツールに
置き換わるものと思われます。

AADSyncツールを使うと嬉しいことは、なんと言っても
マルチフォレストでのディレクトリ同期に対応していること!

ということで、今回はAADSyncツールを確認してみましょう。

■ ■ ■

まず、AADSyncツールはマイクロソフトのダウンロードサイトよりダウンロードできます。
ダウンロードサイトを見ると、英語版のみがダウンロード可能であるかのように書いてありますが、
実際にはマルチランゲージ対応なので、日本語OSにインストールすれば、
セットアップウィザードは日本語になります。

AADSyncのインストールは至って簡単で、セットアッププログラムを起動して
インストールパスを指定するだけ。

AAD001

インストールが終わると、ディレクトリ同期に関する情報を設定します。
なお、ここから先の設定はデスクトップに作成されるショートカットから
改めて実行することも可能です。

image

AAD004

ここで、複数のフォレスト(ドメイン)を指定すれば、待望のマルチフォレスト対応が実現します!
ですが、今回はシングルフォレストで先を急ぎます。

AAD005

ディレクトリ同期を行う際、どの属性を使ってADユーザーとAzure ADユーザーを
マッピングするか?についての設定です。
Alternate Login IDの機能を利用する場合はここでカスタマイズします。

AAD006

パスワード同期を行うか?パスワードライトバック機能を使うか?などを
選択できます。ちなみにパスワードライトバックとは、Azure AD Premiumに含まれる
セルフサービスのパスワードリセット機能でパスワードをリセットしたときに、リセットしたパスワードを
オンプレミスのActive Directoryに同期させる機能です。
(「クラウドからActive Directoryのパスワードを変更する方法」で紹介したEnable-OnlinePasswordWriteBackに相当する操作です)
それから、Azure ADアプリと属性フィルターについては話が長くなるので場を改めて紹介します。

AAD008

残りはすべて次へ進めていくとウィザードが完了します。

AAD011

AAD012

AADSyncもDirSyncと同様にmiisclient.exeツールは用意されています。
ただしパスはc:\Program Files\Microsoft Azure AD Sync\UIShellに変更になりました。

AAD013

画面構成はDirSyncツールと基本的には同じですが、[Joiner]メニューはなくなりました。

image

Connectorsメニューを見ると、MAの名前がドメイン名になっています。
カンの良い人なら、もうお気づきですね。
マルチフォレストの場合はフォレストごとにMAが作られます。

image

先ほど、オブジェクトのマッピングを担当するJoinerメニューはなくなったといいましたが、
正確には別ツールで用意されるようになった、というのが正しい表現です。
miisclientツールと同じフォルダーにSyncRulesEditor.exeという名前で用意されています。

image

Synchronization Rules Editorツールでは、マッピングに関する設定ができます。
マッピングだけでなく、同期に関するフィルター設定などもすべてここで行うことになります。
このあたりはMVPふじえさんの[AAD/Office365]AAD Sync Betaを試すでも
紹介しているので、ぜひご一読ください。

image

Synchronization Rules EditorツールにあるInboundとOutboundというのは
Forefront Identity Managerで登場する着信同期規則(ISR)と発信同期規則(OSR)のことです。FIMだとFIM専用のポータルサイトから規則を作成しますが、Synchronization Rules Editorツールではすべてこの画面から作成します。

こうやって見ると、AADSyncツールを使いこなすにはFIMの知識が必要になってきていることがわかりますね。FIMを学習するリソースは世の中に多くないので、ちょっと苦労しそうです。

 

2014年に最も読まれた投稿ランキング

国井です。2015年最初の投稿では、毎年当ブログ内で最も読まれた投稿をご紹介していますが、
今回は、その2014年版をご紹介します。

 

第1位 【101シリーズ】パフォーマンスモニタ徹底攻略 ~ パフォーマンスの確認編
この投稿は、今はもうなくなってしまった商用サイトで執筆させていただいた内容なのですが、
思いのほか反響が大きかったので、転載させていただいたものです。
パフォーマンスモニタのカウンターについては色々な見かた、考えかたがあると思いますが、
その中でも私なりの考えを皆と共有できたことはうれしく思います。


第2位 忘れたAdministratorパスワードを変更する方法
最も読まれた投稿ランキングを書くようになってから、初めてこの投稿が第1位から外れました。
新しいOSでも使えるのですか?というご質問もよくいただくので、合わせて書かせてもらった
忘れた管理者パスワードを変更する方法 – Windows 8.1編」はGunosyでも取り上げてもらったせいか、ある一時だけページビューが跳ね上がっていたときもありました。


第3位 ADFSとは?フェデレーションとは?を知る方法
ここ数年、ADFSを中心とするID連携(フェデレーション)技術について、ブログの中で多くの投稿をしてきましたが、その中でも最もよく読まれたのがこの投稿です。Office365の台頭と共にADFSやフェデレーションという言葉をよく聞くようになったのではないかと分析しています。


第4位 【101シリーズ】パフォーマンスモニタ徹底攻略 ~ 基礎編
第1位の投稿と同じく商用サイトで執筆させていただいた内容の転載です。
パフォーマンスモニタそのものの使い方を紹介しているサイトって、あまり無いのか、
見ていただくことが多かったようですし、「参考になりました!」との声をいただくこともありました(多謝!)。


第5位 Office 365にADFSが必要な理由
第3位と同じくADFSに関する投稿です。このような動向を見ると、
2014年は皆がOffice365+ADFSの構成に興味を持ち始めた段階であり、
2015年は実際の導入が増える段階になってくるのかな?などと想像できますね。
果たしてこの予想が当たるか、外れるか、
今年1年間、私はITトレーナーとしてその動向を見守り続けたいと思います。

 

今年も1年、どうぞよろしくお願いいたします。

Office 365管理者のためのディレクトリ同期ツール入門(3)

みなさん、こんにちは。国井です。

今回はOffice 365管理者のためのディレクトリ同期ツール入門の第3回目として
ディレクトリ同期ツールを使ってディレクトリの同期が一部のユーザーだけで行われるように構成する方法について紹介します。

まずは前回も紹介したスライドから。

image10[1]

前回も、その前も、Active Directory Connector MA(ADMA)とWindows Azure Active Directory MA(AzureMA)がディレクトリ同期ツール内に作られ、メタバースを経由して同期が行われることを紹介しました。
そして今回、ADMAでフィルターを設定し、同期しないオブジェクトがメタバースに書き込まれないように構成することで、一部のユーザーだけがOffice 365(Microsoft Azure Active Directory)へ同期される方法を
いくつか見たいと思います。

 

■その1:同期されるドメインのフィルター

同期を行うActive Directoryドメインが複数ドメイン(シングルフォレスト–マルチドメイン)構成の場合、一部のドメインユーザーだけが同期されるように構成することができます。その場合、ADMAのプロパティを開いて、[Configure Directory Partitions]から該当するドメインにチェックをつけます。
これだけで同期対象となるドメインを絞り込むことができます。

MIIS023

 

■その2:同期されるOUのフィルター

同期を行うActive Directoryドメインの中から一部のOUだけを対象に同期させたい場合には該当するOUだけを選んで同期させることができます。その場合、ADMAのプロパティを開いて、[Configure Directory Partitions]から[Containers]をクリックして、該当するOUにチェックをつけます。

MIIS026

 

■その3:同期されるユーザーのフィルター

同期を行うActive Directoryドメインの中から特定の属性を持つユーザーだけを対象に同期させたい場合、同期対象となる属性とその値を設定することができます。
その場合、ADMAのプロパティを開いて、[Configure Connector Filter]から[Data Source Object Type]の[User]をクリックして、Filterを設定します。Filterには同期させたくない属性とその値を設定します。

MIIS027

ディレクトリ同期を使っていて、Administratorユーザーがなんで同期されないの?ディレクトリ同期ツールをインストールすると作られるMSOL_の名前で始まるユーザーがなんで同期されないの?という疑問を持った方も多いと思いますが、それはこのフィルターが設定されているからです。

たとえば、Administratorの場合、isCriticalSystemObject属性がTrueと設定されています。そのため、フィルターの設定により同期されません。また、MSOL_の名前で始まるユーザーもsAMAccountName属性がMSOLで始まる場合には同期されないようにフィルター設定が施されています。そのため、同期されないのです。このように、デフォルトでは15個のフィルターが設定されていますが、管理者がフィルター設定を増やせば、もっと様々な条件をもとに同期するユーザーを絞り込むことができます。

他にもフィルターする方法はいろいろ考えられますが、大きなところとしては以上の3つが使われる可能性の高いフィルターといえます。みなさんの会社のニーズに合わせてぜひ活用してみてください。

2014年の投稿もこれで終了です。
それでは、よいお年をお過ごしください。
Hoping you enjoy a happy new year!

 

■参考サイト
Office 365 Directory Synchronization In-Depth
http://www.messageops.com/documentation/office-365-documentation/office-365-directory-synchronization-in-depth

Active Directory Filtering for Office 365 Directory Synchronisation (Dirsync)
http://netwovenblogs.com/2014/12/02/moving-from-on-premise-to-office-365windows-azure-part-4/

FIM2010 Terminology and Glossary
http://technet.microsoft.com/en-us/library/ee534910(v=WS.10).aspx

Office 365管理者のためのディレクトリ同期ツール入門(2)

みなさん、こんにちは。国井です。

前回、Office 365管理者のためのディレクトリ同期ツール入門の第1回目としてディレクトリ同期ツールのUIツールであるmiisclient.exeの起動方法と簡単な見方を紹介しました。

今回はディレクトリ同期ツールによる同期がどのような流れで行われているか見てみましょう。

まずは前回も紹介したスライドから。

image

Active Directory Connector MA(ADMA)とWindows Azure Active Directory MA(AzureMA)がディレクトリ同期ツール内に作られ、メタバースを経由して同期が行われることを紹介しましたが、具体的にどのようなルートで同期が行われるかについてもMAでは定義されています。

MAで定義されている同期の(基本)ルートは次のとおりです。

1.Active DirectoryからADMAのCSへ同期
(図の1-1に当たるImportという処理で実現しています)

2.ADMAのCSからメタバースへ同期
(図の1-2に当たるSynchronizationという処理で実現しています)

3.Azure ADからAzureMAのCSへ同期
(図の2-1に当たるImportという処理で実現しています)

4.AzureMAからメタバースへ同期
(図の2-2に当たるSynchronizationという処理で実現しています)

5.メタバース内のデータをAzure ADと同期
(図の3に当たるExportという処理で実現しています)

以上がディレクトリ同期の流れになります。
Active DirectoryとAzure ADのそれぞれからImportとSynchronizationを実行し、メタバースにデータを格納しているのはそれぞれのディレクトリに格納されている情報を把握し、差分だけをエクスポートできるようにするためです。

これらの処理は3時間に一度、自動的に行われているため、私たちは意識することがありませんが、これを手動で行いたいとなったら、どのような操作を行えばよいでしょうか?

この点について、続いて見てみましょう。

まずは前回も紹介した、miisclient.exeを起動し、Management Agentsを開き、
Active Directory Connectorを右クリックして、Runをクリックします。

image

すると、Run Profile一覧が表示され、ImportやSynchronizationなどが選択できることが確認できます。

MIIS012

ImportとSynchronizationは同時に行うプロファイルが用意されているので、これを利用すれば便利ですが、すべてのオブジェクトを対象にインポートや同期を行うFull~と前回実行時からの差分だけをインポート/同期するDelta~があることに注意してください。

このことを踏まえて、前の図の1-1~3までを順番に実行すれば、手動でディレクトリ同期を実行することができます。

【コラム】ディレクトリ同期ツール/FIMのトレーニングの現状

一般的にマイクロソフトが提供する製品やサービスに対応するトレーニングは
Microsoft Universityコースとして認定トレーニングプロバイダ(CPLS企業)から提供されます。
しかし、ディレクトリ同期ツールをつかさどるForefront Identity Manager (FIM)の
トレーニングは本稿執筆時点では日本語版も、英語版で提供する企業もありません。

一方、FIMはインストールや初期設定から苦労させられる面倒な製品ですし、
お使いになる機会がありましたら、時間やコストを削減するためにも
一度トレーニングを受けていただきたいのです。

そのため、もしトレーニングを通じてしっかりベースを学習したいということでしたら、
クリエ・イルミネート社と一緒にトレーニングをアレンジメントさせていただくことができますので、気軽に私のメールアドレス(画面右上に書いてあります)またはクリエ・イルミネート社までお問い合わせください。

同期の実行結果はmiisclient.exeのOperationsメニューから確認できます。
それぞれの項目をクリックし、左下ペインを参照すれば、ImportやSynchronizationなどの処理によって、どれだけのオブジェクトの同期が行われたかを確認できますし、リンク(下の図で言うとAdds 6と書かれた部分)をクリックすれば具体的に同期されたオブジェクトを確認することができます。

MIIS002

ただし、オブジェクト一覧は以下のように表示され、私たちの見た目にわかる名前で表示してくれるわけではないので、あてずっぽうで適当なオブジェクトをダブルクリックし、

MIIS020

お目当てのオブジェクトが同期されているか、見つけるしかありません。。

image

最後はちょっと面倒でしたが、
ここまでのことができれば、トラブルが発生したときにトラブルシューティングの一環として、自分で、手動で、同期の処理を行うことができるようになり、「ディレクトリ同期ができない→途方に暮れる」だけではない、対策が自分でとれるようになるのです。

今日はここまでにしましょう。

次回は同期のフィルター設定を確認する予定です。

Office 365管理者のためのディレクトリ同期ツール入門(1)

 

みなさん、こんにちは。国井です。
今日はOffice 365 Advent Calendarに参加しております。

今日の内容はディレクトリ同期ツールです。
Office 365でActive DirectoryとOffice 365(Azure AD)の間でID情報を同期させる際、Office365のサイトからダウンロードして利用可能なディレクトリ同期ツールと呼ばれるツールを使います。ところが、このツール、実はマイクロソフトが提供しているディレクトリ同期サーバー製品である、Forefront Identity Manager(FIM)の簡易版であることをご存知でしたでしょうか?

ディレクトリ同期ツールは3時間に1回の割合で自動的にActive DirectoryのID情報をAzure ADへ同期してくれるので、メンテナンスフリーだと思うかもしれませんが、実際にトラブルに遭遇した場合、どこに問題の原因があるのか、自分である程度は調べられるようになりたいですよね。
そのようなときには、FIMの基本的なところをおさえておくと、役立つかもしれませんので、
実際の画面を見ながら基本を確認しておきましょう。

 

■FIMの処理概要
まず、FIMには3つの代表的なコンポーネントがあります。
それは、
・Management Agent (MA)
・Connector Space (CS)
・メタバース
の3つです。

image

Active DirectoryからAzure ADへ同期する場合、2つのディレクトリどうしを直接結んで同期しているわけではなく、メタバースと呼ばれるFIMが持つデータベースにいったん格納されます。

Active DirectoryとAzure ADでは対応する同じ属性名があるとは限りません。そのため、メタバースを一度経由することで、スキーマの違いを吸収しているのですね。

それから、Active Directoryに格納されているデータをメタバースに格納するとき、
Azure ADに格納されているデータをメタバースに格納するとき、それぞれ中間データベースにいったん格納します。このテンポラリとなるデータベースのことをConnector Space (CS)と呼んでいます。

また、Active Directoryの場合で言うと、Active DirectoryからCSを経由して最終的にメタバースにデータを格納する際、どのようなデータを格納すればよいか?や、Active Directory以外では使われない、グローバルグループ、ドメインローカルグループなどのグループ属性はメタバースにどのような属性として保存すればよいか?などの同期のためのルールを定めたものをManagement Agent(MA)と呼びます。

ディレクトリ同期ツールは、このようにインストールすることにより、メタバースの作成、MAの作成、MA内のCSの定義、同期フローの定義(これについては後で説明します)、などの設定を全部自動的に行ってくれるのです。だからみなさん、「ディレクトリ同期ツールのインストールが長い!」などと文句を言うはやめてあげてください。

 

■ディレクトリ同期ツール(FIM)の起動とインターフェイスの確認
簡単ですが、仕組みが確認できたら、続いてディレクトリ同期ツールを起動します。
ツールはc:\program files\Microsoft Azure Active Directory Sync\SYNCBUS\Synchronization Service\UIShell\miisclient.exeを実行すると利用できます。

MIIS001

実行するときに注意してほしいのは、インストール後、すぐに実行しないこと。
実行直後はmiisclient.exeにアクセスする権限が割り当てられていないので、
インストールが終わったら、一度サインアウト/サインインをしましょう。

その後、起動すると以下のような画面が表示されます。(FIMでも同じ画面です)
画面上部に
Operations, Management Agents, Metaverse Designer, Metaverse Search, Joinerのボタンがあります。これが大まかにメニューだと思ってください。

まず、Operationsメニュー。
Operationsメニューでは、過去のディレクトリ同期の結果が確認できます。ログの時刻を見てもらうと、おおよそ3時間ごとに同期が実行されていることが確認できます。

MIIS002

続いて、Management Agentsメニュー。
名前のとおり、MAが登録されている箇所です。画面には、
Windows Azure Active Directory Connector(Azure MA)とActive Directory Connector(AD MA)の2つがありますが、
前の図で説明すると、Azure MAはメタバースからAzure ADまでの同期を担当し、
AD MAはActive Directoryからメタバースまでの同期を担当しています。

image

次はMetaverse Designer。
Metaverse Designerはメタバースのスキーマを定義するところです。ディレクトリ同期ツールとしてFIMを使っている場合には、ほとんど設定変更することはないでしょう。

image

Metaverse Searchは名前のとおり、メタバースに登録されたID情報を検索するために使います。Scope by Object Typeからpersonと選んでいただいて検索すると、メタバースに登録されたユーザーの一覧が表示されます。検索結果はdisplayname属性で表示されますが、displayname属性を持たないユーザーがいると、画面に表示されません。だけど、空欄をダブルクリックすると、そのユーザーのプロパティが表示される不思議。

image

最後はJoinerです。JoinerはDisconnector Typeと呼ばれるID情報を表示できるところで、
「Active Directoryの国井ユーザーはAzure ADのKuniiユーザーとみなす」のような2つのIDの関連付けをFIMは行うことで同期を行うのですが、Joinerに表示されるのは関連付けがされていないIDの一覧になります。普通の管理では使うことはあまりないですね。

image

 

■メタバースとCSに登録されたオブジェクトの参照
画面は戻って、Metaverse Searchの検索結果について。
Metaverse Searchで検索したユーザーですが、検索結果のdisplaynameをダブルクリックすると、メタバースに登録されたユーザーの属性情報が確認できます。

image

さらに、Connectorsタブをクリックすると、経由したCS(MA)の名前が表示されます。このケースでは、Active Directory ConnectorとWindows Azure Active Directory Connectorをそれぞれ経由したということがわかります。

image

そして、CSの名前をダブルクリックすると、CSに登録されていた時点でのユーザーの属性情報が確認できます。メタバースと同じように見えますが、よく見ると、CSに保存されていたuserAccountControl属性はメタバースに入ると、消えてなくなっていることが確認できます。

image

このようにFIMの管理画面を見ると、ディレクトリ同期が正常に行えているか、そして同期ができていない場合には、どこに問題があるのか?ということを探るきっかけを色々と与えてくれます。

今日は長くなってしまったので、ここまでにしましょう。続きは次回の投稿で。

 

明日のOffice 365 Advent CalendarはADFS/Office365トレーニングの主催会社として、いつもお世話になっている沼口さんです。お楽しみに。

ADFSを利用してAWSにシングルサインオンする方法

みなさんこんにちは、国井です。

ADFSを使ってシングルサインオンを実現する方法として、ADFS+Office 365というのが有名ですが、ADFSサーバーを利用して実現できるシングルサインオンは何もOffice 365だけではありません。

ということで、今日は国井が担当しているADFSトレーニングでも扱っている、ID連携の手法のひとつである、ADFSとAmazon Web Services(AWS)を組み合わせて、Active DirectoryでサインインしたユーザーがADFSから発行されたトークンを利用してAWSにシングルサインオンする設定というのを見てみたいと思います。
(ちょっとだけ宣伝させてもらうと、ADFSトレーニングではOffice 365に限らず、お客様の要望に合わせて様々なクラウドサービスとのシングルサインオンの実装方法とその運用(デバイス認証/2要素認証、トラブルシューティングなど)を紹介しているので、ご興味があれば気軽にご参加ください。)

 

■ADFS+AWSの処理フロー
AWSのシングルサインオンにはSAMLプロトコルのIdp Initiatedプロファイルを使うため、Office 365のシングルサインオンのように、Office 365のサイトにアクセスしてからシングルサインオンを始めるのではなく、ADFSのサイトにアクセスしてからAWSにアクセスするという処理フローになります。
(そういえば、SalesforceのシングルサインオンもIdp Initiatedでしたね)

フロー図を書こうと思ったのですが、AWSのWebサイトの中で既に図が書かれていたので、
そちらを参考にしていただくとよいでしょう。

・オフィシャルアナウンスメント
http://aws.typepad.com/aws/2013/11/aws-identity-and-access-management-using-saml.html

 

なお、今回参考にさせてもらったWebサイトはAWSのWebサイトになります。こちらのサイトにも手順が掲載されているのだけれど、英語だったこと、ADFS2.0を使っていること、そして何よりも手順の中で何をしているかを自分自身がより深く知りたかったから、ということがあって今回の投稿を書いてみました。

■作業全体のながれ
1.ADFS→AWSへのフェデレーションメタデータのアップロード
2.AWSにグループを作成
3.Active Directoryにグループを作成
4.証明書利用者信頼とクレームルールの作成

さあ、早速始めましょう。

 

■フェデレーションメタデータの取得とアップロード
AWSとADFSの間で信頼関係を設定するにはフェデレーションメタデータの交換が必要ですので、最初にADFSサーバーのフェデレーションメタデータをAWSにアップロードします。

ADFSサーバーのフェデレーションメタデータ(https://<ADFSサーバー名>/federationmetadata/2007-06/federationmetadata.xml)にアクセスし、表示されたXMLファイルを名前を付けて保存します。(ちなみにIE11だと表示の関係上、無意味な文字列のように見えますが、互換表示設定でADFSサーバー名を追加すれば、ちゃんとXMLファイルの中身が確認できます)

image

image

そして保存したフェデレーションメタデータをAWSに登録します。

AWS Management ConsoleからIdentity & Access Managementを開き、Identity ProvidersからCreate SAML Providerでプロバイダを作成します。

image

プロバイダの作成画面で、プロバイダタイプにSAML、プロバイダ名にADFSと設定し、Metadata Documentの欄でメタデータをアップロードします。

image

ここまでで、SAMLプロバイダの作成とメタデータのアップロードが完了しました。

image

作成したSAMLプロバイダを開くと、Provider ARNという文字列が入っていますが、これはSAMLプロバイダの識別子であり、後で必要になるので、控えておきましょう。

image

 

■AWSのグループ作成
続いてAWSに権限が割り当てられたグループを作ります。
通常、ADFSによるID連携ではユーザー名で2つのシステムを連携させますが、AWSではグループを連携させます。ここでは画面のように、ADFS-DevとADFS-Productionsという2つのグループを作成しました。名前は何でもよいのですが、後ほどの手順の関係上、必ずADFS-で始まる名前にしてください。

image

グループのプロパティを開き、Trust RelationshipでTruested Entitiesに先ほど控えておいた識別子を登録しておきます。(ここの関係性がうまく説明できないのですが、ご存知の方がいたら、ご連絡いただけるとありがたいです)
2014年12月5日追記 Amazonの方からコメント欄でご説明をいただきました(感謝!)。ぜひご一読ください。

image

また、必要に応じてグループにはAWS内での操作権限を割り当てておいてください。

 

■Active DirectoryにAWS用のグループを作成
Active DirectoryにAWS用のグループを作成します。グループは必ずAWS-で始まる名前であること、それから、-(ハイフン)の後ろがAWSで作ったグループの名前と同じであることが必要です。
そこで、私はAWS-DevとAWS-Productionという名前のグループを作成しました。
また、グループにはAWSを利用するユーザーを追加しておくことも忘れずに。

 

■証明書利用者信頼の作成
操作はADFSサーバーに移って、証明書利用者信頼を作成し、AWSのフェデレーションメタデータの登録とAWSに渡すトークンに含まれるクレームの定義を行います。

ADFS管理ツールから証明書利用者信頼を右クリックし、[証明書利用者信頼への追加]をクリック。

image

[証明書利用者信頼の追加ウィザードの開始]画面で、開始をクリック

image

[データソースの選択]画面で、[フェデレーションメタデータのアドレス]欄に
「https://signin.aws.amazon.com/static/saml-metadata.xml」と入力します。
残りの画面はすべて次へをクリックして完了します。
(AWSのフェデレーションメタデータは公開されているので、URLを登録するだけでADFSサーバーが自動的に取りに行ってくれます。)

AWS003

証明書利用者信頼の追加ウィザードの最後で、チェックが付いたままの状態で完了すると、

AWS008

要求規則の編集画面が登場します。発行変換規則を追加します。

AWS009

要求規則テンプレートには[入力方向の要求を変換]を選択して、

AWS011

入力方向:Windowsアカウント名
出力方向:名前ID
出力方向の名前IDの形式:永続ID
となるようにクレームの設定をし、適当な要求規則名を入力して、完了をクリックします。

AWS012

再び、規則を追加します。

AWS013

要求規則テンプレートに[LDAP属性を要求として送信]を選択し、

AWS010

属性名:Active Directory
LDAP属性:E-Mail-Addresses
出力方向の属性の種類:https://aws.amazon.com/SAML/Attributes/RoleSessionName
となるようにクレームの設定をし、適当な要求規則名を入力して、完了をクリックします。

AWS014

再び、規則を追加します。

AWS015

要求規則テンプレートに[カスタム規則を使用して要求を送信]を選択し、

AWS017

クレームルールとして、次の内容を記述します。

c:[Type == “http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname&#8221;, Issuer == “AD AUTHORITY”] => add(store = “Active Directory”, types = (“http://temp/variable&#8221;), query = “;tokenGroups;{0}”, param = c.Value);

また、適当な要求規則名を入力して、完了をクリックします。

再び、規則を追加します。

AWS019

要求規則テンプレートに[カスタム規則を使用して要求を送信]を選択し、

AWS017

クレームルールとして、次の内容を記述します。

c:[Type == “http://temp/variable&#8221;, Value =~ “(?i)^AWS-“] => issue(Type = “https://aws.amazon.com/SAML/Attributes/Role&#8221;, Value = RegExReplace(c.Value, “AWS-“, “arn:aws:iam::123456789012:saml-provider/ADFS,arn:aws:iam::123456789012:role/ADFS-“));

このルールにより、AWSに作ったAWS-で始まるグループとActive Directoryに作ったADFS-で始まるグループのマッピングがなされます。それから、arn:aws:iam::123456789012:saml-provider/ADFSの部分ですが、必ずAWS Management Consoleで確認した識別子に置き換えておいてください

また、適当な要求規則名を入力して、完了をクリックします。

AWS020

すべての画面を閉じて設定は完了です。

 

■アクセスの確認

ここまでできたら、アクセスを確認してみましょう。
SAML Idp Initiated用のURLである
https://<ADFSサーバー名>/adfs/ls/IdpInitiatedSignOn.aspx
にアクセスして、サインインすると、

image

自動的にAWS Management Consoleにリダイレクトされます。
ADFS-DevとADFS-Productionの両方のグループに所属しているユーザーの場合には、
どちらのグループとしてAWSに入るか、選択する画面が表示されます。

image

image

以上です。
AWSのシングルサインオンの場合、ユーザーを連携させるのではなく、
グループを連携させるという連携方法を採用しています。
このことは、ユーザーアカウントを同期させる手間が不要という意味で非常に便利なものだと思います。

また、ADFS経由でAWSにアクセスさせることで、ADFSお得意のデバイス認証や2要素認証などと組み合わせて利用できるということですので、この点も組織での効果的なシングルサインオンの実装を検討している方は見逃せないポイントですね。

Azure ADアカウントを利用したADFSのクレームベース認可

こんにちは、国井です。

ADFSでクレームベース認証(認可)を行う場合、Active Directoryユーザーで認証を済ませていることが前提でした。つまり、ADFSを利用する場合、Active Directoryは必須だったわけです。
(だからこそ、ADFS = Active Directoryフェデレーションサービスと呼んでいたわけですね)

ところが、Windows Server 2012 R2 の次のバージョンからADFSの認証に利用するディレクトリサービスとして、 Active Directory以外のディレクトリサービスが利用できることが発表されました。
これにより、とても選択肢が広がると思います。

しかし、現行のバージョンのADFSでも、実はActive Directoryを使わなくても、
サインイン認証を済ませて、ADFSからトークンを発行できるのをご存知でしたか?

本来はActive Directoryにサインインしたユーザーに対してトークンを発行していましたが、

image

Microsoft Azure Active Directory(Azure AD)で認証を行えば、ADでサインインしていないユーザーでもADFSからトークンが発行できるのです。

image

こんな感じで、認証画面でADとAzure AD、どちらでサインインするか選べるのです。

image

Azure ADでサインインしたユーザーを使ってADFS経由でサービスにアクセスできるようになれば、
私たちのサービス利用の選択肢も広がってくるというものです。
では、設定を見てみましょう。

 

ADFSサーバー側の設定

ADFSサーバー側では[要求プロバイダー信頼]を設定します。

ADFS管理ツールから[要求プロバイダー信頼]-[要求プロバイダー信頼の追加]をクリックします。

image

[要求プロバイダー信頼の追加ウィザード]が起動します。

image

[データソースの選択]で、[オンラインまたはローカルネットワークで公開されているプロバイダーについてのデータをインポートする]を選択し、フェデレーションメタデータとして、https://login.windows.net/<Azure ADドメイン名>/Federationmetadata/2007-06/Federationmetadata.xmlと入力します。

image

[表示名の指定]で、表示名となる名前を適当に入力します。

FSAzure004

ウィザードの残りの画面はすべてそのままで完了します。

image

FSAzure006

[要求規則の追加]画面が表示されるので、要求規則を追加します。

FSAzure007

[規則テンプレートの選択]で、[カスタム規則を使用して要求を送信]を選択します。

FSAzure008

[規則の構成]で、クレームルール言語を利用して規則を記述します。今回は、クレームルール言語として、すべてのクレームをそのまま発行するように、とりあえずc:[]=>Issue(claim=c);と書きました。
そのほか、[要求規則名]に適当な名前を入力して完了します。

FSAzure009

[OK]をクリックして完了です。

FSAzure010

(2014年11月17日追記)
証明書利用者信頼から要求変換規則を開き、要求規則として、受け付け変換規則と同じ
c:[]=>Issue(claim=c);を設定しておいてください。
これでADFS側の設定は完了です。

image

 

Azure側の設定

Azure AD側ではADFSサーバーとの間での信頼関係を設定します。
事前にMicrosoft Azure管理ポータルからAzure ADドメインが操作できるよう、ドメインの登録をしておいてください。 (具体的な登録方法はSEの雑記さんの「Azure のサブスクリプションを起点として Windows Azure Active Directory のディレクトリ同期を設定」を参考にしていただくと良いでしょう。)
その上で、ドメインのアプリケーションを追加します。

image

追加ボタンを押すと出てくる[実行する作業を選択してください]から[組織で開発中のアプリケーションを追加]をクリックします。

image

[アプリケーション情報の指定]で、適当な名前を付けて次へ進みます。

image

[アプリケーションのプロパティ]で、
サインオンURLに

https://<ADFSサーバー名>/adfs/ls/

アプリケーションIDに

http://<ADFSサーバー名>/adfs/services/trust

をそれぞれ入力します。

 

image

ここまでで設定は完了。では、サインインを試してみましょう。
(今回は証明書利用者信頼に Windows Indetity Foundation SDKの
サンプルWebサイトを登録しています。)
WebサイトのURLを入力してアクセスすると、サインイン先の選択画面が表示されます。
この画面で、Azure ADを選択すると、

image

Azureのサインイン画面に推移し、Azure ADのユーザー名とパスワードの入力を求められます。

image

サインインが完了すると、Webページにアクセスできました。

無題

(2014年11月17日追記)
証明書利用者信頼に規則を追加しておくのを忘れたため、トークンにクレームが何も入っていないという状態が起きました。そりゃそうですよね。ああ、恥ずかしい!

ところが、Windows Identity Foundation SDKのサンプルページを見るとわかりますが、
トークンに何もクレームが入っていない!のです。
Azure ADでサインインしたユーザーに、どうやってクレームを追加するか?
この部分についてはもうちょっと調べてみたいと思います。

■ ■ ■

なお、Active Directoryで認証してから、Azure ADの属性情報を要求規則の中で使いたいというニーズもあるでしょう。その場合には、ADFSのクレームにSQL Serverデータベースを使う方法でも紹介したように属性ストアを設定します。
ただし、デフォルトで選べる属性ストアにAzure ADはありません。そのため、Visual Studioでdllファイル(ライブラリ)を作りこんであげる必要があります。この点についてはマイクロソフトのWebサイトで手順が紹介されています。

■How to create a Custom Attribute Store for Active Directory Federation Services 3.0
http://blogs.technet.com/b/cloudpfe/archive/2013/12/27/how-to-create-a-custom-attribute-store-for-active-directory-federation-services-3-0.aspx

Using Windows Azure Active Directory as an Attribute Store in AD FS
http://blogs.technet.com/b/cloudpfe/archive/2014/03/25/using-windows-azure-active-directory-as-an-attribute-store-in-ad-fs.aspx

ただ、この中で紹介されているMicrosoft.WindowsAzure.ActiveDirectory.GraphHelperという名前空間、名前が変わってしまって今では使えなくなっているようなのですよね。。

今日はここまで。