【ゼロトラスト】なぜ、IAM/IDaaSによるID認証が必要なのか

音声で聞く

読む前にこの記事のポイントを音声で確認できます。この音声は本記事をもとにAIツール(NotebookLM)で自動生成したもので、発音や言い回しが不自然な箇所や、内容の誤りが含まれる可能性があります。理解の補助としてご利用ください。

アプリケーションのクラウド化やリモートワークの広がりにともない、セキュリティの考え方も、社内と社外を境界で分ける境界型から、ゼロトラストへ移ってきています。ゼロトラストでは、ID、デバイス、アプリケーションなどに対して、アクセスのたびにセキュリティのチェックをするのが原則です。その中でも、まず土台になるのが ID の管理と認証です。

Okta や Microsoft Entra ID に代表される IAM(Identity and Access Management)や IDaaS(Identity as a Service)という言葉はよく聞きますが、クラウドでどのように ID を認証・管理するのかは、イメージしにくいかもしれません。この記事では、Web アプリケーションの ID 認証が、従来の方式から IDaaS へどのように移り変わってきたのかを、仕組みのイメージがつかめるように整理します。細かいプロトコルの仕様よりも、全体の流れを優先しています。

この記事でわかること
  1. Web アプリごとの認証と、共通の認証サーバを使う認証の課題
  2. 認証を IdP に任せる方式(フェデレーション)と、SAML の認証の流れ
  3. アプリとユーザがインターネットに出たことで IDaaS が必要になる理由と、シングルサインオンの仕組み

初期のID認証

初期の Web アプリケーションでは、ユーザ ID やパスワードなどのユーザ情報を、Web アプリケーションごとにデータベースで管理していました。

認証フロー

ユーザが Web アプリにアクセスすると、Web アプリはログイン画面(認証フォーム)を表示します。ユーザはクレデンシャル(ユーザ ID とパスワード)を Web アプリに送り、Web アプリはユーザ情報を持つ DB に問い合わせて照合し、認証結果をユーザに返します。

ユーザ(tanaka)WebAPP-1ユーザ DB① Web アプリにアクセス② ログイン画面を表示③ ID とパスワードを送る④ ユーザ DB と照合⑤ 認証結果(OK/NG)を返すWeb アプリが ID とパスワードを受け取り、自分で認証している
図1 初期の ID 認証の流れ

課題①:ID管理がシステム個別

まず大きな問題は、ユーザ DB(ユーザ ID とパスワード)がシステム(Web アプリ)ごとに管理されていることです。Web アプリが複数あると、この問題がはっきり表れます。

ユーザは、システムごとにユーザ名とパスワードを覚えなければならず、シングルサインオンもできません。管理者も、ユーザの追加や削除をシステムごとに行う必要があります。

tanakasuzukiyamadaWebAPP-1ユーザ DB(WebAPP-1 用)tanaka / tanaka のパスワードsuzuki / suzuki のパスワードyamada / yamada のパスワードWebAPP-2ユーザ DB(WebAPP-2 用)tanaka / tanaka のパスワードyamada / yamada のパスワードユーザ DB がシステムごとにある:パスワードもシステムごと、ユーザの追加・削除もシステムごとに必要
図2 Web アプリごとにユーザ DB がある

課題②:クレデンシャルの扱い

ユーザは、クレデンシャル(ユーザ ID とパスワード)を Web アプリにそのまま渡しています。これはセキュリティ上、好ましくありません。Web アプリ側に何らかの仕掛けをされると、クレデンシャルを盗まれるおそれがあります。

課題③:認証処理

クレデンシャルを受け取った Web アプリは、ログイン画面の表示やユーザ DB への問い合わせなど、認証処理を自分で行っています。Web アプリの役割はサービスを提供することなので、認証処理は Web アプリから切り離すのが望ましい形です。

共通ID認証

次に、システムごとに管理していたユーザ DB を、共通の認証サーバで一元管理する形が考えられました。Web アプリは、受け取ったクレデンシャルを共通の認証サーバに問い合わせて確認します。

tanakaID/パスワードyamadaID/パスワードWebAPP-1WebAPP-2認証の確認認証の確認共通の認証サーバLDAP/Active Directoryユーザ情報を一元管理ID は一元化できたが、Web アプリごとに ID とパスワードを入力し、Web アプリが受け取って認証する
図3 共通の認証サーバを使う ID 認証

オンプレミスの企業環境では、共通の認証サーバとして LDAP サーバや Active Directory がよく使われます。オンプレミスでは、今もよく見かける構成です。システムごとに ID を管理する必要はなくなりましたが、まだ課題が残っています。

課題①:パスワード入力

ユーザは基本的に、Web アプリにアクセスするたびに、同じユーザ名とパスワードを Web アプリごとに入力する必要があります。シングルサインオンの環境ではありません。

課題②:クレデンシャルの扱い

