fbpx

SCIMとは?シングルサインオンをより活用するための仕組みを解説

blank

SCIMとはユーザーIDの認証をやりとりする仕組みとしてRFCとして規定されたオープンソースの仕組みです。GoogleやMicrosoftにアカウントを登録すると、シングルサインオンで他のサービスの認証にも使えますが、SCIMはシングルサインオンで特に使われる技術です。

なおこの仕組みはWebサービスだけで使える仕組みではありません。社内ネットワーク内で運用しているITシステムでも利用できる仕組みです。今回はこのようなSCIMの仕組みについて解説します。

SCIMとは

SCIMとはSystem for Cross-domain Identity Managementの略称で、複数のドメイン間でユーザーIDの情報をやり取りするための標準規格です。インターネット技術の標準化機関のIETFにより1.0が2011年12月に、続いて2.0が2015年9月に公開されました。

なおSCIMが登場する前からユーザーIDの情報を送る仕組みはありましたが、インターネット上に構築したITシステム間でユーザーIDをやり取りするのに問題を抱えており、それを解決したのが今回紹介するSCIMです。まずはSCIMの概要について紹介します。

SCIMが求められた背景

SCIMが公開された2011年頃、今後クラウドベースのITシステムが主流になるとの予想から、異なるITシステム間でユーザーの認証情報をやりとりする仕組みが求められていました。

例えば企業の社内ネットワークの中ではユーザーの認証にMicrosoft社のActive Directoryが使われます。これはWindows Serverによるサーバー・クライアントシステムに基づくサービスなら、同じIDで利用できるからです。

とはいえActive Directoryを安全に使うには、社内ネットワークの中に限定されます。そしてクラウドサービスを利用するには、サービスそれぞれにアカウントを登録するのが普通でした。

さらに情報セキュリティの管理の甘い組織では、クラウドサービスのアカウントを複数の社員が利用するケースもあり、それによる情報漏洩のリスクも大きな課題でした。

シングルサインオンを実現するには

当時多くの企業で使われていたActive Directoryをインターネットで利用するにはセキュリティ上の課題が多くそのままでは利用できません。そのためインターネット上でも同じユーザーIDで認証できる仕組み、すなわちシングルサインオンを実現するための仕組みが開発されました。

なおシングルサインオンを実現するにはセキュリティ対策が重要です。例えば2002年にシングルサインオン実現のために策定されたSAMLでは、インターネットでよく使われる通信プロトコルを使い、データを暗号化してやりとりをする規格として公開されています。

ただしSAMLのデータ形式は処理が複雑で拡張性にも課題がありました。そこでSAMLと同じようにインターネットでよく使われる通信プロトコルを使い、データを暗号化してやりとりする仕組みとしてSAMLの問題点を改善した規格がSCIMです。

シングルサインオンの問題点

複数のクラウドサービスでシングルサインオンが利用できるようになり、同じユーザーIDでそれらの認証が可能になったとしても、企業におけるID管理の課題が解決できる訳ではありません。

社内ネットワークのサービスではActive Directory、クラウドサービスではシングルサインオン、独自に開発したITシステムなどではそれぞれに登録されたID、といった具合に1人の社員が使うIDは幾つも存在します。

管理するIDが幾つ必要な状況は、情報システム部門にとっても大きな問題です。異動の度に正しく設定し直さなければなりません。利用するサービスにシステムにかかわらず、同じユーザーIDでシングルサインオンできる仕組みが求められます。そして、それを実現できる仕組みがSCIMです。

SCIMの仕組み

先ほど紹介したようにSCIMはインターネット技術の標準化機関であるIETFにより公開されている規約です。そしてこの規約に従ってID情報をやりとりする仕組みを使いたいシステムに組み込んでおけば、どのようなサービスでもシングルサインオンを利用できます。

そしてSCIMに対応した仕組みはクラウドサービスのAPIとして用意されていたり、プログラミング言語のライブラリとして提供されているので、独自のサービスを構築した場合でも、システムにSCIMによる認証の仕組みを組み込むことが可能です。

次からSCIMとはどのような仕組みかについて解説します。

SCIMの通信形式

先ほどSCIMはインターネットでよく使われる通信プロトコルを使うと紹介しましたが、SCIMでデータ送信には使われるのはHTTPプロトコルです。

なお多くの企業にはファイヤーウォールが設置されており、社内ネットワークとインターネットで通信できるプロトコルが制限されています。そのため、通信できるプロトコルが制限されますが、どの企業でもWebブラウザに使われるHTTPプロトコルは許可対象です。

さらにHTTPプロトコルは通常、暗号化されてやりとりされます。いわゆるHTTPS通信です。そしてSCIMでもユーザーIDの認証データが暗号化されるので安全なやりとりが可能です。

データフォーマットはJSON

SCIMはユーザー認証情報をJSON形式でやりとりします。なおJSONとはJavaScript Object Notationの略称で、主にWebブラウザがサーバーからデータのみ受け取り、Webブラウザ側のプログラムで表示を切り替える際に使われるデータフォーマットです。

そしてJSONはデータの階層構造にも対応しており、複雑なデータを格納できます。また、シンプルで読みやすいデータフォーマットなので、Webブラウザだけではなくさまざまなサービスやシステムにおけるデータのやり取りに利用されるデータフォーマットです。

このようにSCIMで使われるデータフォーマットは人が編集できるくらい見やすいデータ形式ですが、実際には人事システムなどに組み込まれた処理で自動的に生成され、SCIMの仕組みを介してユーザーIDを使う全てのシステムに配信されるような仕組みで運用されます。

