Overview
シングルサインオン(SSO:Single Sign-On)とは、一度の認証で複数の関連するシステムやサービスにアクセスできるようにする認証の仕組みです。ユーザーは個々のアプリケーションごとにログインする必要がなくなり、利便性とセキュリティの両方を向上させます。
企業環境では、従業員が平均して100以上のSaaSアプリケーションを使用しているとされ、それぞれに異なるパスワードを管理することは現実的ではありません。SSOにより、1つの強力な認証情報(パスワード+MFA)で企業内のすべてのアプリケーションにアクセスできるようになります。
SSOはフェデレーション(Federation)の概念に基づいており、異なる組織やドメイン間で信頼関係を構築し、認証情報を安全に共有します。代表的なプロトコルにはSAML 2.0、OpenID Connect(OIDC)、WS-Federationがあり、エンタープライズ向けにはOkta、Microsoft Entra ID(旧Azure AD)、OneLoginなどのIDaaS(Identity as a Service)が広く利用されています。
Details
IdP(アイデンティティプロバイダー)と SP(サービスプロバイダー)
SSOの基本的なアーキテクチャは、IdP(Identity Provider)とSP(Service Provider)の信頼関係に基づいています。
- IdP(アイデンティティプロバイダー):ユーザーの認証を一元的に行う信頼の中心。Okta、Microsoft Entra ID、Google Workspaceなどが該当。ユーザーの認証情報を管理し、認証結果(アサーション/トークン)をSPに提供する
- SP(サービスプロバイダー):実際のサービスを提供するアプリケーション。Salesforce、Slack、AWS Consoleなど。IdPから受け取った認証結果を信頼してアクセスを許可する
主要なSSOプロトコル
- SAML 2.0(Security Assertion Markup Language):XMLベースのフェデレーション標準。エンタープライズ環境で最も広く採用されている。IdPがSAMLアサーション(XMLドキュメント)を生成してSPに送信する。SP-Initiated(SP起点)とIdP-Initiated(IdP起点)の2つのフローがある
- OpenID Connect(OIDC):OAuth 2.0上に構築されたモダンな認証プロトコル。JSONベースでRESTfulなため実装が容易。IDトークン(JWT形式)を使用してユーザー情報を安全に伝達する。モバイルアプリやSPAとの親和性が高い
- WS-Federation:Microsoftが主導するフェデレーション標準。Active Directory Federation Services(AD FS)で使用される。SAMLと同様にXMLベースだが、Microsoftエコシステムでの互換性が高い
エンタープライズSSO製品
- Okta:クラウドネイティブのIDaaS。7,000以上のアプリケーションとの事前統合を提供。ゼロトラスト戦略の中核として広く採用
- Microsoft Entra ID(旧Azure AD):Microsoft 365やAzure環境とのシームレスな統合。条件付きアクセスポリシーによる高度なアクセス制御が可能
- OneLogin:中小企業からエンタープライズまで対応。SmartFactor Authenticationによるリスクベース認証を提供
- Ping Identity:大規模エンタープライズ向け。ハイブリッド環境(オンプレミス+クラウド)でのSSO統合に強み
SSOの利点とリスク
利点:
- パスワード疲れの解消と、パスワード再利用リスクの低減
- IT部門のヘルプデスク負荷軽減(パスワードリセット対応の削減)
- ユーザーのプロビジョニング・デプロビジョニングの一元管理
- 退職者のアクセス権を一括で無効化できる
- コンプライアンスに必要な認証ログの集約
リスク:
- 単一障害点(Single Point of Failure):IdPが停止するとすべてのサービスにアクセスできなくなる
- ゴールデンチケット問題:SSO認証情報が漏洩すると、すべての連携サービスが危険にさらされる
- セッション管理の複雑化:各SPとIdP間のセッションライフサイクルの同期が必要
セッション管理
SSOにおけるセッション管理は、IdPセッションとSPセッションの2層構造で成り立っています。ユーザーがIdPで認証されるとIdPセッションが作成され、各SPアクセス時にSPセッションが個別に作成されます。ログアウト時には、シングルログアウト(SLO:Single Logout)によりすべてのSPセッションを連動して終了させることが理想ですが、実装の複雑さから完全なSLOの実現は技術的な課題を伴います。
Security Measures
- 01IdPにMFAを必須化:SSOのIdPアカウントは全サービスへのマスターキーとなるため、フィッシング耐性のあるMFA(FIDO2セキュリティキー等)を必ず設定してください。パスワードだけの保護は絶対に避けるべきです。
- 02条件付きアクセスポリシーの実装:アクセス元のIPアドレス、デバイスの状態、地理的位置、時間帯などの条件に基づいてアクセスを制御してください。異常なロケーションやデバイスからのアクセスには追加の認証ステップを要求しましょう。
- 03SAMLアサーションの署名と暗号化:SAMLを使用する場合、アサーションにはXML署名を付与し、可能であれば暗号化も行ってください。署名検証のバイパスやアサーション偽造攻撃を防止するために、証明書の管理を厳格に行いましょう。
- 04セッションタイムアウトの適切な設定:IdPセッションの有効期限を適切に設定してください(通常8〜12時間)。高セキュリティ環境では、機密性の高いアプリケーションへのアクセス時にステップアップ認証(追加の認証要求)を実装しましょう。
- 05ユーザーライフサイクルの自動管理:SCIMプロトコルを活用して、ユーザーのプロビジョニングとデプロビジョニングを自動化してください。退職者や異動者のアカウントが残存し続ける「孤立アカウント(Orphaned Account)」は重大なセキュリティリスクです。
- 06IdPの冗長化と障害対策:IdPの単一障害点リスクに備えて、フェイルオーバー構成やバックアップ認証手段を準備してください。オフラインアクセスが必要なケースでは、一時的なローカル認証の仕組みも検討しましょう。
Incidents
📋 Okta Lapsus$グループによる侵害事件(2022年)
2022年1月、サイバー犯罪グループ「Lapsus$」がOktaのサポートエンジニアが使用する端末に不正アクセスし、内部管理ツールのスクリーンショットをインターネット上に公開しました。Oktaは当初、影響を受けた顧客は約2.5%(約375社)と発表しましたが、SSOプロバイダーとしてのOktaの侵害は、その顧客が利用するすべてのサービスに波及するリスクがありました。
この事件はSSOプロバイダーが「信頼の連鎖」の根幹であることを浮き彫りにしました。Oktaのようなアイデンティティプロバイダーが侵害されると、数千の企業の数百万ユーザーに影響が及ぶ可能性があります。Oktaはこの事件を受けてセキュリティ対策を大幅に強化し、サードパーティサポートベンダーの管理体制を見直しました。
📋 SolarWinds SAMLトークン偽造攻撃(2020年)
2020年12月に発覚したSolarWindsのサプライチェーン攻撃において、攻撃者(ロシアの国家支援型グループとされる)はSAMLトークン署名証明書を窃取し、任意のユーザーになりすました偽のSAMLアサーションを生成する「ゴールデンSAML攻撃」を実行しました。
攻撃者はまずSolarWinds Orionのアップデートにマルウェア(SUNBURST)を仕込んでネットワークに侵入し、Active Directory Federation Services(AD FS)サーバーからトークン署名証明書を窃取しました。この証明書があれば、正規のIdPを経由せずに有効なSAMLトークンを自由に生成でき、Microsoft 365やAWSなどのクラウドサービスに管理者として無制限にアクセスすることが可能でした。米国政府機関を含む18,000以上の組織に影響を与え、SAML署名鍵の保護がいかに重要であるかを世界に示しました。
📋 OneLogin データ侵害事件(2017年)
2017年5月、IDaaS大手のOneLoginがサイバー攻撃を受け、米国リージョンのデータが侵害されました。攻撃者はAWSのキーを不正に取得し、OneLoginのインフラストラクチャにアクセスしました。暗号化されたデータを復号できる可能性があることをOneLoginは認めました。
SSOプロバイダーへの侵害は、そのプロバイダーを利用するすべての企業に影響を与える可能性があります。OneLoginは顧客に対して、パスワードの変更、OAuthトークンの再生成、新しいAPI認証情報の作成、新しいセキュリティ証明書の生成を要請しました。この事件により、SSOプロバイダーの選定においてセキュリティ態勢の評価がますます重視されるようになりました。