初期の ID 認証と同じく、クレデンシャルは Web アプリに送られます。

課題③:認証処理

初期の ID 認証と同じく、Web アプリが認証処理を行います。

環境の変化(Webアプリがクラウドへ)

共通 ID 認証は、Web アプリがオンプレミスにある場合によく見かける構成です。ところが、Web アプリはどんどんクラウドへ移っています。

この構成のまま Web アプリがクラウドに移ると、クラウドの Web アプリが、オンプレミスの認証サーバ(LDAP や Active Directory)に認証の問い合わせをすることになります。社内の認証サーバをインターネット側から直接使えるようにすることになり、セキュリティ上は避けたい構成です。共通 ID 認証は、Web アプリと認証サーバが同じネットワーク(同じセキュリティレベル)にあることを前提にした仕組みだといえます。

インターネット(クラウド)オンプレWebAPP-1(SaaS)tanakaLDAP/ADID/パスワードインターネットからオンプレのLDAP/AD へ問い合わせることになる
図4 Web アプリだけがクラウドに移った場合

Web アプリと認証サーバが直接やり取りしないようにするために使われるのが、次の「認証を IdP に任せる方式」です。

認証をIdPに任せる方式(フェデレーション)

この方式では、サービスを提供する側(Web アプリ)が自分で認証サーバに問い合わせるのではなく、利用者(ブラウザ)を経由して、認証を専門のサーバに任せます。認証を任された側が認証し、その結果を Web アプリが信頼して受け入れる仕組みで、ID 連携(フェデレーション)と呼ばれます。

たとえで考える

お父さん、お母さん、子どもの3人がいるとします。子どもがお父さんにお菓子を買ってほしいとお願いしますが、買ってよいかどうかの判断はお母さんに任せます。お父さんが Web アプリ、お母さんが認証サーバ、子どもがユーザの役です。

共通 ID 認証の方式では、次のようになります。お父さんがお母さんに確認しに行き、買うかどうかはお父さんが決めます。お母さんは、確認を受けて答えるだけです。

お父さん= Web アプリお母さん= 認証サーバ子ども= ユーザ② どう思う?③ 買ってあげたら?① お菓子買って!④ 買ってあげる!お母さんは確認されるだけ。決めるのはお父さん
図5 共通 ID 認証をたとえると

認証を任せる方式では、お父さんはお母さんに聞きに行きません。子どもにお母さんのところへ聞きに行かせ、お父さんは、お母さんが許可したかどうかだけを子どもから聞きます。お父さんは、お母さんの判断に従います。

お父さん= SP(Web アプリ)お母さん= IdP(認証サーバ)子ども= ユーザ(ブラウザ)① お菓子買って!⑤ お母さん、いいって② お母さんに聞いて⑥ 買ってあげる!④ 買っていいよ③ お父さんが  聞いてってお父さんとお母さんは直接話さない
図6 認証を任せる方式をたとえると

SAML(Security Assertion Markup Language)

この方式でよく使われるのが、SAML(Security Assertion Markup Language)による認証です。SAML では、サービスを提供するアプリ側を SP(Service Provider)、ユーザ ID を持ち認証を行う側を IdP(Identity Provider)と呼びます。上のたとえでは、お父さんが SP、お母さんが IdP です。

Web アプリを SP とし、LDAP や Active Directory のユーザ ID を使って認証する IdP を別に置きます。Active Directory の環境では、代表的な IdP として AD FS(Active Directory フェデレーション サービス)が使われます。次の流れは、ユーザが SP(Web アプリ)にアクセスするところから始まる SP-Initiated の場合です。

SPIdPユーザ(ブラウザ)(オンプレ)SP(WebAPP-1)(クラウド)IdP(AD FS など)(オンプレ)LDAP/AD(オンプレ)① Web アプリにアクセス② IdP へリダイレクト③ IdP にアクセス④ ログイン画面⑤ ID とパスワードを入力⑥ ユーザ情報と照合⑦ SP へリダイレクト(認証結果)⑧ 認証結果を SP に渡すSP と IdP は直接通信せず、ブラウザ経由で認証要求と認証結果を受け渡す。ID とパスワードは IdP にだけ送る
図7 SAML の認証の流れ(SP-Initiated)
手順内容
① アクセスユーザが Web アプリ(SP)にアクセスする
② リダイレクトSP は、認証を IdP で行うよう、ブラウザを IdP へリダイレクトする(認証要求を持たせる)
③〜⑤ ログインユーザが IdP に接続すると、IdP がログイン画面を表示する。ユーザは ID とパスワードを IdP に入力する
⑥ 照合IdP が LDAP や Active Directory と連携して、ID とパスワードを確認する
⑦〜⑧ 結果を渡すIdP は認証結果を持たせてブラウザを SP へリダイレクトし、ユーザはその認証結果を SP に渡す。SP は認証結果を確認して、サービスの提供を始める

