皆さんこんにちは。国井です。
シェイクスピアも「ADFSにするか、Azure ADにするか、それが問題だ」と言ったように(うそ)、Office365をはじめとするサービスへのシングルサインオン(SSO)を実装する場合、ADFSを利用するか、Azure ADを利用するか、という選択肢で悩むことと思います。
基本的な選択基準は、ID基盤をオンプレミスのActive Directoryを中心に据えて、様々なクラウドサービスへのSSOを実装したいということであればADFSを選択することになるでしょうし、ID基盤を含めてすべてクラウドに移行してしまって運用したいということであればAzure ADを選択することになると思います。
2019年6月18日追記
久しぶりに過去の記事を読み返してみたら、今と3年前では全然違う結論になるのですね。2019年時点では、Azure AD Connectのシングルサインオン機能を利用すれば、ほぼADFSサーバーの機能を代替できるので、ADFSを選択しなければならないケースはほぼないと言っていいと思います。
特にWindows 10の場合、Active Directoryのドメイン参加とAzure ADのドメイン参加が選べるようになっていて、
Active Directoryにドメイン参加しているWindows 10 PCの場合はActive Directory(AD DS)にサインインすることで、以降の認証・認可は自動的に行われることになり(上図の最上段の青の矢印部分)、
Azure ADにドメイン参加しているWindows 10 PCの場合はAzure ADにサインインすることで、以降の認証・認可は自動的に行われることになります(上図の最下段の青の矢印部分)。
いずれの場合も、上図の中段のように、Windowsサインインでユーザー名/パスワードを入力して、Azure ADにサインインするのにユーザー名/パスワードを入力して、と何度もユーザー名/パスワードを入力する必要がないというメリットがどちらにもあります。
■ ■ ■
一方、企業で求められている要件によってID基盤をどちらの方法で運用をするか決めたい、というケースではADFSとAzure ADでどのような機能の違いがあるかを見極める必要があります。
そこで、ここではアクセス制御という点から、ADFSとAzure ADの違いを比較してみたいと思います。
ADFS | Azure AD | |
ユーザー | ・クレームルールを利用したグループによるアクセス制御 ・多要素認証 (証明書など) |
・グループによるアクセス制御 ・多要素認証 (モバイル) |
デバイス | ・デバイス認証 ・クレームルールによる次の制御 ・デバイスOS種類 ・ネットワークの場所 |
・デバイス認証 ・コンプライアンスポリシー ・ネットワークの場所 |
アプリ | ・クレームルールによる次の制御 ・クラウドサービス(RP) ・SAMLエンドポイント ・クライアントアプリ種類 |
・Cloud App Security |
リスク | ・ロックアウト ・管理者がイベントログから不正アクセスを調査し、必要に応じてアクセスをブロック |
・Azure AD Identity Protection |
こうやって見てみると、ADFSとAzure ADではアクセス制御機能に、大きな差はなくなってきていることがお分かりいただけると思います。
とは言うものの、これだけで結論付けてしまうのも、、って感じなので、もう少し細かく見てみましょう。
ユーザーベースのアクセス制御
ユーザーベースのアクセス制御はADFSも、Azure ADも、グループ単位でのアクセス制御機能を備えています。
ただし、Azure ADの場合、グループ単位でのアクセス制御は有償版のAzure AD Premiumで実装されています。ユーザー数がちょっと多い企業などですと、アクセス許可設定を行うだけでもひと苦労なので、有償版の利用は避けられないと思います。(うまいこと、できてますね)
また、ADFS/Azure ADともに多要素認証機能も実装されていますが、ADFSの場合は証明書ベース、Azure ADの場合はモバイルを利用した通話、SMSなどによる多要素認証をサポートしています。
デバイスベースのアクセス制御
ADFSとAzure ADでは、どちらもあらかじめ登録されたデバイスだけにアクセス許可を与える、デバイス認証機能が実装されています。
ただし、登録可能なOS種類だったり、アクセス制御が可能なクライアントブラウザーの種類だったりがあるので、細かくは確認しておく必要があります。
その他、ネットワークの場所(IPアドレスやサブネット)をベースにしたアクセス許可設定も可能です。ADFSとAzure ADのどちらでも設定可能なのですが、ADFSの場合はサブネットの指定が結構面倒なんですよね。
アプリベースのアクセス制御
Azure ADの場合は、Azure ADの有償版がセットになったパッケージ、Enterprise Mobility + Security (EMS)のライセンスの中に含まれるCloud App Securityを使って、特定のクラウドサービスへの不正アクセスを検出していく方法があります。
一方、ADFSの場合は証明書利用者信頼に登録されたクラウドサービスの単位でアクセスの許可・拒否をクレームルールで設定できるほか、クラウドサービスへアクセスするときにどのエンドポイントにアクセスするかによってアクセスを制御したり(Office 365の例で言うと、クライアントからどのようなアプリを利用してアクセスするかによって、利用するエンドポイントが異なります)、またはクライアントコンピューター上で利用するアプリ(Internet ExplorerやGoogle Chromeなど)をチェックしてアクセス許可を与える方法が実装できます。
リスクベースのアクセス制御
不正アクセスの可能性を検出し、アクセスをブロックするリスクベースのアクセス制御機能は、Azure ADでしたら、Azure AD Identity Protectionという有償版のAzure AD Premium P2から提供される機能を利用します。
ADFSの場合は、、リスクベースでアクセスをブロックしていく方法ってないんですよね。他のソリューションと組み合わせたり、管理者がイベントログをチェックしながら不正アクセスを手動で見つけていくとか、そういう方法が求められるのです。
■ ■ ■
それぞれの機能について説明しようと思ったら、過去の投稿で解説していることが多く、単なるまとめページになってしまいましたが、細かな差こそあるものの、ADFSとAzure ADでアクセス制御面での大きな差はないことはお分かりいただけたかと思います。