IDaaSとプロビジョニングについて調べてみた
はじめに
こんにちは、SHIFT の開発部門に所属しているmurasawaです。今期より中途で入社、バックエンド関連の開発を担当しています。
現在、研修でデータベースやRestAPIについて基本的な事から学んでいます。学んだことをアウトプットし理解を深めていくとともに技術の共有として役に立てば幸いです。
現在、認証基盤周りの開発を担当しており周辺知識の勉強をしています。
今回は認証基盤において重要なIDaaSとIDaaSでも用いられるユーザープロビジョニング(変更したID情報をほかのシステムに同期させる機能)などを調べてみました。
IDaaS(Identity as a service)とは
IDaaS (Infrastructure as a Service)や、PaaS (Platform as a Service)、SaaS (Software as a Service)などのように業界で使われている用語です。
これらと同様に、「Identityに関する機能をサービスとして提供するクラウドサービス」です。
Identity as a serviceを日本語で表現するなら、「認証認可管理サービス」とか、「統合認証サービス」というような言い方もされているようです。
"Identity"は、単純に和訳すると、「同一性」、「身元」などを意味します。
情報システムにおいては、「そのシステムの利用者として、誰なのかということ」というような意味になります。
また、部署や役職なども含むかも知れません。
「ID」や「アカウント」という概念も近いものを表すことがあります。
IDaaSは、「誰なのか」ということを管理するだけでなく、大枠で見ると、以下のような機能を持っていることが多いようです。
●保存:Identityに関する情報を保存・管理する。
●認証:システム利用者が誰なのかを管理する。
●認可:システム利用者が許可されているサービスやリソースを管理する。
●プロビジョニング: システム利用者が許可されているサービスのアカウントを管理する。
情報の保存や認証・認可の管理は、Identity as a Serviceと聞いて想像できる機能です。
詳しくは後述しますが、プロビジョニングを設定していないと複数のアカウント類をそれぞれ作成、管理しなければなりません。
プロビジョニングによって複数のアカウント類を一括作成、管理ができます。
IDaasの使い勝手を考えるとプロビジョニングはIDaaSとシステムを連携するときにセットで考えることが多いようです。
プロビジョニングとは
プロビジョニングという言葉は日本語訳で「供給、支給、引き当て、事前設定」という意味があります。
元をたどると軍事活動で、必要な食糧などの物資を準備し、提供することをプロビジョニングと呼んでいたようですが、IT用語としては「設備やサービスにおいて、新たな利用申請や需要が発生した場合に、必要となる資源一式の割り当てを行うこと」を意味して使われることが多いようです。
どのくらいの需要があるかを予測→予測を元に事前に用意する
というのが、プロビジョニングの基本的なスタンスです。
プロビジョニングの種類
プロビジョニングにはいくつかの種類があります。
主な種類は「サーバープロビジョニング」「サービスプロビジョニング」「ユーザープロビジョニング」の3つです。
サーバープロビジョニング
サーバーを需要に合わせて、設定し供給することです。
利用可能なサーバーを需要に合わせて設定し、利用可能な状態で提供することをサーバープロビジョニングといいます。
サーバープロビジョニングにより、
・利用中のサーバーに障害が発生した際に、予備のサーバーに切り替えサービスを止めずに原因究明
・アクセスが集中した際にサーバーを増強し、サービスが停止しないようにする。
などが可能になります。
また、障害が発生したサーバーを再び利用可能にするための作業もサーバープロビジョニングの一環です。
サービスプロビジョニング
サービスプロビジョニングはISP(Internet Service Provider)がユーザー向けにサービスを設定・提供することを指しています。
具体的には、DNSサーバーの設定やメール設定、FTPの設定、HTTPSの設定などがあります。
インターネット回線を契約した後に送られるパスワードや電子メールのアドレスもサービスプロビジョニングの一環です。
ユーザープロビジョニング
システムやアプリには利用する際に会員登録を行うものがあります。
会員登録で入力した情報をもとにアカウント生成や権限、設定が割り当てられます。
このようにシステムやアプリケーションを利用する際にユーザーのアカウントや権限の付与、設定などの割り当てをユーザープロビジョニングと呼びます。
上記三つのプロビジョニングのほかにシンプロビジョニングというものもあります。
シンプロビジョニング
ストレージの世界で用いられており、「シン(Thin)」とは「薄く、そぎ落とされた様」を意味しています。
複数稼働しているストレージを仮想的に統合して、1つの大きなストレージプールとして利用することを「ストレージ仮想化」と呼びます。
そしてストレージを各サーバーに割り当てるわけですが、サーバーがストレージに要求してくる容量と実際にサーバーが使用している容量には乖離があります。
サーバーはストレージに要求する容量のうち20~30%程度しか使用していないことが多く、そのままでは割り当てた70%~80%は無駄になってしまいます。
そこでこの70%~80%を仮想的に割り当てることで無駄をなくすためにシンプロビジョニングが行われます。
サーバーの要求容量を満たしつつ、実際に使っている物理容量を最小限に抑えることができます。
もちろん、使用する物理容量が増えたらその分、サーバーに割り当てられている物理容量を増やす必要はありますが、サーバー利用の初期費用を抑えたり、ストレージを効率よく運用することができます。
IDaaS(Identity as a service)におけるプロビジョニング
IDaaSは、IDentityに関する情報を保持していて、情報に基づいてシステム利用者が「誰なのか」を「認証」によって確認します。
そして認証されたユーザにどんな権限、サービス利用が許可されているかを「認可」によって確認します。
認可されている権限、サービスがわかったとしても、そのサービスの方ではまだ利用可能な状態になっていません。
ここで、「利用可能な状態に準備する処理」がプロビジョニングです。 IDaaSが持つ情報を使って、対象サービスにアカウントを作成し、利用できる状態を準備します。
プロビジョニングによってIDaaSはなにも設定や登録してない状態から、利用者にサービスを利用させる準備までを一気通貫で行えるようになります。
例えば、「Microsoft 365」と「Google アカウント」を利用している会社に、新しく社員が入社したとします。(「Microsoft 365」とはMicrosoft社、「Google アカウント」とはGoogle社の商標になります。正確な仕様はホームページをご参照ください)
IDaaSを導入していて、「Microsoft 365」と「Google アカウント」にプロビジョニング連携設定ができていれば、IDaaSでアカウントを作成し、「Microsoft 365」と「Google アカウント」を認可してあげることで、MicrosoftとGmailにも、自動的にアカウントが作成され、利用可能になります。
認証は、IDaaSのシングルサインオンでまとめて行うことができ、個別にログインする必要はありません。
また、パスワードの管理も不要です。
一方で、IDaaSが導入されていない場合、「Microsoft 365」と「Google アカウント」の双方に、アカウントを個別に作成する必要があります。
IDaaSでプロビジョニング設定がなされていれば、利用するサービスが複数あったとしても、IDaaSに登録して認可するだけで、入社準備が完了します。
終わりに
今回、プロビジョニングについて概念的な理解のために調べまとめました。
プロビジョニングという言葉は聞いたことがありませんでしたが、身近なところで使われておりサービスを便利に使うには重要な技術でした。
日ごろ漠然と「便利だなあ」と感じていたものの具体的な理解が進み、面白いと感じています。
単語知識としてのプロビジョニングは理解できたと思うので実際の開発に意識してつなげていけると思います。
今後、実装を行っていくことで具体的な処理や利便性を理解していけると感じているので、実運用で新しく学んだことや気づきがあればまたまとめたいと思います。
■このライターのほかの記事
__________________________________
お問合せはお気軽に
https://service.shiftinc.jp/contact/
SHIFTについて(コーポレートサイト)
https://www.shiftinc.jp/
SHIFTのサービスについて(サービスサイト)
https://service.shiftinc.jp/
SHIFTの導入事例
https://service.shiftinc.jp/case/
お役立ち資料はこちら
https://service.shiftinc.jp/resources/
SHIFTの採用情報はこちら
https://recruit.shiftinc.jp/career/