この流れでは、SP と IdP が直接やり取りしていません。認証要求と認証結果は、必ずブラウザ(ユーザ)を経由して受け渡されます。認証は IdP で行うので、クレデンシャルは SP(Web アプリ)に送られません。SP は、IdP で認証した結果だけを受け取ります。

補足
  • SAML でよく使われる受け渡し方法(バインディング)では、SP から IdP への認証要求を HTTP リダイレクトで、IdP から SP への認証結果を HTTP POST で、どちらもブラウザ経由で送ります。
  • 認証結果(アサーション)には IdP の署名が付いていて、SP は事前に受け取った IdP の証明書で、それが正しい IdP から届いたものかを確かめます。
  • IDaaS では、SAML のほかに OpenID Connect もよく使われます。

環境の変化(ユーザがインターネットへ)

リモートワークの普及などにより、ユーザはオンプレミスを経由せず、インターネットから直接、クラウド上の Web アプリ(SaaS)に接続するようになりました。

今までの構成のままユーザがインターネットに出ると、認証のためにインターネットからオンプレミスの IdP へ接続することになります。インターネットからオンプレミスへの接続になるので、セキュリティ上は基本的に好ましくありません。Active Directory の環境では、DMZ に AD FS のプロキシである WAP(Web アプリケーション プロキシ)を置き、WAP を経由させることで、インターネットからオンプレミスの AD FS で認証できるようにする構成もあります。

インターネット(クラウド)オンプレtanakaSPWebAPP-1IdPAD FS などLDAP/ADアクセスインターネットからオンプレの IdP に認証しに行くことになる
図8 ユーザがインターネットに出た場合

そこで、IdP の機能そのものもクラウドへ移す必要が出てきます。これが IDaaS(Identity as a Service)で、Okta や Microsoft Entra ID(旧 Azure Active Directory)がよく知られています。

IdP の機能はクラウドに移っても、ユーザ ID そのものは、人事システムなどの情報をオンプレミスの LDAP や Active Directory に連携して管理していることが一般的です。この場合は、オンプレミスの LDAP や Active Directory のユーザ ID 情報を、IDaaS に同期します。

インターネット(クラウド)オンプレtanakaSPWebAPP-1IDaaSIdPOkta、Microsoft Entra ID など認証は IDaaS でLDAP/AD人事システムなどID 情報を同期
図9 IDaaS と ID の同期

Active Directory から Microsoft Entra ID へは Microsoft Entra Connect(旧 Azure AD Connect)や Microsoft Entra Cloud Sync で、Okta へは Okta AD エージェントで、ユーザやグループを同期(取り込み)します。同期できる認証ソースや同期の手順は、IDaaS によって異なります。

現在の状況

Azure AD Connect は Microsoft Entra Connect に名前が変わっています。Microsoft は、クラウドから管理する Microsoft Entra Cloud Sync を今後の同期の方式として位置づけ、Microsoft Entra Connect からの移行を案内しています(2026年10月時点)。

シングルサインオン(SSO)

IdP と SP は別の組織(別のシステム)なので、あらかじめ信頼関係を結んでおき、IdP が認証 OK とした結果を SP が信頼できるようにしておく必要があります。SAML では、IdP と SP がお互いの情報(メタデータ:エンドポイントの URL や署名の証明書など)を事前に交換します。SAML の動作は、次の記事も参考にしてください。

複数の SP(WebAPP-1 と WebAPP-2)が IdP と信頼関係を結んでいる場合、ユーザが一度 WebAPP-1 の利用時に IdP で認証されていれば、信頼関係のあるほかの SP(WebAPP-2)にアクセスしたときも、IdP はクレデンシャルを入力させずに認証成功として扱います。ユーザはクレデンシャルを入力せずに SP にアクセスできるので、シングルサインオンが実現します。

SPWebAPP-1IdPSPWebAPP-2信頼関係信頼関係tanaka先に WebAPP-1 を使い、IdP で認証済み1接続2IdP へリダイレクト3認証 OK(入力なしで発行)4認証結果を SP に渡す
図10 シングルサインオンの仕組み

まとめ

方式ID の管理と認証課題・特徴
初期の ID 認証Web アプリごとのユーザ DB。Web アプリが認証ID がシステムごと。クレデンシャルを Web アプリに渡す
共通 ID 認証LDAP/AD で一元管理。Web アプリが問い合わせて認証アプリごとに入力。アプリがクラウドに出ると、認証サーバへの問い合わせが難しい
フェデレーション(SAML)IdP(AD FS など)が認証し、SP は結果だけを受け取るクレデンシャルは SP に渡らない。ユーザがインターネットに出ると、オンプレの IdP に接続することになる
IDaaSIdP をクラウドに置く。ID はオンプレから同期インターネット上のユーザとクラウドのアプリで認証が完結し、SSO もできる

コメント