ID関連ソリューションについて
はじめに
現在、ID管理・ID認証に関する仕事に携わっている。
仕事でのIDとの関わりは10年以上前、サーバ構築の仕事をしていた頃にActive Directoryに触れて以来、ちょくちょく関わることもあった。しかし、本格的に「ID」そのものだけにフォーカスして取り組むのは初めてかもしれない。
顧客内のID全体を司るシステムを今後どのようにしていくか? ということを6月頃から考え続けており、そろそろ一度アウトプットしてみようと考えた次第だ。
そもそもIDとはなんぞや
Identityの略である。そのまま日本語に翻訳すると「身元」となる。
システムで用いるIDの概念としては「誰かを特定する要素」か。
IDはシステムのあらゆるシーンで利用される大事な要素だ。「誰か」がシステムを利用するためにログインするときに用いるユーザーID、システム自体が複数ある場合に「どのシステム」を指すのかを表すために用いるシステムID、など。IDが存在しないシステムは存在しない? のではないか。
現在 僕が触れているのはユーザーIDの領域だ。
ユーザーIDに関わる大きな機能的役割は、ID管理とID認証に分かれる。
-
ID管理
どのようなIDを発行するか、IDをどのように発行するか、発行されたIDをどのように取り扱うかなど、ITを使った業務において どのようにIDを適用していくかを考える。 -
ID認証
実際にIDを使う本人とIDをどのように紐づけるかという話だ。言い方が難しいか? パスワード、顔、静脈など本人しか持っていない情報を元に、IDを本人が利用しているかどうかを確認するプロセスがID認証だ。
ID管理について
ID管理において検討すべきポイントは以下と考える。
- ID体系:IDの体系をどのようにつくるか
- 属性:どのような情報をIDに付属させるか
- 認可:IDに対する認可をどのように与えるか
- インプット:どのようにIDを生成するか
- アウトプット:他のシステムに対して どのようにIDを流通させるか
1~3はデータベース設計に係る。
ここでは、そもそもIDを何のために提供するのかを考えなければならない。
個人情報や所属情報など本人が持つ情報(属性)のうち、どれをシステムの利用において活用すべきなのか、一意なIDをどういう文字列でつくるか、IDに対して どのように属性を紐づけるか、どういった条件でシステムを利用させる(システムの利用を認可する)か、といった要件をER図などを用いて表現する。
利用されるソリューションはPostgreSQLやOracle DatabaseなどのRDBMS、OpenLDAPや389 Directory ServerなどのLDAPサーバとなる。IDの利用元となるシステム、ひいては業務の要件に応じてソリューションを決定する。
4、5はデータ連携設計に係る。
IDと情報をどうやってデータベースに蓄積(インプット)し、データベースに蓄積されたIDと情報をどうやって他のシステムに流通(アウトプット)していくかを考える。
IDには必ず元となる情報がある。自分が何者であるか、すなわち名前や生年月日、マイナンバー、所属している組織など、個人を形成する情報がどこかしらにあるはずだ。インプットでは それらの情報を収集し、データベース上のIDに集約させていく。
一方、蓄積したIDを利用するシステムが存在する。システム側では、アクセスに来た利用者が誰なのか、どんな権限を与えるべきなのかを識別するためにIDの情報を把握する必要がある。以前はそれぞれのシステムが持つデータベースに対してレプリケーションする手法が中心であったと考えるが、近年ではSAMLやOIDCなどの認証プロトコルを用いて認証時にIdPを通じてIDと情報をシステムに渡す手法が中心になってきている。後者の方法であればデータの同期を考慮しなくてもよい点が強みだ。
利用されるソリューションは一般的にはETLに分類されるが、IDの連携に特化したソリューションとしてLDAP ManagerやKeyspiderなどの組織管理を中心としたID連携に特化したソリューション、SailPointやJosysなどの監査や認可に特化したIGA(Identity Governance and Administration)といわれるソリューションがある。
機微な情報を取り扱いシステム間で連携するという特性上、オンプレミスに設置することが前提のソリューションが多かったが、SCIMなど暗号化を前提としたID連携プロトコルを用いてインターネット上に設置するSaaSが主流となりつつある。
ID認証について
一方、ID認証において検討すべきポイントは以下と考える。
- 認証方法:どのようにして本人性を確認するか
- 認証管理:利用者がどのように認証要素を生成するか
- SSO:複数のシステムに対して どのように認証方法を提供するか
- ロギング:どのようにしてシステムが正しく認証していることを確認するか
1、2は利用者向けの機能である。
可能な限り他の人に詐称され情報を奪取されない安全な方法で、かつ利用者の利便性を損なわない認証方法を考える必要がある。これまで当然とされてきたパスワードによる認証方法は、流出してしまうリスクや流出したあとに拡散して二次被害を及ぼすリスクが高い。
パスワードに代わる認証方法として用いられるのが、FIDO2の技術を用いた生体情報やセキュリティキー、本人が所持していることを認証の担保とするAuthenticatorアプリだ。これらの要素を組み合わせて多要素認証とすることで、安全性を確保する。
物理的なセキュリティキーであるYubiKey、生体認証のWindows HelloやApple Face ID/Touch ID、AuthenticatorアプリのGoogle AuthenticatorやOkta Verifyといったソリューションがある。
3は、1や2で安全性・利便性を高めた認証方法をあらゆるシステムで使えるようにしようというアプローチだ。
SAMLやOIDCといった認証プロトコルを用いることで、システム利用時の本人性の確認に加え、IDが持つ属性情報の連携といった機能を提供できる。
4はシステム利用における認証通信の流れを記録し、安全性を確認するための機能となる。
これらは主にIdP(Identity Provider)といわれるソリューションで提供される。かつてはADFS(Active Directory Federation Services)やLDAPによるオンプレミスでの提供が主であったが、近年はOkta、OneLogin、Entra IDといった海外SaaSから、GMOトラスト・ログイン、HENNGE One、Soliton OneGateといった国内SaaSまで、多数のSaaSソリューションが存在する。また、Shibboleth、Keycloak、OpenAMといったOSSの提供も盛んである。その他Active DirectoryやEntra IDなど、デバイスの認証を行うソリューションも存在する。
おわりに
ID認証の方は かなり駆け足で書いた印象だが、システムといってもWebにクライアント/サーバ、デバイスなど、認証はあらゆるシステム利用において存在するため、書ききれていない要素が多数存在する。
ID管理についても、システム管理に利用する特権IDを管理するためのPAM(Privileged Access Management)、組織内のIDではなくBtoCビジネスにおける一般顧客のIDを管理するためのCIAM(Customer Identity and Access Management)といった、特定の用途に長けたソリューションも多岐に渡って存在する。
今回はIDソリューション全般という形で入口を説明したが、今後、個別の要素について更に掘り下げていきたい。
Discussion