SAMLとは?| SAML認証の仕組み

SAMLとは、ユーザーが認証済みであることを伝えるためにSSOプロバイダーが使用する技術基準です。

Share facebook icon linkedin icon twitter icon email icon

SAML

学習目的

この記事を読み終えると、以下のことができます。

  • Security Assertion Markup Language(SAML)について定義する
  • シングルサインオン(SSO)ワークフローにおけるSAMLの役割を理解する
  • SAMLアサーションについて説明する

SAMLとは?

Security Assertion Markup Language(SAML)とは、外部のアプリケーションおよびサービスにユーザーが本人であることを伝える標準化された方法のことです。SAMLは、ユーザーを一度認証してから認証を複数のアプリケーションに伝える方法を提供することでシングルサインオン(SSO)技術を可能にします。最新バージョンのSAMLはSAML 2.0です。

SAML認証をIDカードのようなものと考えてください。誰が誰かを示すための標準化された簡単な方法です。一連のDNAテストを実施して誰かの身元を確認しなくても、IDカードを見るだけで済みます。

コンピューティングとネットワーキングにおける最大の課題の1つは、異なる目的のために複数のベンダーが連携してシステムやデバイスを構築することです。このことを「相互運用性」と呼びます。異なる技術仕様であるにもかかわらず、異なるマシンが相互に対話できることです。相互運用可能な基準であるSAMLは、ユーザーのIDをクラウドサービスプロバイダーに伝達するための広く受け入れられている方法です。

シングルサインオン(SSO)とは?

シングルサインオン(SSO)とは、複数のアプリケーションやサービスのユーザーIDを一度に認証する方法のことです。SSOを使用することで、ユーザーは、1つのログイン画面でサインインするだけで、複数のアプリを使用することができます。ユーザーは使用するサービスごとに本人認証を行う必要がありません。

これを行うために、SSOシステムは、すべての外部アプリと交信して、ユーザーがサインインしたことを伝えなければなりません。ここでSAMLの出番です。

SAMLの仕組み

典型的なSSO認証プロセスには3人の関係者が関与します:

  • プリンシパル(「サブジェクト」とも呼ばれる)
  • IDプロバイダー
  • サービスプロバイダー

プリンシパル/サブジェクト:これは、ほとんどの場合、クラウドホスト型のアプリケーションにアクセスしようとしている人間のユーザーです。

IDプロバイダー:IDプロバイダー(IdP)とは、通常はログインプロセスを通じて、ユーザーIDを保存および確認するクラウドソフトウェアサービスのことです。基本的には、「この人を知っています。これが許可されているアクションです」と伝えるのが、IdPの役割です。SSOシステムは、IdPから分離されている場合がありますが、そうした場合、SSOはIdPの代理として機能するため、実質的にSAMLワークフローではいずれも同じ役割を果たします。

サービスプロバイダー:これは、ユーザーが使用するクラウドホスト型のアプリケーションまたはサービスです。一般的な例には、GmailやMicrosoft Office 365などのクラウドメールプラットフォーム、Google DriveやAWS S3などのクラウドストレージサービス、SlackやSkypeなどのコミュニケーションアプリなどがあります。通常、ユーザーは、そうしたサービスに直接ログインしますが、SSOを使用している場合、ユーザーはSSOにログインします。直接ログインする代わりにSAMLを通じてアクセスが許可されます。

典型的な流れは次のようになります:プリンシパル(ユーザー)がサービスプロバイダーにリクエストを送信します。次に、サービスプロバイダーがIDプロバイダーに認証を要求します。IDプロバイダーがSAMLアサーションをサービスプロバイダーに送信して、サービスプロバイダーが応答をプリンシパルに送信します。

プリンシパル(ユーザー)がまだログインしていない場合、IDプロバイダーはSAMLアサーションを送信する前にプリンシパルにログインするよう促します。

SAMLアサーションとは?

SAMLアサーションとは、ユーザーがサインインしたことをサービスプロバイダーに伝えるメッセージのことです。SAMLアサーションには、アサーションのソース、発行時刻、アサーションを有効にする条件を含む、サービスプロバイダーがユーザーIDを確認するのに必要なすべての情報が含まれます。

SAMLアサーションを求職者の身元紹介先の情報のようなものと考えてください。身元紹介先は、その求職者のその会社での勤務時期、勤務期間、就いていた職務、所感などを提供します。そうした情報に基づいて、会社はその求職者を採用するかどうかを決めます。同じようにSaaSアプリケーションやクラウドサービスはSAMLアサーションに基づいてユーザーアクセスを許可または拒否します。

SAML 2.0とは?

SAML 2.0は最新バージョンのSAMLであり、2005年以来使用されています。SAML 2.0は、これまで使用されてきた過去のバージョンのSAMLを組み合わせたものです。多くのシステムは、下位互換性のためにSAML 1.1のような以前のバージョンをサポートしていますが、SAML 2.0が最新の基準です。

SAML認証とユーザー承認は同じか?

SAMLは、ユーザー承認ではなくユーザー認証のための技術であり、それが重要な違いです。ユーザー承認とは、別の領域におけるID管理とアクセス管理のことです。

認証は、誰なのか、ログインプロセスにてIDが確認されたかどうか、ユーザーのIDを確認することです。

承認とは、ユーザーのアクセス権限またはアクセス許可のことを指します。具体的には、会社のシステム内でユーザーが実行できるアクションのことです。

認証と承認の違いを次のように考えてください:アリスが音楽祭に参加することを想像してみます。会場の入口で、チケットと本人であることを証明するための身分証を提示します。そうすることで、入場が許可されます。彼女は認証されたのです。

しかし、アリスは入場できたからといって、どこにでも行って好きなことができるわけではありません。演奏を聴くことはできますが、自分がステージに上がって演奏できるわけでも、バックステージに行って演奏者と話すことができるわけでもありません。それは、そうすることを彼女が許可されていないからです。彼女がバックステージパスを購入していた場合や彼女自身も演奏者だった場合、より大きな承認を与えられていたはずです。

アクセス管理技術は、ユーザー承認を処理します。アクセス管理プラットフォームは、複数の異なる承認基準(その1つがOAuth)を使用しますが、SAMLは使用しません。

Cloudflare Accessは、アクセス管理ソリューションの一例です。Cloudflare Accessにより、企業は、Virtual Private Network(VPN)を使用せずに社内のリソースやデータへのユーザーアクセスを管理することができます。Cloudflare AccessはSSOプロバイダーと容易に統合して、ユーザー承認とユーザー認証の両方を提供することができます。

SSOの詳細については、こちらをご覧ください。