複数のクラウドサービスを利用するのが当たり前になった昨今、シングルサインオン(SSO)を導入する企業が増えています。
なかでも企業への導入で注目を高めているのが、主要なクラウドサービスの多くが対応している「SAML」という認証方式です。そこで本記事では、SAML認証によるシングルサインオンの仕組みや特徴、OAuthやOIDCとの違いなどについて分かりやすく解説します。
SAMLとは
SAMLとは"Security Assertion Markup Language"の略称で、シングルサインオン(SSO)を実現するための認証方式の1つです。
シングルサインオンとは、1度の認証操作で複数のWebサービスやクラウドサービスにログインするためのサービスを意味します。用途に応じていくつものクラウドサービスを利用することが増えた今日、シングルサインオンは認証操作や認証情報の管理の負担を軽減し、快適なアクセス環境を確保するための重要な手段として注目を集めています。
シングルサインオンを実現する仕組みは「エージェント方式」や「代理認証方式」など複数あり、SAMLもその主要なタイプの1つです。現在の主要なクラウドサービスの多くはSAMLに対応しているため、シングルサインオンを導入する際はSAML方式のサービスを利用する優先度が高くなっています。
SAML認証に関する用語解説
まずは、SAML認証を解説する上で重要なシステムである「IdP」と「SP」から解説します。SAML認証の流れを理解するためにも、これらのシステムの違いや関係性を理解しましょう。
IdP(Identity Provider)
IdPは「Identity Provider」の略で「アイディーピー」と読みます。
IdPは、ユーザーの認証情報(Identiy)を管理し、外部に提供するサービスを指します。認証のユーザーがログインする際に利用するIDやユーザーに付随する属性情報、そのユーザーがどのようなことができるのかを表す「権限」といった情報を管理し、後述のSPへ連携します。
そのため、SPにはユーザーがログインするためのパスワードなどは保管されず、ログインなどの認証はすべてIdPにて実施します。
SP(Service Provider)
SPは「Service Provider」の略で、「エスピー」と読みます。
IdPがユーザーの情報を管理するのに対し、ユーザーに対してサービスとしての機能を提供するのがSPです。IdPで認証された情報をもとにユーザーを正規のユーザーとして扱い、そのユーザーに対してサービスを提供します。IdPからはログインの結果の他にそのユーザーに対する権限も取得できますので、その権限を使うことで管理者向けの機能を許可したり、特定の契約があるユーザーにのみ機能を開放したりすることも可能です。
SAML認証の仕組みと認証フロー
では、SAMLはシングルサインオンをどのような仕組みで実現するのでしょうか。
SPがSAML経由で認証措置をするように構成されると、そのサービスにアクセスしようとするユーザーは、ログイン先のSPに固有のID/パスワードの入力をする必要はありません。
代わりに、SPはSAMLを経由してIdPへユーザーの認証リクエストを送信し、ユーザーのSPへのアクセス許可または不許可は、事前にSP-IdP間で紐づけられた認証条件にしたがってIdPで判断されることになります。
まだユーザーが1度もIdPで認証操作をしていなかった場合、IdPはユーザーに認証情報の入力を求め、その正否を確認してログインの承認/非承認通知(SAMLアサーション)を発行します。ユーザーが認証に成功した場合、IdPはそのデータを保存し、次に異なるサービスから認証リクエストが届いた際は、その既存情報を活用して承認処理を行います。
つまり、個々のSPがばらばらにユーザーの認証情報の確認をする代わりに、SAML構成サービスがIdPを使用して一括で認証処理を代行し、その結果を各SPへ通知するという仕組みです。したがって、ユーザーは一度認証操作をした後は、自分でパスワード入力を行うなどの手間を割くことなく、スムーズにログインできるようになります。
なお、シングルサインオン(SSO)とIdpに関しては以下の記事でも詳しく解説しています。ぜひ、本記事とあわせてご覧ください。
SAML認証の流れ(SP Initiated方式)
SAMLによる認証フローは、2つの方式があります。最初に紹介するSP Initiated方式は、ユーザーがまずログイン先のサービスへアクセスしようとしたときに発生します。その承認フローは以下の通りです。
ステップ1.ユーザーがSPへアクセスする
ステップ2.SPがユーザーをIdPへリダイレクト
ステップ3.IdPがユーザーに認証情報の入力を求める
ステップ4.IdPがユーザーの認証情報の正否を確認・承認する
ステップ5.IdPがユーザーをSPへリダイレクトし、SPへのログインを完了させる
SAML認証の流れ(IdP Initiated方式)
2番目のフローは、IdP Initiated方式と呼ばれます。これは、ユーザーが最初にシングルサインオンサービス(IdP)へログインし、そこから提携している各SPへ移動する形です。その承認フローは以下の形で示せます。
ステップ1.ユーザーがIdPへアクセスし、ID/パスワードを入力する
ステップ2.IdPがユーザーの認証情報の正否を確認・承認する
ステップ3.ユーザーはIdPが表示したSP選択画面から利用するサービスを選択し、ログインを完了する
SAML認証の安全性が高いといわれている理由
SAMLによる認証は、その高い安全性が多くの企業や組織に評価されています。その理由は、SAMLの認証プロトコルには高度なセキュリティ技術が組み込まれているからです。
ここでは、SAMLを支える技術要素と、それらがどのようにSAMLの安全性を強化しているかについて解説します。
デジタル署名
SAML認証において、デジタル署名は認証情報の真正性を保証する重要な要素であり、IdPとSPのそれぞれが「自身の正当性」を証明するための技術です。SAMLメッセージは、送信元でデジタル署名が付与され、受信側ではその署名が検証されます。このプロセスにより、メッセージが送信途中で改ざんされていないことが保証されるのです。
デジタル署名は公開鍵暗号方式にもとづいており、メッセージの送信元が正当なものであることを証明します。これにより、悪意のある第三者がメッセージを改ざんすることを防ぎ、なりすまし攻撃のリスクを低減可能です。署名が正しくない場合、受信側はそのメッセージを拒否するため、仮に想定外のSPからIdPに認証リクエストがあったとしてもリクエストを否認して安全性が確保されます。
暗号化
SAML認証では、ユーザーの重要な認証情報やその他の機密データが送信される際に、暗号化技術が使用されます。暗号化により、SAMLメッセージの内容が第三者に読み取られるリスクを低減可能です。
なお、SAMLではメッセージ全体または部分的な暗号化が可能であり、これによりユーザーの認証情報や属性情報が保護されます。個人情報に相当するような内容が属性情報として含まれていた場合にも暗号化が可能です。暗号化に使用される鍵は、IdPとSPの間で安全に共有されており、受信者のみがメッセージを復号化できるように設計されています。
相互認証
SAML認証では、IdPとの間での相互認証が行われることも、セキュリティの向上に貢献している1つの要素です。
相互認証は、IdPがユーザーの認証を行う一方、SPがIdPの正当性を確認することで実現されます。これにより、信頼できる認証プロバイダーからのメッセージのみが受け入れられる仕組みとなっており、偽のIdPや不正なSPを通じた認証が行われるリスクを排除可能です。この相互認証によって、双方の通信が信頼できるものであることが確認され、システム全体の信頼性が向上します。
シングルサインオン
SAML認証の最大の特徴の1つであるシングルサインオン(SSO)とは、ユーザーが1度ログインすれば複数のサービスにアクセスできる仕組みです。
シングルサインオンは、高い利便性がある一方で、セキュリティ面でも大きな利点を提供します。まず、ユーザーは1度のログインで複数のサービスにアクセスできるため、ログイン情報の使い回しや頻繁なパスワード入力のリスクが軽減されます。
また、シングルサインオンでは、全てのログインが中央のIdPを通じて行われるため、認証に関するログや監査も一元管理できます。IdPのみを監視すればよくなるため、不正アクセスの早期発見や迅速な対処が可能です。
SAMLによるシングルサインオンのメリット
SAMLによるシングルサインオンを導入することで、企業は以下に挙げるメリットを得られます。
ユーザーの利便性が向上する
第1のメリットは、ユーザーの利便性の向上です。昨今の企業は複数のクラウドサービスを利用することが多くなっているので、シングルサインオンを導入していない場合、ユーザーは1日に何度もログイン操作をする必要が生じます。通常、認証用のパスワードはサービスごとに異なるものを使い、セキュリティ強度を高めるために、複雑なキーワードを設定するのが通例です。
そのため、ユーザーはいくつもの複雑なパスワードを記憶するか、その情報を安全な方法で管理する必要に迫られます。パスワードを覚えきれていない場合は、サービスへログインするたびに、どこかにメモした情報を参照する必要が生じるため、これはユーザーにとって大きなストレスです。その点、シングルサインオンを導入すれば、ユーザーは1セットのID/パスワードだけを記憶し、1回ログイン操作をするだけで各サービスにアクセスできるようになるので、快適に業務を行えるようになります。
セキュリティを強化できる
第2のメリットは、セキュリティを強化できることです。上記のようにログイン操作が大変になると、ユーザーによっては簡単なパスワードを使い回したり、その辺の付箋などにパスワードをメモしたりするようになります。これらはいずれもセキュリティ上の脆弱性につながる危険な行為です。Excelなどでパスワードを管理している場合も、ファイル自体のデータ保護がしっかりしていないと危険なのは変わりありません。
しかし、シングルサインオンを導入すれば、パスワード管理が楽になるのでリスク軽減につながります。もちろん、複数種類のパスワードを使った方が安全という考え方もありますが、ユーザーの管理負担や、簡単なパスワードを設定することと比較すれば、1つの堅牢なパスワードで全てのサービスを守れることはセキュリティ強化に寄与します。
管理者の負担を軽減できる
第3のメリットは、システム管理者の業務負担を軽減できることです。ユーザーがパスワードを忘れてしまったときに大変な思いをするのは、そのユーザー自身だけではありません。パスワードの再発行処理をしたり、認証エラーを繰り返したためにかかったロックを解除したりするのはシステム管理者の役割だからです。
先述のように、シングルサインオンを導入すればユーザーのパスワード管理は非常に楽になるので、システム担当者がこのようなトラブルシューティングに追われる機会も大きく減ることが期待できます。それで空いた時間や労力をシステム管理者がより創造的な仕事に回せるようになれば、会社としても生産性の向上が見込めるでしょう。
SAMLによるシングルサインオンのデメリット
上記のようなメリットがある一方で、SAMLによるシングルサインオンにはいくつかのデメリットもあります。
SAMLに非対応のクラウドサービスもある
第1のデメリットは、SAMLに非対応のクラウドサービスもあることです。主要なクラウドサービスの多くはSAMLに対応していますが、前述のとおり、SAML認証はセキュリティ面で高いメリットを持つ認証方式であるため、主にエンタープライズ向けのサービスの対応が多いというのが現状です。特に一般向けサービスでは、後述のOAuthのみ対応している、という場合もあります。シングルサインオン導入時には、自社が利用するサービスがSAMLに対応しているか確認する必要があるということを覚えておきましょう。。
パスワードが単一である
第2のデメリットは、単一のパスワードに全てのサービスの認証が集約されるという点です。1つのパスワードで認証・認可が実現できるという点はもちろんメリットが多いのですが、一方でパスワードが漏えいすると全てのサービスが不正アクセスを受ける恐れがある、ということです。
ただし、このリスクはID/パスワード以外の認証情報もユーザーに要求する多要素認証などを併用することで、大幅に緩和できます。例えば、電話番号による認証やワンタイムパスワードの利用、近年では「パスキー」によるログインも一般的になりつつあります。実際、一般的なシングルサインオン製品は、シングルサインオンだけでなく多要素認証も同時にカバーしていることが多いため、シングルサインオン製品を導入する際には多要素認証を有効にしましょう。。
シングルサインオンのトラブルによりログインできなくなることがある
第3のデメリットは、シングルサインオンのサービス(IdP)が何らかのトラブルで停止してしまうと、そこに紐づけられたすべてのSPにログインできなくなる恐れがあることです。そのため、シングルサインオン製品を選定する際は、トラブル発生時のサポートがしっかりしているか、セキュリティ関連の規格を取得しているかなど、複数の観点からベンダー企業の信頼性を見極める必要があります。
SAMLとOAuthの違い
SAMLと混同しやすいものとして、OAuthというサービスがあります。以下では、SAMLとOAuthの違いを解説します。
OAuthとは実行の権限があるかどうか確認する仕組み
OAuthとは、あるアプリケーションで認証されたユーザーが、他のアプリケーションに対して、認証情報を共有することなくデータへの限定的なアクセスを許可する仕組みです。例えば、Googleドライブに保存した画像データをX(旧Twitter)に自動投稿するといった用途が挙げられます。
この際、ユーザーは個別のアプリケーションで認証操作をする必要はありません。ユーザーが行うのは、「XにGoogleドライブのデータへのアクセスを許可してよいか」というOAuthの確認に応えるだけです。そのため、OAuthもSAMLと同じく、シングルサインオンサービスの一種として捉えられます。
SAMLとOAuthの違いは誰であるかをチェックするかどうか
OAuthもシングルサインオンの一種だとするならば、SAMLとOAuthの違いはどこにあるのでしょうか。ここでキーポイントになるのが、「認証」と「認可」の違いです。SAMLは認証と認可に対応しているのに対し、OAuthは認可にのみ対応しています。
認証とは、そのユーザーが間違いなく本人であるか、真正性を確認することです。これに対して認可とは、本人確認(認証)は行わず、単にそのリクエストを実行してよいと承認することを意味します。
認証と認可という字面だけ見ると両者は似ているように感じますが、セキュリティ上の内実としてこの違いは大きな差です。例えば、認可のイメージとしては、鍵を持っていれば、その家の住民でなくても中に入ることができるような形です。つまりOAuthは、家の鍵のようなもので、誰であるかの確認は行いません。
他方で、認証の場合、家の鍵を持っているのは当然として、誰であるかのチェック(認証)も同時に行われます。家の前にガードマンがいて、本当にその人が住人であるか目を光らせているイメージです。SAMLは家の鍵とガードマンがワンセットになっていると捉えればよいでしょう。
このことからも分かるように、SAMLはOAuthと比べて、セキュリティレベルが優れています。個人ユーザーがSNSを便利に使うためならOAuthを利用するのも便利ですが、企業の情報資産を守るための仕組みとしてはSAMLを採用すべきでしょう。
OIDC(OpenID Connect)の登場
OAuth 2.0は、認可(Authorization)を提供するプロトコルであり、リソースへのアクセスを第三者に委任する仕組みを提供します。具体的には、ユーザーがサービスAにログインしている状態で、サービスBがサービスAからユーザーのデータにアクセスできるようにします。しかし、OAuth 2.0自体は「認証(Authentication)」に関する仕様は持っていません。
そこで登場したのがOIDC(Open ID Connect)です。OIDCはOAuth 2.0を拡張したプロトコルで、認証の機能が追加されています。
OIDCを使用することで、OAuth 2.0が提供する認可機能に加えて認証できるようになるため、OAuth 2.0で認可を行いながら、OIDCでユーザーの認証も同時に実施できるような仕組みとなっている、と考えるとよいでしょう。近年では、特にモバイルアプリをはじめとする一般向けのサービスでOIDCの導入が進んでいます。
一方で、セキュリティ面での信頼性においてはSAMLの方が優位に立っていることからも、エンタープライズ目的においては現時点でもSAMLが有用といえます。
SAML方式のシングルサインオンソリューションには「HENNGE One」の導入がおすすめ
SAMLによるシングルサインオンを実現しようと考えている企業には、さまざまなサービスに対応しているHENNGE One Identity Editionの導入がおすすめです。
Identity EditionはIdPとして動作する「IDaaS(Identity as a Service)」です。多くの企業での導入が進んでいるMicrosoft 365やGoogle Workspaceといった各社のサービスに対応しており、複数のサービスへのシングルサインオンを容易に実現します。
もちろんセキュリティ面も安心で、多要素認証によるセキュリティ強化やActive Directory連携による管理業務の簡易化はもちろんのこと、アクセスログやアクセス制限といったガバナンス制限にも対応しているため、高いセキュリティ要件をもつ企業にも導入できます。
まとめ
SAMLとは、シングルサインオン(SSO)を実現するための認証方式の1つです。現在の主要なクラウドサービスの多くはこのSAML方式に対応しており、これを導入することで、認証に関するユーザーの利便性向上や管理者の負担軽減などが見込めます。
その反面、セキュリティに関しては、堅牢なパスワードを利用しやすくなることをよしとするか、全てのサービスで単一のパスワードを利用する危険性を重視するかで一長一短の部分があります。ただし、このデメリットについては、多要素認証など他のセキュリティ機能を併用することで補完可能です。
SAML方式のシングルサインオンソリューションとしては、「HENNGE One」の導入をおすすめします。HENNGE Oneには、シングルサインオンはもちろん、多要素認証やIP制限、デバイス証明書などの幅広いセキュリティ機能が搭載されているため、シングルサインオンによる利便性と安全な認証環境を両立可能です。SAML認証によるシングルサインオンにご関心のある方は、ぜひHENNGE Oneの導入をご検討ください。
- カテゴリ:
- ID管理