設計情報

投稿者: SPIRERS ナレッジ向上チーム 2022年1月22日 (土)

MKupdate vol.5 「SPIRAL ver.2.18 認証API」

IT関連のサービス拡充に伴い単体のサービス利用だけでなく、複数のサービスを組み合わせて利用するケースが増えています。それは、SPIRALも例外ではありません。
SPIRALがハブとなりデータ連携を支援したり、SPIRAL単体では実現できないアプリケーションをサービス連携で実現するなど、サービス連携があたり前に行われる状況になっていると思います。
複数のサービスをつなぐことで利便性を向上させることができますが、一方、セキュリティリスクを増やすことにつながるという側面もあります。
では、SPIRAL ver.2で複数サービスと連携を行う場合、安全性を担保しつつ利便性を上げるにはどうすればいいのか、この記事で説明していきたいと思います。

SPIRAL ver.2のAPI

大きな特徴として、APIリクエスト権限を細かくコントロールすることができるという点があります。
まずはその権限を設定する上で重要となるグループ機能とAPIの関係について説明していきます。
グループ機能とはユーザ等を取りまとめて権限を付与することができる機能
例えば、管理者と開発者の”グループ”を作って、管理者にはアカウントの全機能を使えるように設定し、
開発者にはサイトなどの設定権限のみに絞って権限を付与したりすることが可能になっています。
図ではグループAに、アプリAとサイトAの権限を持たせています。
グループ機能には、ユーザだけでなくAPIエージェントも含めることができる
APIエージェントでは、外部からAPIを実行するために必要なAPIキーを保有することができます。
疑似的なユーザのようなものになります。
APIエージェントでは、APIキーの有効化や発行をすることができます。
グループの権限によってAPIリクエストの権限もコントロールできる
このグループAに所属しているAPIエージェントのAPIキーを使用してAPIを実行した時、
グループAは、アプリAとサイトAの権限を付与されていましたが、アプリBの権限は持っていません。
そのためアプリBにAPIリクエストしようとしても権限がないためエラーとなります。
以上のようにAPIエージェントをグループに含めることで、APIリクエストの権限もユーザ権限と同様に、細かく設定、コントロールが可能であることが分かると思います。

次に具体的にどんな権限設定ができるのか、メリットと共に説明します。

■ フォーム上で製品情報DBに紐づいた製品選択プルダウンを出力する
この例は、APIを使い、製品情報DBの一部のデータを取得すれば良いというケースです。
・特定のDBの権限のみ付与できる
先ほど特定のアプリに権限を付与することができると説明しましたが、アプリの中でも特定のDBの権限のみ付与することも可能です。
例だとアプリ内に製品情報DBと注文情報DBの2つがありますが、APIで情報を取得する必要があるのは製品情報のみですので、製品情報DBの操作権限のみを付与します。
・DBに対して特定の操作権限のみ付与できる
DBの操作権限(閲覧/登録/更新/削除)のなかでも、特定の操作のみの権限を付与することも可能です。
例では製品情報DBにデータの登録や更新はせず、データの取得のみを行うので閲覧権限だけを付与します。
・特定のフィールドの権限のみ付与できる
さらにDBの中でも特定のフィールドの権限のみを付与することも可能になっています。
例ではプルダウンを作る上で必要なのは「製品ID」と「製品名」のみであるとします。であれば製品情報DBに含まれるその他のフィールド情報を閲覧する必要はありません。
ですので、閲覧権限を「製品ID」と「製品名」のみに絞って付与します。
このように権限を細かく設定することで、必要情報のみをAPIで操作できるようにコントロールすることができます。
そのためAPIを使用した時のデータ漏洩・改ざんのリスクを最小限に抑えることできます。

認証API

それでは、外部サービスとのシームレスな連携を実現するために、重要な認証APIの説明をします。

SPIRAL ver.1の認証APIを使ったことがある方は、やや複雑で実装の難易度が高いというイメージをお持ちの方もいるかもしれません。
というのもAPIでログインすると、マイエリア(SPIRAL ver.1の認証機能)が出力するURLが変わり、それを変更するプログラムを書いたり、cookie操作などを実装する必要があるなど、APIでログインする上で、認証API以外の処理も加える必要がありました。

SPIRAL ver.2の認証APIは、認証エリアにログイン後、特別な処理を書く必要が一切なく、シンプルで分かりやすいものになっています。
設定工数やテスト工数が削減され、外部サービスとの連携がやりやすくなっています。ぜひ活用いただければと思います。

基本的なメソッドやできることに関してはこちらのページをご参照ください。
またこちらのページでは設定手順などが載っていますのでご確認をいただければと思います。

具体的な利用方法

最後に、具体的に認証APIを使用した事例をご紹介します。
実は、現在、ご覧いただいているこのナレッジサイトは、WordPressとSPIRAL ver.2によって実装されており、
2者の連携には認証APIを用いています。

WordPressとの連携でクエスチョンボード(掲示板機能)の実装や、各記事一覧の記事を管理しています。
WordPressを採用するメリットとして、豊富なプラグインによる拡張性と、記事の更新の容易さや管理が優れている点が挙げられます。

しかし、ここでよく問題になるのがWordPress自体の脆弱性です。

WordPress側でAPIキーが漏洩した場合に、SPIRAL ver.2で管理しているデータが不正に取られてしまう可能性があります。

外部サービスとの連携をセキュアに実現
WordPressとの連携をセキュアに実現するために、ナレッジサイトでは以下の2つを実装しています。
1) 会員情報などの個人情報はver.2で管理
2) APIエージェントにはAPI処理に必要な最低限の権限のみを付与

これにより万が一、WordPress側でAPIキーが漏洩した場合でも、 ver.2で管理しているデータの漏洩や改ざんを防ぐことができます。

まとめ

認証APIの活用でサービス連携が可能になりアプリケションの利便性が爆上がり
認証APIを使う際に権限設定をすることで安全性が爆上がり

SPIRAL ver.2は、CMSなどの外部サービスとの連携で、サイトの利便性を向上させるとともに、安全にサイトを運用することができます!
今後、サービス間の連携が必要な場合は、ぜひSPIRAL ver.2をご検討いただければと思います。

解決しない場合はこちら コンテンツに関しての
要望はこちら