Upgrade to Pro — share decks privately, control downloads, hide ads and more …

共創型開発のためのAPIマーケットプレイスにおける認証システムの考察

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers. →
Avatar for Toriyama Toriyama
November 21, 2023

 共創型開発のためのAPIマーケットプレイスにおける認証システムの考察

2023/11/17 電子通信学会 サービスコンピューティング研究会での発表資料
Fujitsu Research Portalの認証基盤の構築とWeb APIの保護について説明する

Avatar for Toriyama

Toriyama

November 21, 2023

Other Decks in Technology

Transcript

  1. Fujitsu Research Portalの要件 1. オンラインで登録が完結する 2. 本人認証を行うことで悪質な利用を抑止する 3. 技術を簡単に試せる 4.

    アカウント登録を行ったユーザのみが技術を試せる 5. 各技術の提供は社内の異なる組織によって行われる 6. 1か月半後に公開する必要がある 7. 日本国内のみでなく海外にも公開する 8. 提供した技術のWeb APIを用いたアプリケーション作成ができる © 2023 Fujitsu Limited 3
  2. Fujitsu Research Portalの要件 1. オンラインで登録が完結する 2. 本人認証を行うことで悪質な利用を抑止する 3. 技術を簡単に試せる 4.

    アカウント登録を行ったユーザのみが技術を試せる 5. 各技術の提供は社内の異なる組織によって行われる 6. 1か月半後に公開する必要がある 7. 日本国内のみでなく海外にも公開する(課題1) 8. 提供した技術のWeb APIを用いたアプリケーション作成ができる (課題2) © 2023 Fujitsu Limited 本発表は以下の2つの要件への 対応を説明する 4
  3. Fujitsu Research Portalの要件 1. オンラインで登録が完結する 2. 本人認証を行うことで悪質な利用を抑止する 3. 技術を簡単に試せる 4.

    アカウント登録を行ったユーザのみが技術を試せる 5. 各技術の提供は社内の異なる組織によって行われる 6. 1か月半後に公開する必要がある 7. 日本国内のみでなく海外にも公開する(課題1) 8. 提供した技術のWeb APIを用いたアプリケーション作成ができる (課題2) © 2023 Fujitsu Limited 課題1 5
  4. 法令間対応における要求の矛盾 ⚫輸出管理に関する法令 ⚫個人情報保護に関する法令 © 2023 FUJITSU LIMITED 国ごとに異なる 中華人民共和国 個人情報保護法

    GDPR ADPPA 対応した国のみに制限したい 法令への対応を チェック 対象国を制限せず公知化する 国制限 全世界 公開技術 輸出 「外国為替令第25条」に 定める役務取引の許可が 必要 公知化 「貿易外省令9条」に より許可を要しない 課題1 - キャッチオール規制 - リスト規制 対象外を確認済み 7
  5. サイト分割による法令対応 © 2023 FUJITSU LIMITED 技術公開サービス 日本語サイト 英語サイト 公開技術A 公開技術B

    公開技術C 公開技術D 全世界 国制限なし 国制限あり 未対応国 対応国 言語障壁 誘導 公知化 課題1 8
  6. 認証基盤の構成案 ⚫個別構成 ⚫統合構成 © 2023 FUJITSU LIMITED 日本語サイト 英語サイト 認証基盤

    認証基盤 認証基盤 ユーザ情報 ユーザ情報 ユーザ情報 2サイトのユーザ情報を管理する認証基盤を 2種類実装し比較した 課題1 日本語サイト 英語サイト 9
  7. アカウント登録時に取得するユーザ情報 © 2023 FUJITSU LIMITED 取得情報 日本語サイト 英語サイト 基本情報 (姓名,認証情報等の共通項目)

    ✓ ✓ 日本語サイト利用に関する同意 利用規約・個人情報取り扱いポリシ ✓ 英語サイト用利用に関する同意 利用規約・個人情報取り扱いポリシ ✓ 居住国 ✓ 課題1 11
  8. 実装した構成別アカウント登録フロー © 2023 FUJITSU LIMITED 居住国の取得 日本語サイト 利用に関する同意 基本情報の取得 英語サイト

    利用に関する同意 居住国の取得 英語 サイト YES NO 日本語サイト 日本語サイト 英語サイト 英語サイト 個別構成 統合構成 利用に関する同意 基本情報の取得 日本語テナント 英語テナント 個別実装となり 実装量が24%増大 実装の95%以上 共通 課題1 12
  9. Fujitsu Research Portalでの採用 ⚫個別構成 ⚫統合構成 © 2023 FUJITSU LIMITED 8月

    海外組織限定公開時に採用 実装量 運用コスト 大 小 小 大 9月 海外国限定公開時に採用 課題1 13
  10. Fujitsu Research Portalの要件 1. オンラインで登録が完結する 2. 本人認証を行うことで悪質な利用を抑止する 3. 技術を簡単に試せる 4.

    アカウント登録を行ったユーザのみが技術を試せる 5. 各技術の提供は社内の異なる組織によって行われる 6. 1か月半後に公開する必要がある 7. 日本国内のみでなく海外にも公開する(課題1) 8. 提供した技術のWeb APIを用いたアプリケーション作成ができる (課題2) © 2023 Fujitsu Limited 課題2 14
  11. 公開技術のユーザ管理 © 2023 FUJITSU LIMITED アイテム管理技術 user_id age userA 23

    userB 34 users item_id owner 1 userA item_user ユーザのマスタテーブル アイテム管理テーブル 課題2 15
  12. 公開技術のユーザ管理 © 2023 FUJITSU LIMITED アイテム管理技術 user_id age userA 23

    userB 34 users item_id owner 1 userB POST /items/1 {“from”: “userA”, “to”: “userB”} item_user アプリ 課題2 16
  13. アイテム管理技術 Fujitsu Research Portalへの組み込み © 2023 FUJITSU LIMITED user_id age

    fuserA 23 fuserB 34 users item_id owner 1 fuserB item_user Fujitsu Research Portal 認証基盤 API Gateway アクセストークン取得 POST /items/1 {“from”: “fuserA”, “to”: “fuserB”} ユーザ管理をPortalの認証基盤に移譲 課題2 APIリクエストの ユーザIDを利用 17
  14. アイテム管理技術 ユーザアプリへの組み込み © 2023 FUJITSU LIMITED item_id owner 1 Alice

    item_user Fujitsu Research Portal API Gateway 課題2 ユーザアプリX ポータルに登録したユーザが作成した Webアプリケーション 18
  15. アイテム管理技術 ユーザアプリへの組み込み © 2023 FUJITSU LIMITED item_id owner 1 Bob

    item_user Fujitsu Research Portal API Gateway 課題2 ユーザアプリX user_id age Alice 23 Bob 34 users アプリユーザID サービスユーザID POST /items/1 {“from”: “Alice”, “to”: “Bob”} 19
  16. 複数ユーザアプリへの組み込み © 2023 FUJITSU LIMITED users user_id age Alice 23

    Bob 34 ユーザアプリY user_id age Bob 45 users 45歳の別のBobが 登録している 課題2 アイテム管理技術 item_id owner 1 Alice item_user 1インスタンスを 複数アプリで共有 ユーザアプリX Fujitsu Research Portal API Gateway 20
  17. ユーザアプリへの組み込みを想定した構成 © 2023 FUJITSU LIMITED 課題2 users user_id age Alice

    23 Bob 34 user_id age Bob 45 users ユーザアプリX アイテム管理技術 item_id owner 1 Bob item_user API Gateway Fujitsu Research Portal ユーザアプリY POST /items/1 {“from”: “Alice”, “to”: “Bob”} 21
  18. ユーザアプリへの組み込みを想定した構成 © 2023 FUJITSU LIMITED GET /users/Bob/items ユーザアプリYのBobが所持アイテムを一覧をリクエスト 課題2 users

    user_id age Alice 23 Bob 34 user_id age Bob 45 users ユーザアプリX ユーザアプリY アイテム管理技術 item_id owner 1 Bob item_user API Gateway Fujitsu Research Portal 22
  19. ユーザアプリへの組み込みを想定した構成 © 2023 FUJITSU LIMITED 200 OK [ “1” ]

    サービスユーザIDの名前空間内でアプリユーザIDの衝突が起こる 課題2 users user_id age Alice 23 Bob 34 user_id age Bob 45 users ユーザアプリX ユーザアプリY アイテム管理技術 item_id owner 1 Bob item_user API Gateway Fujitsu Research Portal 本来は空の配列であるべき 23
  20. サービスユーザIDの改良方針 © 2023 FUJITSU LIMITED アプリIDを各アプリに発行し,サービスユーザIDのプレフィックスとして利用する アプリID = AppX アプリID

    = AppY 課題2 item_id owner 1 AppX_Alice Fujitsu Research Portal アイテム管理技術 app id AppX AppY apps item_user users user_id age Alice 23 Bob 34 user_id age Bob 45 users ユーザアプリX ユーザアプリY API Gateway アプリ管理 24
  21. サービスユーザIDの改良方針 © 2023 FUJITSU LIMITED POST /items/1 {“from”: “AppX_Alice”, “to”:

    “AppX_Bob”} 課題2 users user_id age Alice 23 Bob 34 user_id age Bob 45 users ユーザアプリX(AppX) ユーザアプリY(AppY) item_id owner 1 AppX_Bob Fujitsu Research Portal アイテム管理技術 app id AppX AppY apps item_user API Gateway アプリIDをアプリユーザIDの プレフィックスとして送信 アプリ管理 25
  22. サービスユーザIDの改良方針 © 2023 FUJITSU LIMITED GET /users/AppY_Bob/items 200 OK []

    アプリごとにサービスユーザIDの名前空間を分離できる 課題2 item_id owner 1 AppX_Bob Fujitsu Research Portal アイテム管理技術 app id AppX AppY apps item_user API Gateway users user_id age Alice 23 Bob 34 user_id age Bob 45 users ユーザアプリX(AppX) ユーザアプリY(AppY) アプリIDをアプリユーザIDの プレフィックスとして送信 アプリ管理 26
  23. 悪意のあるアプリによる攻撃 © 2023 FUJITSU LIMITED GET /users/AppX_Alice/items 200 OK [“1”]

    悪意のあるユーザが作成したアプリによって別アプリのデータ読み書きができる GET /users/AppX_Alice/items 悪意のあるアプリ(BadApp) 課題2 users user_id age Alice 23 Bob 34 ユーザアプリX(AppX) item_id owner 1 AppX_Alice Fujitsu Research Portal アイテム管理技術 app id AppX BadApp apps item_user API Gateway アプリ管理 27
  24. 悪意のあるアプリによる攻撃に対する保護 © 2023 FUJITSU LIMITED GET /users/AppX_Alice/items ?secret=secretX 悪意のあるアプリ(BadApp) 課題2

    users user_id age Alice 23 Bob 34 ユーザアプリX(AppX) item_id owner 1 AppX_Alice Fujitsu Research Portal アイテム管理技術 app id secret AppX secretX BadApp secretBad apps item_user アプリ管理 API Gateway アプリ認証用のAPIキー APIキーとサービスユーザIDのプレフィックスがアプリ管理 内のappsテーブルで対応づいているか検証する 28
  25. 悪意のあるアプリによる攻撃に対する保護 © 2023 FUJITSU LIMITED 悪意のあるアプリ(BadApp) 課題2 users user_id age

    Alice 23 Bob 34 ユーザアプリX(AppX) item_id owner 1 AppX_Alice Fujitsu Research Portal アイテム管理技術 app id secret AppX secretX BadApp secretBad apps item_user アプリ管理 API Gateway GET /users/AppX_Alice/items ?secret=secretBad secretBadに対応するアプリIDは BadAppなのでエラーを返す 29
  26. まとめ ⚫本発表ではFujitsu Research Portalの2つの要件へ対応した 1. 日本国内のみでなく海外にも公開する(課題1) 2. 提供した技術のWeb APIを用いたアプリケーション作成ができる(課題2) ⚫課題1への対応

    ⚫日本語サイトと英語サイトに分割 ⚫認証基盤を個別構成/統合構成で比較 ⚫実装量の少なさから8月の海外組織限定 公開には個別構成を採用 ⚫ユーザ情報管理の運用コストの観点から 9月から統合構成に移行 © 2023 FUJITSU LIMITED ⚫課題2への対応 ⚫複数アプリで公開サービスの1インスタンス を共有し,ユーザIDの名前空間が衝突 ⚫アプリIDをサービスユーザIDのプレフィックス として名前空間を分離した ⚫アプリIDを保護するためにWeb APIの 資格情報と紐づけて検証する 30