インフラ クラウド 認証認可 / SSO Azure

【入門】SSOのためのAzureADとオンプレADのディレクトリ連携方法

2021年6月20日

今回は、AzureADとオンプレAD(以降単純にADと呼びます)のディレクトリ連携方法を紹介します。

IDaaSに限らず、インフラ基盤をいきなりクラウドに移行するのってどうしても抵抗があるかと思います。
そんなときに、ADを残しつつAzureADをSSOの認証基盤として活用するハイブリッド構成を提案します。

この構成によって、オンプレの基盤を残しつつ、AzureADを使うことができます。
もちろん、少し制約があったりわざわざ用意するサーバーがあったりするのですが、その部分もきちんと紹介します。

なお、ADとAzureADのドメイン参加については今回は触れず、また別の記事にて紹介します。
(今回は、ドメインコントローラーとしてのADとAzureADの連携に限ります)

そもそもAzureADってなに?という方は、【入門】AzureADの基礎知識とよくある誤解を先に見てみてください。

AADCを用意する

AzureADとADの連携方法は3通りあるのですが、いずれの方法だとしても、AADC(Azure Active Directory Connector)が必要になります。

AADCを使った全体像は、以下の通りになります。

「ディレクトリ同期」より引用

AADCはその名の通り、オンプレのADとAzureADのディレクトリを連携するためのコネクタとなるものです。
AADCはWindowsのアプリケーションで、Windowsサーバーにインストールすることで動かすことができます。

AADCはAzureADに関連するサービスではありますが、クラウドサービスではありません。
AADCは、オンプレ側で用意する必要があります。

AADCは、AzureCloud上からダウンロードができますので、インストーラをダウロードしてセットアップすることで使用できます。

AADCに関する注意点としては、オンプレ側に設置するということはオンプレ側で冗長化の構成を取る必要があるということです。
AADCに障害が発生した場合は、ADとAzureADの連携ができなくなってしまいます。

では、このAADCがあることも前提として、3つの方法を紹介します。

ADFS方式

「Azure AD とのフェデレーションとは」より引用

ADFS方式は、オンプレ内にADFSサーバーを用意し、DMZにADFSプロキシーサーバーを用意し、そこを中継して認証を行う仕組みです。

AzureADはレガシープロトコルに非対応で、ADはレガシープロトコルのみの対応となりますので、ADFSを間に中継することで互いにやりとりができるようになります。

オンプレ環境内からのユースケースでは、AzureADからADFSにリダイレクトし、認証後に発行されるトークンをAzureADに送ることで認証します。
外部環境からのユースケースでは、AzureADからADFSプロキシサーバーを通じてADFSにリダイレクトし、認証後に発行されるトークンをAzureADに送ることで認証をします。

メリット

パスワードをAD側で持つので、パスワードをクラウドに置きたくないという要件がある場合に対応できます。

デメリット

やはりなんといってもADFSサーバーを用意・管理するコストです。
また、DMZを用意したり制限付きとはいえインバウンド通信を許可したりとセキュリティ的な部分でも良いとはいえないでしょう。

パスワードハッシュの同期(PHA)

「Azure AD とのパスワード ハッシュ同期とは」より引用

パスワードハッシュの同期は、パスワードをハッシュ化してHTTPS通信で一定時間毎に連携する方式です。

ハッシュ化のアルゴリズムについては、ADの時に使われていた「MD4」よりも高いレベルで行われているとのことです。
また、同期間隔は2分間隔と定められており、変更することはできません。
(ちなみに、ディレクトリ同期はデフォルトで30分間隔ですし、変更も可能です)

オンプレ環境・外部環境それぞれのユースケースでは、ID/PWを送ることで認証ができます。
(なぜならば、両方ともパスワードの情報を持っているからです。)

注意点としては、AzureADとAD間で認証情報が連携されないので、AzureADの認証だけではADにサインインすることができません。
AzureADにサインインするだけで、オンプレでも認証される設定をする必要があります。

その設定は、シームレスSSO機能としてAADCに用意されています。
AzureADのシームレスSSO機能を有効にし、AADCで共有キーの共有する設定をすることで、この問題が解決します。

「Azure Active Directory シームレス シングル サインオン」より引用

メリット

新たに用意するサーバーがAADCだけなので、コストが低い。
また、AzureAD側はMicrosoft、AD側は自分たちでと何かあった時に責任を分けやすい。

デメリット

ハッシュ化されているとはいえ、パスワードがクラウド上に保存されます。
また、障害によって通信できなくなるとパスワードの同期ができなくなります。

パススルー認証

「Azure Active Directory パススルー認証によるユーザー サインイン」より引用

パススルー認証は、オンプレ側に用意したパススルー認証エージェントが定期的にAzureADの確認を行い、AzureADの認証情報をオンプレ側に連携をする方式です。

パススルー認証エージェントとは、AzureADの認証情報を定期的に取得するエージェントです。
AADCにて設定をすることができます。

オンプレ環境・外部環境それぞれのユースケースでは、ID/PWを送ることで認証ができます。
外部環境からの場合では、内部的には実際の認証はオンプレで行っています。

また、パスワード同期方式と同じく、シームレスSSOと共有キーの共有設定をしないと、AzureADとADのそれぞれで認証をしないとならなくなるので、注意しましょう。

メリット

オンプレ側ではインバウンドの通信を許可しないので、セキュリティレベルが高い。
また、パスワードはオンプレ側で持っているので、クラウドにパスワードを置きたくない要件に対応できます。

デメリット

特にありません。

まとめ

というわけで、ADFS方式・パスワードハッシュの同期・パススルー認証を紹介しました。
単純なメリット・デメリットを比較すると、パススルー認証を行うのが最も良いと思います。

ですが、現在の構成からどのようなステップでクラウド移行するのか、どのようなセキュリティポリシーで運用するのかなどによっても選ぶ選択肢は変わるとも思います。
ぜひ、ご自身の環境・目的に沿った選択をしてください。

ここまで読んでいただき、ありがとうございました!

AzureADを学習するのにおすすめの書籍

最後におすすめの書籍兼参考にした書籍を2冊紹介します。

1つ目は「ひと目でわかるAzure Active Directory 第3版」です。

AzureADの入門書とも言える書籍で、AzureADとは何か・何ができて何ができないのか・こういったユースケースではどうしたら良いかが記載されています。

この本の良いところは、図が非常に多くてAzureADの概念的なことが理解しやすいところです。
また、手順も記載されているのですが、ほとんどがスクショ付きで丁寧に記載されており、実際に操作するときに迷うこともないと思います。

AzureADについてネットで調べて、何となくは理解できたけど、もう少し具体的な知識を身につけたいという方におすすめです。

2つ目は、「脱オンプレミス!クラウド時代の認証基盤 Azure Active Directory 完全解説 IDaaSに対応するためのシステム設計とは」です。

こちらもAzureADの書籍ではあるのですが、1冊目よりもかなり技術的にレベルが高い書籍となっており、認証基盤の歴史やプロトコルの話が盛り込まれています。

元々英語で書かれた本を日本語に訳した形式にはなりますので、そういった面で多少読みにくさはあります。
ですが、ネットで調べた断片的な知識を体型的に紐づけることには役に立つと思います。

AzureADだけでなく、IDaaS/認証基盤についての深い技術的知識を身につけたいという方におすすめです。

以上、ここまで読んでいただきありがとうございました!

-インフラ, クラウド, 認証認可 / SSO, Azure
-, , ,