selmertsxの素振り日記

ひたすら日々の素振り内容を書き続けるだけの日記

「成長する企業はなぜSSOを導入するのか」を読んだ

所感

SSOについて、必要性と実現方法の概要を説明している本です。SSOって何?って人がいたら、エンジニア・ディレクター問わず読んでおくと良さそうです。

Single Sign-Onとは

各種サービスへのアクセスを一つにとりまとめるもの。

before 社内で利用される各種サービスへのID/Passを覚えて無ければならなかった

after 全てのサービスへのアクセスは、SSOツールへのアクセスで一元化される。

SSOの実現方法

  • リバースプロキシ方式
  • エージェント方式
  • フェデレーション
  • クライアントエージェント方式

リバースプロキシ方式

ユーザーと業務システムの間に、リバースプロキシサーバーと呼ばれるサーバーを配置するもの。ユーザーからの認証リクエストを、認証サーバーに問い合わせる。ユーザーを代行して業務システムにログインする機能を持つSSOを使えば、業務システム側の認証機能を改修する必要もない。リバースプロキシサーバーを建てる際は、リクエスト数が増大するとそれがボトルネックになりやすい。

エージェント方式

業務システムにエージェントモジュールを組み込む。認証する際には、業務システムから認証サーバーに問い合わせをする。導入する場合、業務システムのプログラムを改修する必要がある。リバースプロキシが使えない場合に採用される。

クライアントエージェント方式

各ユーザーの端末にエージェントモジュールをインストールする方式。各業務システムをエージェントが認識し、ユーザーIDやパスワードをエージェントが入力する。

メリット: 業務システムへの改修が不要 デメリット: ユーザーのOS/利用ブラウザによっては適切に認証できないことがある

フェデレーション

認証基盤がクラウドだったり、オンプレミスだったりしても、それらを連携させてSSOを実現する方法。詳細は後程。

SSOシステムの機能

  • 代行ログイン機能
    • SSOシステムがユーザーに変わって業務システムにログインする
  • セッション管理機能
    • 業務システムへのログインセッションをSSOシステムが一括管理する
    • タイムアウト時間の設定等もSSOシステムが管理する
  • 情報継承機能
    • ユーザーの属性情報をSSOシステムが保存・管理し、業務システムへ渡す機能
    • 個々の業務システムでユーザー属性情報を保存・管理する必要がなくなる
  • アクセス制御機能
    • ユーザーから業務システムの各コンテンツへのアクセス可否を制御する
    • いわゆる認可機能
  • ダイナミックメニューポータル機能
    • SSOシステムへのログイン直後に業務システムへのリンクをメニューとしてポータル画面に表示する機能
    • あなたがアクセスできるツールはこれですよーみたいなもんか
    • ここにSentry、Datadog等々が乗れば良さそう
  • アクセス記録機能
    • 不正アクセスがあったときに、影響範囲をすぐに調査できる
    • 社内で利用されているサービスを可視化できる
  • windows認証との連携機能
    • windows PCにログインしたら、SSOシステムへのログインが不要になる機能

フェデレーション

それぞれ個別に認証機能を持つクラウドやサイト間でのシングルサインオンを実現する方法。この仕組みを使うことによって、パブリッククラウドサービスへの認証を一元管理することができるようになる。

SAML(Security Assertion Markup Language)

OASIS (Organization for the Advancement of Structured Information Standards)が定めた クラウドサービスと企業の間で認証の連携を行うための標準規格。

フェデレーションはパスポートの仕組みに似ている。自社でパスポートを発行し、クラウドサービス側ではパスポートが適切であればサービスへのアクセスを許可する。パスポートを発行する側を Identity Provider(IdP)。 クラウドサービス側を Service Provider(SP). このパスポート自体はSSOの世界では アサーション と呼ぶ。

SPがIdPを信頼できれば、そのIdPから生成されるアサーションの確認を、ユーザーの本人確認とみなす。一度発行されたアサーションは特定のSPへのログインにしか使えない。

SAMLによる実際の処理の流れ

  • ユーザーがIdPにアクセスしてパスワード等でユーザーへの認証を行う
  • IdPがアサーションを発行する
  • アサーションがWebブラザを介してSPに提示される
  • アサーションの正当性と信頼したIdPによる発行かどうかをSPが確認する
  • SPがユーザーに利用を許可する

参考資料