Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
プロダクト成長に対応するプラットフォーム戦略:Authleteによる共通認証基盤の移行事例 /...
Search
KAKEHASHI
PRO
October 30, 2024
Technology
1
670
プロダクト成長に対応するプラットフォーム戦略:Authleteによる共通認証基盤の移行事例 / Building an authentication platform using Authlete and AWS
OAuth & OpenID Connect 勉強会 ー 認可サーバーの作りかた(AWS編)
https://authlete.connpass.com/event/333513/
での登壇資料です
KAKEHASHI
PRO
October 30, 2024
Tweet
Share
More Decks by KAKEHASHI
See All by KAKEHASHI
AIでめっちゃ便利になったけど、結局みんなで学ぶよねっていう話
kakehashi
PRO
1
410
システムとの会話から生まれる先手のDevOps
kakehashi
PRO
0
300
やっぱり余白が大切だった話
kakehashi
PRO
7
3.1k
貧民的プログラミングのすすめ
kakehashi
PRO
2
520
目標と時間軸 〜ベイビーステップでケイパビリティを高めよう〜
kakehashi
PRO
8
1.8k
人はなぜISUCONに夢中になるのか
kakehashi
PRO
6
2.1k
データ資産をシームレスに伝達するためのイベント駆動型アーキテクチャ
kakehashi
PRO
2
1.3k
アジャイルチームが変化し続けるための組織文化とマネジメント・アプローチ / Agile management that enables ever-changing teams
kakehashi
PRO
3
4.9k
チームが毎日小さな変化と適応を続けたら1年間でスケール可能なアジャイルチームができた話 / Building a Scalable Agile Team
kakehashi
PRO
4
590
Other Decks in Technology
See All in Technology
白金鉱業Meetup_Vol.18_AIエージェント時代のUI/UX設計
brainpadpr
1
220
CodePipelineのアクション統合から学ぶAWS CDKの抽象化技術 / codepipeline-actions-cdk-abstraction
gotok365
5
310
生成AIのユースケースをとにかく集めてまるっと学ぶ!/ all about generative ai usecases
gakumura
2
260
Web Intelligence and Visual Media Analytics
weblyzard
PRO
1
5.9k
今日からはじめるプラットフォームエンジニアリング
jacopen
8
1.7k
10ヶ月かけてstyled-components v4からv5にアップデートした話
uhyo
5
290
QA/SDETの現在と、これからの挑戦
imtnd
0
150
SDカードフォレンジック
su3158
1
640
意思決定を支える検索体験を目指してやってきたこと
hinatades
PRO
0
270
Стильный код: натуральный поиск редких атрибутов по картинке. Юлия Антохина, Data Scientist, Lamoda Tech
lamodatech
0
800
4/16/25 - SFJug - Java meets AI: Build LLM-Powered Apps with LangChain4j
edeandrea
PRO
2
130
30代からでも遅くない! 内製開発の世界に飛び込み、最前線で戦うLLMアプリ開発エンジニアになろう
minorun365
PRO
15
4.6k
Featured
See All Featured
Six Lessons from altMBA
skipperchong
28
3.7k
Scaling GitHub
holman
459
140k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Faster Mobile Websites
deanohume
306
31k
RailsConf 2023
tenderlove
30
1.1k
Designing for humans not robots
tammielis
253
25k
Statistics for Hackers
jakevdp
798
220k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.7k
VelocityConf: Rendering Performance Case Studies
addyosmani
329
24k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
Music & Morning Musume
bryan
47
6.5k
Transcript
プロダクト成長に対応するプラットフォーム戦略: Authleteによる共通認証基盤の移行事例 2024/10/30 OAuth & OpenID Connect 勉強会 ー 認可サーバーの作りかた(AWS編)
1
© KAKEHASHI Inc. 自己紹介 2 岩佐 幸翠 (@kosui_me) 2019年にエンジニアとしてのキャリアを開始し、認証認可基盤の開発に従事。
2022年に カケハシへ入社し、社内プラットフォームの開発を担う。 すてにゃん (@stefafafan) 2024年にカケハシへ入社し、プラットフォームチームのテックリードを引き継ぐ。
© KAKEHASHI Inc. カケハシのビジョン 明日の医療の基盤となる、エコシステムの実現。 3 患者さん 薬局 医薬品発注・管理最適化
© KAKEHASHI Inc. カケハシのマルチプロダクトSaaS 4
© KAKEHASHI Inc. 目次 • カケハシのビジネスと顧客要求の変化 • カケハシの認証基盤とその課題 • カケハシの認証基盤刷新プロジェクト
◦ 技術選定 Authleteを選んだ理由 ◦ システム構成 AWSとAuthleteを利用した認可サーバー ◦ 移行戦略 プロダクトチームとの連携 • 今後の展望 5
カケハシのビジネスと 顧客要求の変化 6
© KAKEHASHI Inc. カケハシのビジネスの変化 薬局向けSaaSから「多様な顧客と協業する多面的な医療プラットフォーム」へ ▶ 機能・品質の両面で顧客のニーズが高度化 7 背景 マルチプロダクト
SaaS 創業期 成長期 転換期 単一プロダクト SaaS 中堅・中小企業に加え 大手薬局チェーン 中堅・中小企業 全国の薬局に加え 製薬企業・医薬品卸 など 多面的 プラットフォーム プロダクト 顧客 フェーズ
© KAKEHASHI Inc. カケハシの顧客ニーズの変化 医療情報システム向けに省庁が定める「3省2ガイドライン」は年々厳格化 エンタープライズ顧客を中心にガイドラインの厳格な遵守への期待が高まる 8 背景 監査ログ 患者の病歴などの個人情報が不正に持ち出されていないか
BCP (事業継続計画) 自然災害時・サイバーテロ時も業務を継続できるか 二要素認証 薬局の執務室はスマホの持ち込みが禁止の場合も多い セキュリティ コンプライアンス
© KAKEHASHI Inc. カケハシの従来の認証基盤 • AWS Cognito ユーザープールを使用 • 認証機能はプロダクトごとに開発・運用
9 ⋯ プロダクト 認証基盤 認証機能 認証機能 認証機能 プロダクトA プロダクトB プロダクトH Cognito API 主な責務はプロダクトへ 認証成功/失敗を返すのみ プロダクトごとに開発・運用 😥 • ログイン画面 • アカウント状態の検証 • 監査ログ • 二要素認証 • ディザスタリカバリ 背景
© KAKEHASHI Inc. カケハシの認証システムの課題 コンプライアンス & セキュリティ 顧客体験 プロダクトによってログイン画面が全く異なる
SSOを導入し顧客体験を統一したい 各プロダクトの開発者は認証の専門家ではない 運用負荷が高く、セキュリティ上の懸念も残る 運用負荷 10 大手薬局チェーンでも利用される医療システムとして 二要素認証・監査ログ・BCPなど高い品質が要求される 背景
カケハシの認証基盤 刷新プロジェクト 11
プロダクト運用負荷の低減 統一認証基盤が認証の関心事を 一手に引き受ける プロダクトチームは 本来の機能開発に集中できる 一貫した品質の提供 セキュリティ&コンプライアンス品質を 高い水準で全てのプロダクトへ 認証基盤の刷新 12
プロダクトA プロダクトB プロダクトH ⋯ 統一認証基盤 OAuth/OIDC 認証機能 認証機能 認証機能 下記を一任💪 • ログイン • アカウント状態の検証 • 監査ログ • 二要素認証 • BCP
© KAKEHASHI Inc. 認証基盤の刷新プロジェクト 1. 技術選定 Authleteを選んだ理由 2. アーキテクチャ AWSとAuthleteを利用した認可サーバーのシステム構成
3. 移行戦略 プロダクトチームとの連携 13
技術選定 Authleteを選んだ理由 14
© KAKEHASHI Inc. 新認証基盤の要件 15 医療SaaSでは「認証基盤の障害」は顧客業務と患者の生命に関わる 重要な要件 (優先度順) 移植性 認証基盤は事業継続の要である
OpenID Connectに基づき移植性を最大化する セキュリティ 患者の個人情報(要配慮個人情報)を扱うシステムとして必須 可用性 深夜・休日や災害時にも稼働し続ける必要がある 運用コスト カケハシの将来の事業状況に関わらず 半恒久的に小規模なチームで運用が可能 技術選定
統一認証基盤の運用負荷 16 多様化し続ける要件 統一認証基盤は OAuth/OIDCをサポートした上で 多様化する要件に応える必要がある OAuth/OIDC対応の外部化 ➡中長期運用を見据え OAuth/OIDC対応を外部化したい
• IDaaS (Identity as a Service) • BaaS (Backend as a Service) 統一認証基盤 BCP ログイン 監査ログ 二要素認証 SSO OAuth/OIDC プロダクトA プロダクトB プロダクトH ⋯ ⋯ 技術選定
© KAKEHASHI Inc. OAuth/OIDCプロバイダの完全内製の難しさ 17 現在だけでなく「数年後も運用し続けられるか?」という視点が重要 満たさない要件 運用コスト 初期開発時だけでなく運用時も、半恒久的に高度な対応が必要 •
RFCやプラクティスと照らし合わせながら改修 • 認可コード・トークンの適切な管理と破棄 • キーペアのローテーションなどを自前で管理 セキュリティ 各種攻撃手法を理解した上で 新しい仕様やプラクティスを追随する必要がある 技術選定
© KAKEHASHI Inc. IDaaS (Identity as a Service) の活用
18 IDaaSは認証の関心ごとをUI含め丸ごと提供するクラウドサービスの総称 丸ごと提供 UI 認証認可 サービス ユーザー情報 API グループ情報 技術選定 利点 必要なものが一通り揃っているため 認証機能の必要なプロダクトを ゼロから迅速に提供するには便利
既存システム IDaaS (Identity as a Service) の採用見送り 19 ②カスタマイズ性 独自のカスタマイズが必要な場合
柔軟性が一般的にBaaSより低い • 独自の認証方式の追加 例) 顧客のICカードによる認証 ①データベースの移行コスト 認証基盤とデータベースの同時移行は 時間を要する & 障害発生リスクが高い UI 認証認可 サービス ユーザー情報 API グループ情報 既存データの移行が必要 API依存の削除が必要 技術選定
© KAKEHASHI Inc. BaaS(Backend as a Service) の採用 自前実装やIDaaSではなくBaaSがユースケースにフィット
20 既存システム Authlete UI 認証認可 サービス API OAuth/OIDCの 継続的なサポートを 専門家へ委託 既存のデータや システムは そのまま活用 技術選定
© KAKEHASHI Inc. 高い専門性と継続的なサポート • OpenID Foundation (https://openid.net/certification/) より認証済み •
FAPIなど最新仕様の迅速なサポート • 日本語での充実した運用サポート 運用コストの低減 OAuth/OIDCを適切な粒度で抽象化 • トークン・認可コードの管理や鍵の管理が不要 • state・nonce・PKCEなどの実装や状態管理が不要 BaaSの中でもなぜAuthlete? 21 技術選定
アーキテクチャ AWSとAuthleteを利用した 認可サーバーのシステム構成 22
認証基盤システムの構成 23 以下の要素で構成 • Amazon ECS (Fargate) Remixで実装 •
Amazon DynamoDB セッション管理に利用 低い運用コストで高可用性 アクセスパターンが限定されている • Amazon Cognitoユーザープール 既存のデータをそのまま活用し シームレスな移行を実現 アーキテクチャ WAF CloudFront ALB S3 Cognito ユーザープール ECS (Fargate) DynamoDB Authlete Google Cloud - Authlete様管理 (カケハシ専用アカウント) AWS - カケハシ管理
© KAKEHASHI Inc. BCP (事業継続計画) 24 BCP(Business Continuity Plan) とは
自然災害・サイバーテロなどの危機に瀕した場合に 企業が中核となる業務を継続・早期復旧するための計画 介護や医療の領域で行政からBCPの策定が義務化 認証基盤の災害対策 (ディザスタリカバリ) [予定] • マルチリージョン化 • Authleteの災害対策機能の活用 アーキテクチャ
認証基盤(AWS)側 マルチリージョン化し 災害発生時にDNSの向き先を切替 Authlete(Google Cloud)側 Authleteが提供する災害対策機能は 災害時に自動でリージョンを切替 • 金融機関のオープン API
の信頼性を高める 災害対策機能を強化 - Authlete https://www.authlete.com/ja/news/20191 024_failover/ 災害対策: マルチリージョン構成による可用性の担保 [予定] 25 アーキテクチャ Authlete(Google Cloud) 東京リージョン 大阪リージョン 認証基盤(AWS) 東京リージョン 大阪リージョン DNS レプリケーション レプリケーション
課題: Cognitoユーザープールのバックアップ Cognitoユーザープールは パスワードなどの同期に非対応 • AWSのリファレンスアーキテクチャに 「機密情報は同期できない」と明記 • BCPの発動時はユーザーが
パスワードを再設定する必要がある 急がば回れ Authleteにより認証基盤を統一すれば 認証情報のデータ移行も視野に入る 26 アーキテクチャ 大阪リージョン 東京リージョン エクスポーター DynamoDB グローバル テーブル Cognito ユーザープール インポーター Cognito ユーザープール パスワードが エクスポートできない
27 移行戦略 認証基盤の移行のための プロダクトチームとの連携
© KAKEHASHI Inc. プロダクトチームとの連携における課題 28 移行時の課題 プロダクトチームから短期的に見れば... 移行のコスト > メリット
戦略的な移行支援のススメ 単に共通認証基盤を作るだけでは誰も使わないため 既存基盤から移行するための戦略も必要 ➡「プラットフォームエンジニアリング」のプラクティスを活用 移行戦略
© KAKEHASHI Inc. プラットフォームチームとして意識するサポート体制 プロダクトチームに寄り添って基盤の移行・導入支援を意識する必要がある 実際に実施中・実施予定のサポート • レビューよりも前に介入する ライブラリの選定や設計から積極的にコミットし伴走する •
参考実装と社内向けドキュメントの整備 開発ポータルを用意・提供 • アクティブサポート SlackでのQ&A対応 29 移行戦略
今後の展望 30
© KAKEHASHI Inc. 今後の展望 • 道半ばなので、1プロダクトずつ移行スケジュールを調整しながらできる限りサポー トをしていきます • プロダクトごとの要件に柔軟にサポートできるように継続的に共通基盤を改善して いく予定です
31