先日、「こんなシングルサインオンの実装を検討しているのだが意見が欲しい」と言われ、資料を見ていたのだが、その内容はシングルサインオンとは遠くかけ離れた、ただの認証省略の仕組みだった。苦言を呈すことになったのは言うまでもないが、そんこともあり、簡単にシングルサインオンについて整理してきたい。
シングルサインオン(SSO)とは?
シングルサインオン(SSO)とは、1組のID・パスワードによる認証を1度行うだけで、複数のWebサービス・クラウドサービス・アプリケーションにログインできるようにする仕組み。
パソコンやスマートフォン、インターネットが普及し、1人でいくつものWebサービスやクラウドサービスを利用する方が増えています。以前は、これらを利用する際、サービス・アプリケーションごとに認証を行っていました。一方、これらのサービス・アプリケーションがシングルサインオンに対応していれば、認証が1回ですむようになります。
シングルサインオン(SSO)を実現する方法
代行(代理)認証方式
クライアントのパソコンにインストールした専用のエージェントが、ユーザーの代理でID・パスワードを打ち込む方式です。エージェントはパソコンに常駐し、各サービス・アプリケーションのログイン画面が起動するのを検知し、自動的にID・パスワードを入力します。
リバースプロキシ方式
リバースプロキシと呼ばれる中継サーバー上で認証を行う方式です。リバースプロキシ上で認証を追加した場合に、その後ろにあるサービスにログインができるようになります。
エージェント方式
Webサービスの専用のエージェントモジュールを組み込んで、シングルサインオンを実現する方式です。エージェントはシングルサインオン用の外部サーバーと連携し、認証やアクセス権限のチェックを行います。
SAML認証方式
SAML(Security Assertion Markup Language)認証では、IdP(Identity Provider)とSP(Service Provider)と呼ばれる2つの構成要素で、シングルサインオンを実現する方式です。
ユーザーが対象のWebサービス(SP)へアクセスすると、SPはIdPへ認証要求(SAML)を送信します。すると、IdPがユーザーのパソコンやスマートフォンに専用のログイン画面を表示させ、認証を促します。認証が成功すれば、IdPはSPに対して認証応答(SAML)を送信し、SPがそれを受け取ると自動ログインを実行するという流れです。これによって1度認証が成功すれば、SAMLに対応する別サービスへ自動でログインできるようになります。
メリット
メリット1.利便性が向上する
たくさんのWebサービス・アプリケーションを使っていると、認証の際に利用するID・パスワードの組み合わせもそれだけ増えることになり、管理に手間もかかります。また、各サービス・アプリケーションを利用する際に、いちいちログイン作業をしなくてはなりません。
一方、利用するWebサービス・アプリケーションがシングルサインオンに対応していれば、ID・パスワードの組み合わせは1つですむようになります。その上、それらWebサービス・アプリケーションの認証は1回だけ行えばよいので、より便利に利用できるようになるのです。
メリット2.パスワード漏洩のリスクが低くなる
利用すべきID・パスワードの組み合わせが増えると、その管理がおろそかになるものです。たとえば複数のサービス・アプリケーションで同じID・パスワードを使い回したり、付箋などに書いてパソコンに貼ったりする方も多いでしょう。覚えるのが面倒になり、推測されてしまいやすい簡単なパスワードを設定している方もいます。
一方、シングルサインオンを利用すれば、管理すべきID・パスワードの組み合わせは1つだけですむので、覚えるのも簡単になり管理の手間もかからなくなるわけです。そのため付箋に書いたメモを誰でも見られるようなところに置いたりすることはなくなり、適切に管理されやすくなります。ある程度複雑なパスワードを作成したとしても、1つだけなら覚えるのは苦ではないでしょう。
これらのことから、シングルサインオンを導入することによって、パスワード漏洩のリスクが減るわけです。
デメリット
デメリット1.パスワードが漏えいすると重大なセキュリティリスクにつながる
シングルサインオンで利用するID・パスワードが万が一漏洩してしまうと、そのID・パスワードを利用するサービス・アプリケーションが全て不正利用されるリスクにさらされることになります。
デメリット2.システムが停止すると関連するサービスにログインできなくなる
シングルサインオンは、特定のシステムによって認証情報が管理されています。そのため仮にその管理システムがダウンした場合、シングルサインオンでログインできるように設定している全てのサービス・アプリケーションが使用できなくなる可能性があります。