SCIMの特徴

SCIMは多くのクラウドサービスでシングルサインオンを実現する方法として利用されています。また、この仕組みを活用することで社内ネットワーク内のアカウント管理システムと連携させることも可能です。

SCIMの特徴は次のとおりです。

  • RFCとして標準化されたユーザー管理の仕組み
  • Web向けのプロトコルを利用するAPIとして利用できる
  • 使えるコマンドはデータの取得、追加、変更、削除の4つのみ
  • 容易に拡張可能な柔軟な仕組み

標準化されたユーザー管理の仕組み

先ほど紹介したとおりSCIMはインターネット技術の標準化機関であるIETFによりRFCとして公開されている標準規格です。そしてSCIMはGoogleやSalesforceといったクラウドサービスの大手企業が中心となって仕様が決められた規格のため、WebAPIでも使いやすい仕組みとして作られています。

RFCとして公開されている仕様は次の3つです。

WebAPIとして使えるためのポイント

WebAPIとは、インターネットに公開されているWebサーバーに決められたフォーマットのHTTPリクエストを送信することで、処理結果をHTTPレスポンスのフォーマットで受け取ることが可能な仕組みです。SCIMは、ユーザーIDの取得、追加、変更、削除をAPIとしてWebサーバーに実装できます。

なお、SCIMではWebAPIでも利用できるように次の3つの要素が使われます。

  • インターネットに公開されたサーバのベースURL (例 https://scim.auth.iij.jp/scim/v2/ )
  • リソースタイプ (User, Group, Selfなどのリソース)
  • アカウントIDに対応した識別子

なおSCIMのWebAPIに接続する際、OAuth2.0による認証が推奨されています。そのためWebAPIを利用する場合、事前に認証のためのアクセストークン等の入手が必要です。

スキーマを拡張できる

SCIMには標準スキーマの仕様が規定されており、SCIMのWebAPIを利用するとその標準スキーマの属性名を利用します。そして、SCIMではスキーマを拡張することが可能です。

なおスキーマとは英語のschemaのことで、IT用語ではデータベースの構造を意味する言葉です。データベースの構造を拡張することで、標準構造のデータベースに属性などを追加できます。SCIMでは標準のデータベース構造でやりとりされるのが普通ですが、拡張されたデータベース構造でのやりとりもサポートされます。このもSCIMの特徴です。

SCIMを使うには

SCIMのサーバーを構築するソリューションを利用すれば社内やクラウド上にSCIMのWebAPIを構築できます。もちろんそうやってSCIMを利用することも可能ですが、GoogleやMicrosoftにはSCIMをベースにしたアカウント管理の仕組みがあるので、そのようなサービスの利用も検討してください。

次からSCIMをサポートしたクラウドサービスについて紹介します。

GoogleアカウントとSCIMを連携する

Googleアカウントを利用するメリットは、GmailやGoogle ドライブなどのGoogleのサービスを利用できるだけではありません。クラウドサービスとして公開されている多くのシステムでGoogleアカウントによるシングルサインオンをサポートしています。

なおシングルサインインオンが使えるのは個人として作成したアカウントだけではありません。会社のドメインでアカウントを作成したとしても同じようにシングルサインオンを利用できます。

そしてGoogleはSCIMの標準化に協力した企業の1つで、もちろんSCIMにも対応しています。社内で使われているローカルな情報システムでも、SCIMにさえ対応できればGoogleアカウントを利用したシングルサインによる認証を実現することが可能です。

Active DirectoryからSCIMを使う

Microsoft社のクラウドサービスAzureのActive Directory(AzureAD)を利用することで、Active DirectoryからSCIMを使うことが可能です。

多くの企業では、Active Directoryを使って社内ネットワークにおけるユーザーIDを管理しています。しかし、Windows ServerのActive Directoryから直接SCIMを利用できません。そこでMicrosoft社のクラウドサービスAzureを利用してください。

Azureではクラウド内の認証にActive Directoryを利用できます。そしてこの仕組みは社内ネットワークで使われているActive Directoryと連携することが可能です。さらにSCIMにも連携できるので、この仕組みを使えば社内ネットワークで利用しているActive DirectoryとSCIMに対応したクラウドサービスとを連携できます。

AWSでSCIMを使う

クラウドサービスを構築する場合、Google社のGoogle CloudやMicrosoft社のAzureとよく比較されるのがAWS(Amazon Web Services)です。そしてAWSでシングルサインオンを実現するためのサービス、AWS SSOでもSCIMをサポートしています。

またAWSに構築したWebサーバーで構築する場合、プログラミング毎にSCIMに対応しあライブラリが用意されているので、それらを使うことでシングルサインオンが可能なサービスを構築できます。そしてこの方法はAWS以外のクラウドでも利用可能です。

終わりに

これまで紹介したようにSCIMはRFCとして規定されたオープンソースのユーザーIDの認証をやりとりする仕組みです。Google社やMicrosoft社などのクラウドサービスの大手企業がSCIMに対応しており、シングルサインオンを実現する仕組みとして使われています。

そしてSCIMはHTTPプロトコルで通信される仕組みで、安全にインターネット上にやりとりされる仕組みです。そのため社内ネットワークからでも利用でき、WebAPIとしてユーザーIDの管理が可能なサーバーも構築できます。

複数のクラウドサービス間のシングルサインオンを実現する仕組みとして使われる他、社内ネットワーク上のシステムとのシングルサインオンの実現も可能な仕組みです。ID管理に問題に抱えている企業の方はぜひ利用を検討してください。