近年、企業向けのクラウドサービスで、SAML(読み方:サムル、サムエル)がよく利用されるようになりました。実際に、皆さんが耳にするような企業のSaaSはSAMLに対応し、認証の利便性を向上させています。今回は、SAMLの成り立ちから仕組み、SAMLを活用するメリットや注意点についても解説いたします。
SAMLとは
SAMLはSecurity Assertion Markup Languageの略であり、一つのシステムにログインすることですべてのシステムを使えるようにするシングルサインオン(SSO)を実現するのに重要な技術です。SAMLはシステム間で認証情報を交換するための規格で、eビジネスの業界団体であるOASISが規格化しています。
SAML登場の背景
SAMLが登場するまで、認証はそれぞれのシステムに組み込まれているのが一般的でした(図1)。
しかし、システムや認証が複雑・巨大化するにつれ、認証を切り離して複数システムで共通化したいというニーズが生まれました。そうすることで、システムの更改に合わせて認証の仕組みを調整したり、組み込み直したりする必要がなくなります。また、認証を共通化することで、1回のログインで異なる複数のシステムを利用するようにもできるわけです。
このような動きがでてきた当初、認証システムとそれを利用するシステムの間のやり取りの方法は、開発者ごとに独自のものでした。しかし、共通化を図ることで、より広い範囲で認証システムが使えるようになります。そこで2002年に規格化されたのがSAMLの最初のバージョンであるSAML v1.0です。その後、2005年に制定されたSAML v2.0が、現在活用されています。最近では企業の情報システム(エンタープライズ・システム)でも、SSOの実現技術として広く使われるようになりました。
SAMLの考え方
SAMLは、簡明なテキスト形式のデータによってシステム間の認証情報のやり取りを実現します。
SAMLはSecurity Assertion Markup Languageという正式名称からわかるように、XML(Extensible Markup Language)形式で記述します。ただしSAMLは言語仕様にとどまりません。異なるインターネットドメイン間で認証情報をやり取りするには、その際のお互いの役割を明確にし、やり取りの手順も明確化する必要があるからです。
SAMLでは通信プロトコルにWebアクセスを始めとして広く使われるHTTPを用います(規格上はHTTP以外でも通信可能ですが、実際にはHTTPに限られています)。さらにSAMLでは、認証情報を発行する主体をアイデンティティ・プロバイダー(IdP:Identity Provider)、認証情報を受け取ってユーザーにサービスを提供する主体をサービス・プロバイダー(SP:Service Provider)と呼びます。この2者にユーザーを加えたやり取りを定義することでシングルサインオン(SSO)などの認証統合を実現します。
SAMLによるSSOの認証手順
企業(エンタープライズ)システムでシングル・サインオン(SSO)を実現する場合の情報のやり取りを見てみましょう(図2)。
ユーザーがサーバー(以下、SP)にアクセスする(図2①)と、SPはアクセスをリダイレクトして、ユーザーがIdPによる認証を受けることを求めます(図2②)。このとき、SPはリダイレクト先を示すURLにSAMLを要求する情報を埋め込みます。ユーザーがIdPによる認証を受けると、SAMLアサーションの形式でHTML本体(ボディ)に書かれた認証情報がIdPからユーザー経由でSPに送られます(図2③)。SPはSAMLアサーションの内容が正当なものだと検証した上で、ユーザーにアクセスを許可するわけです(図2④)。
SAMLを使ったSSOの導入のメリット
大きなメリットとして、以下の2点が挙げられます。それぞれ見ていきましょう。
セキュリティ性の向上
SAMLを利用したSSOを導入することで、セキュリティを強化できます。様々なクラウドサービスを利用していると、IDやパスワードを統一したり、メモ書きしたりするなど、セキュリティ的に好ましくない行動をとりがちです。SSOを導入することで、それらの行動を防げます。
また、SAMLはインターネット上にパスワード情報を流すことがありません。そのため、たとえ通信が傍受されていたとしても、漏洩するリスクがなく、代理認証と比較しても安全と言えます。
クラウドサービスへのアクセスが簡単になる
SAMLは、多くのクラウドサービスが対応しています。従来は、SAML非対応のSaaSも昨今の流れを受け、SAMLに対応しているサービスが増加してきました。今後、SAMLはスタンダードな規格として利用されると考えられるため、SAMLを利用したSSOで、クラウドサービスへのアクセスを簡単にできるでしょう。
SAMLを使ったSSO導入の注意点
メリットがある一方で、SAMLを利用したSSOを導入する上での注意点もあります。ここでは、2つ紹介いたします。
権限付与やアクセス権限などの情報は持っていない
確かにSAMLは認証情報の交換を規定していますが、権限付与の方法や、アクセスできる情報まで規定しているわけではありません。そのため、認証はスムーズになりますが、認可の機能はほとんどありません。さらに、アクセス権限などのやりとりはSCIMが担うことが多いです。しかし、SAMLよりも対応しているクラウドサービスが少なく、簡単に認証・認可を強化することはできないでしょう。
SAML非対応のシステムが多い
企業で使われるシステムはSAMLに対応していないことも珍しくありません。ほとんどのオンプレシステムはもちろん、クラウドサービスでも国産SaaSを中心に、SAML非対応のサービスがほとんどです。このような場合、独自の認証方式にSAMLインタフェースを持たせるケースが多いですが、その結果、機能が制限されるなど使い勝手に不便が生じることもあります。そのため、使用する全システムをSAMLによるSSOを実現するのはハードルが高いと言えるでしょう。
かもめエンジニアリングでは、SAML非対応のシステムを改修不要でフェデレーション対応できるツール「KeygatewayT1」を提供しております。
お問い合わせは、こちらからどうぞ。
また、SAML以外の認証規格として、OAuthやOpenID Connectもあります。こちらの記事も併せてご参照ください。
『OAuthとOpenID Connectについて ~仕組みや特徴~』