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
サーバーレスPCI DSS対応クレジットカード決済 基盤システムを運用しながら、みんな...
Search
MIXI ENGINEERS
PRO
February 13, 2020
Programming
7
1.6k
サーバーレスPCI DSS対応クレジットカード決済 基盤システムを運用しながら、みんなでわいわい DIYの精神で、新しいモバイル決済サービス 6gramをともにつくっている話/6gram-DIY
Developers Summit 2020での登壇資料です。
https://event.shoeisha.jp/devsumi/20200213/session/2361/
MIXI ENGINEERS
PRO
February 13, 2020
Tweet
Share
More Decks by MIXI ENGINEERS
See All by MIXI ENGINEERS
「モンスターストライク」の運営を支えるデータ分析基盤の歴史と進化 / History and evolution of the data analysis infrastructure supporting “Monster Strike” operations
mixi_engineers
PRO
3
120
【全貌公開】 MIXI の Atlassian Cloud 移行の裏側 / Behind MIXI's Migration to Atlassian Cloud
mixi_engineers
PRO
0
200
MIXI TECH NOTE #12
mixi_engineers
PRO
2
25
運営11年目タイトルを守る最強の盾の有効性と活用法
mixi_engineers
PRO
2
280
MIXI における技術広報とその役割
mixi_engineers
PRO
2
290
セキュリティ監視の内製化 効率とリスク
mixi_engineers
PRO
8
2.5k
IT企業でロボットを作った話 / A story about building a robot in an IT company
mixi_engineers
PRO
2
110
「共闘ことばRPG コトダマン」 SREチーム流 アプリのユーザー体験向上を支えるオブザーバビリティ
mixi_engineers
PRO
1
280
MIXI M のこれまでとこれから / Welcome Fintech Community #2
mixi_engineers
PRO
1
260
Other Decks in Programming
See All in Programming
「とりあえず動く」コードはよい、「読みやすい」コードはもっとよい / Code that 'just works' is good, but code that is 'readable' is even better.
mkmk884
3
100
これが俺の”自分戦略” プロセスを楽しんでいこう! - Developers CAREER Boost 2024
niftycorp
PRO
0
190
LLM Supervised Fine-tuningの理論と実践
datanalyticslabo
4
1.1k
Monixと常駐プログラムの勘どころ / Scalaわいわい勉強会 #4
stoneream
0
270
php-conference-japan-2024
tasuku43
0
230
短期間での新規プロダクト開発における「コスパの良い」Goのテスト戦略」 / kamakura.go
n3xem
2
170
KubeCon + CloudNativeCon NA 2024 Overviewat Kubernetes Meetup Tokyo #68 / amsy810_k8sjp68
masayaaoyama
0
250
ソフトウェアの振る舞いに着目し 複雑な要件の開発に立ち向かう
rickyban
0
890
Cloudflare MCP ServerでClaude Desktop からWeb APIを構築
kutakutat
1
540
menu基盤チームによるGoogle Cloudの活用事例~Application Integration, Cloud Tasks編~
yoshifumi_ishikura
0
110
モバイルアプリにおける自動テストの導入戦略
ostk0069
0
110
Effective Signals in Angular 19+: Rules and Helpers @ngbe2024
manfredsteyer
PRO
0
130
Featured
See All Featured
Docker and Python
trallard
42
3.1k
Git: the NoSQL Database
bkeepers
PRO
427
64k
Optimising Largest Contentful Paint
csswizardry
33
3k
The Power of CSS Pseudo Elements
geoffreycrofte
73
5.4k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
26
1.9k
For a Future-Friendly Web
brad_frost
175
9.4k
Building Better People: How to give real-time feedback that sticks.
wjessup
365
19k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.9k
Become a Pro
speakerdeck
PRO
26
5k
How to Think Like a Performance Engineer
csswizardry
22
1.2k
Facilitating Awesome Meetings
lara
50
6.1k
Reflections from 52 weeks, 52 projects
jeffersonlam
347
20k
Transcript
サーバーレスPCI DSS対応クレジットカード決済 基盤システムを運⽤しながら、みんなでわいわい DIYの精神で、新しいモバイル決済サービス 6gramをともにつくっている話 Developers Summit 2020 株式会社ミクシィ ID・ペイメント事業部
システムグループ マネージャー ⽥岡 ⽂利 2020/02/13
おしながき ID ペイメント事業部 と 私 タイトルのおさらい PCI DSSとクレジットカード決済 PCI DSS対応
サーバーレス決済システム?? 6gramにするために おわりに
⾃⼰紹介 IDペイメント事業部と私 ⽥岡⽂利 株式会社ミクシィ ID・ペイメント事業部 システムグループ マネージャー 2012年4⽉⼊社 → SNS
mixi の ⾃社Framework開発とサービス開発 →グループ会社の⽀援 (開発体制、ガツガツ開発、SREぽい事) → XFLAG アプリ・XFLAG ID の開発・運⽤ → 新サービス開発熟考期 (ビデオ・ライブ配信 / WebRTC / BLE) → 決済基盤の開発・運⽤や、新規決済系サービス「6gram」の開発を⾏っている
ID ペイメント事業部 IDペイメント事業部と私 社内外でのアカウント、個⼈情報、決済に関して簡単かつ信頼のおける基盤づくり - アカウント・ログイン (key: パスワードレス / FIDO
/ OAuth) ‣ SMS / mail / SNS / etc - 個⼈情報の管理・本⼈確認 (⽣年⽉⽇・住所・⾝分証・犯収法対の本⼈確認) - 決済(クレジットカード・銀⾏・ATM・ID決済) チーム構成 エンジニアリングマネージャ 1名 サーバーサイドエンジニア 5 (6)名 クライアントエンジニア 2名 全員で開発、運⽤を⾏っている
タイトルが⻑すぎますね!! タイトルのおさらい
サーバーレスPCI DSS対応クレジットカード決済 基盤システムを運⽤しながら、みんなでわいわい DIYの精神で、新しいモバイル決済サービス 6gramをともにつくっている話 タイトルのおさらい カード決済システムの構築・運⽤に関して 決済サービス開発に関して
決済サービスの基礎的な概念 ユーザー 加盟店 アクワイアラ 国際ブランド クレジットカード決済 カード発⾏業務 (信販会社など) 加盟店管理 VISA
/ JCBなど PCI DSSとクレジットカード決済 クレジットカード イシュア 決済代⾏
PCI DSS とは? クレジットカード業界のセキュリティ基準 これに厳格に準拠することで、カード番号などの情報を取り扱いできる 12要件、約400項⽬ 数年に⼀度、基準が改訂される PCI DSSとクレジットカード決済
カード情報の取り扱い ユーザー 加盟店 アクワイアラ 国際ブランド クレジットカード決済 カード発⾏業務 加盟店管理 VISA /
JCBなど PCI DSSとクレジットカード決済 クレジットカード イシュア 決済代⾏ อଘ ॴ༗ऀର֎ อଘ͍ͯ͠Δ લճͷΧʔυͰܾࡁ PCI DSS対応必須 PCI DSS対応必須
カード番号が通る経路も対象になる ユーザー ECサイト アクワイアラ 国際ブランド トークン カード発⾏業務 加盟店管理 VISA /
JCBなど PCI DSSとクレジットカード決済 クレジットカード イシュア 決済代⾏ લճͷΧʔυͰܾࡁ Χʔυ൪߸ΛτʔΫϯԽ &$αΠτͳͲͰΧʔυ൪߸ΛऔΓѻΘͳ͍͜ͱͰճආ Χʔυ൪߸ Χʔυͷ*% PCI DSS対応必須 PCI DSS対応必須 PCI DSS対応必須 PCI DSS対応不要
6gramの場合 ユーザー ECサイト アクワイアラ 国際ブランド トークン カード発⾏業務 加盟店管理 VISA /
JCBなど PCI DSSとクレジットカード決済 クレジットカード イシュア 決済代⾏ ܾࡁγεςϜ Χʔυ൪߸ΛτʔΫϯԽ ࠓճͭ͘ΔܾࡁγεςϜΠγϡΞͱܾࡁߦ྆ํͷػೳ ܾࡁγεςϜ PCI DSS対応必須
PCI DSS とは? クレジットカード業界のセキュリティ基準 これに厳格に準拠することで、カード番号などの情報を取り扱いできる 12要件、約400項⽬ 数年に⼀度、基準が改訂される ⼀年に⼀回オンサイト監査の実施 運⽤⼿順のドキュメントやその実施証跡 PCI
DSSとクレジットカード決済
アカウント要件 要件8 コンピュータにアクセスできる各ユーザーに⼀意のIDを割り当てる ‣ 8.2.3 パスワードは以下を満たす必要がある ‣ パスワードに7⽂字以上含まれる ‣ 数字と英⽂字を両⽅含む
‣ 8.2.4 パスワードは少なくとも90⽇ごとに変更する ‣ 8.2.5 これまで使⽤した最後の4つのパスワードのいずれかで同じである新しいパス ワードを許可しない PCI DSS対応サーバーレス決済システム *%ج൫ͱͯ͠ύεϫʔυϨεͱ͔Ωʔϫʔυʹͯ͠Δͷʹ パスワード要件
セキュリティ要件 要件5 すべてのシステムをマルウェアから保護する ⇨ 稼働中のサーバーにウイルスチェックなどが必要 要件11 セキュリティシステムおよびプロセスを定期的にテストする ‣ 11.4 侵⼊検知/侵⼊防⽌システムを使⽤して警告する
‣ 11.5 変更検出メカニズムを導⼊してファイル変更を監視、警告する PCI DSS対応サーバーレス決済システム IDS/IPS 要件
われわれの⼤⽅針 ⇨ 運⽤負荷をできるだけさげたい PCI DSS対応サーバーレス決済システム その⽅法に関して⼀部紹介します ‣ 「グループウォレットアプリ、6gramの運⽤をはじめてみた」 ‣ https://speakerdeck.com/ryosan470/6gram-sre-next-2020
インスタンスを使わない PCI DSS対応サーバーレス決済システム
インスタンスを使わない PCI DSS対応サーバーレス決済システム
真のサーバーレス サービスを運⽤しなければ、 インシデントも発⽣しない 冗談です PCI DSS対応サーバーレス決済システム
コンテナをRead Only で動かす PCI DSS対応サーバーレス決済システム
インスタンスレス + Read Only で何が嬉しいか リモートコンソールが存在しないためそもそも侵⼊できない - 侵⼊検知の仕組みを導⼊する必要がない Read Only
なのでそもそも書き換えができない - ファイル変更検出ソフトウェアが不要になる ログインできないのでID・パスワードもいらない ཧ͢Δίϯϙʔωϯτ͕ݮΔͱ͍͏͜ͱૉʹӡ༻ίετ͕ܰݮ ূཧίετܰݮ PCI DSS対応サーバーレス決済システム IDS/IPS 要件 パスワード要件
ストレージに関して RDBは基本user/passwordで接続しにいく… ↓ クレジットカード情報をはじめとするすべてのデータをDynamoDBに保存 AWSのmanagedなシステムによりそうことで ‣ KMSによるテーブルの暗号化 が⽤意(様々なコンポーネントで標準で暗号化がサポートされる) ‣ IAMをベースとした細かいアクセス制御(サービスのロールで管理できる)
‣ 開発者のユーザーではデータを⾒ることができません。 ‣ アプリケーションロールのみが、DynamoDBやその暗号化に使う鍵情報にアクセスができます。 PCI DSS対応サーバーレス決済システム
6gramにするために
まずは5グラムに 6gramにするために
プリペイド(クレジット)カードシステム 6gramにするために イシュア機能(カード会社) ‣ カード番号の管理 (カード番号や有効期限、セキュリティーコード) ‣ 残⾼の管理 チャージ機能(ポイント機能) ‣
クレカ決済 ‣ 銀⾏決済 —> (銀⾏登録 + 即時決済) or netBank振込対応 ‣ ATM⼊⾦(セブンバンク) モバイル決済への対応 (TSP連携) ‣ ApplePay / GooglePay
モバイル決済対応の登場⼈物 ⾚いものを作る ユーザー アクワイアラ 国際ブランド クレジットカードによる⼊⾦ VISA / JCBなど イシュア ܾࡁߦج൫
カード番号 ⼝座番号 残⾼ アクワイアラ 国際ブランド クレジットカードの利⽤ VISA / JCBなど TSP TR ApplePay/GooglePay対応 Apple/Google 加盟店 カード番号 Token管理 残⾼ Issuer基盤 APPサーバ 銀⾏ 6gramにするために
要件をすべて満たすパッケージは存在しなかった 6gramにするために
⾃分でつくるしかないYO! みんなでわいわいDIY 6gramにするために
冷静に考えよう なぜそのような製品がないのか ‣ 可能な限りフルマネージドサービスを利⽤することで少⼈数でも運⽤可能なサー バーレス PCI DSS 対応構成を採⽤している ‣ コンテナサポート
‣ Readonlyで動く 既製品のランニングコストや PCI DSS 対応も含めたコスト vs 最初ちょっと頑張って今のままのローコストな運⽤で使える様に内製 6gramにするために ແཧͳΒɺύοέʔδΛങͬͯؒʹڬΜͰӡ༻ɺಛघͳରԠ͕ൃੜͯ͠ ͦͷͱ͖ʹͦͷίϯϙʔωϯτ͚ͩʹӨڹ͕ग़ΔΑ͏ʹ͠Α͏
レイヤリングの⼀例 6gramにするために アクワイアラ TSP 銀⾏ アクワイアラ 決済プロトコル 変換APP1 銀⾏ ⼊⾦
API 決済サービス カード 銀⾏ 決済プロトコル 変換APP2 ઐ༻ઢ ಛघϓϩτίϧ 424 クレカclient Internet 1 専⽤線 1 銀⾏client 専⽤線 1 Internet 1 Internet 2 銀⾏ 残⾼サービス 特殊プロトコルでもここだけで対応できる "11 ˡ
イシュア側全部作ると(カード・残⾼・トークンを管理) CM イシュア 加盟店 TSP オーソリシステム ⻩⾊のカードで100円の買い物 1. ⻩⾊のカードを探す 2.
残⾼をチェックする 3. 残⾼を減らす 4. ヨシ! ߴ 1. ⻘⾊のカードを探す 2. 残⾼をチェックする 3. トークン情報をもらう 4. ヨシ! ⻘⾊のカードをMobileに登録 ApplePayで決済 1. のカードを探す 2. 残⾼をチェックする 3. 残⾼を減らす 4. ヨシ!
構築例) Mobileペイメントだけ移譲する CM イシュア 加盟店 TSP ΦʔιϦγεςϜ ⻩⾊のカードで100円の買い物 ߴ ੨৭ͷΧʔυΛ.PCJMFʹొ
普通のカード決済は⾃分で処理 ΧʔυใΛಉظͯ͠Ҡৡ͢Δ TSPͰॲཧ݁ (1BZͰܾࡁ 1. GPayの情報はわからない ので、TSPに問い合わせ 2. ⻘いカードとわかる 3. 通常の処理 プリペイドだと ちょっと決済に時間かかる ࣮ଌɿՃໍళͱͯ͠νϟʔδͷܾࡁΛͨ͠߹ʹɺશମͱͯ͠௨ৗͷΧʔυܾࡁΑΓ5PLFOܾࡁͷ΄͏͕ ܾࡁωοτϫʔΫͷԠ͕ฏۉͰ͍ͷ͕؍ଌ͞Ε͍ͯ·͢
構築例)残⾼だけ⾃分で管理 CM 加盟店 ΦʔιϦγεςϜ ⻩⾊のカードで100円の買い物 ߴ ΠγϡΞ ߴ 同期したり 決済時にAPIコールしてもらったりする
このパターンは、カード番号をアプリとかで知らせない限り PCI DSSと結構無縁で作れる γεςϜआΓΔ 決済時にAPIコー ルされるのであれ ば送⾦の実現は 割とすぐにできる
結果、今回は全部作りました 6gramにするために
システム構成 ‣ 開発⾔語: Elixir ‣ ⼀部 DynamoDB Streams を経由した NodeJS
や解析環境で Python など ‣ インフラ: AWS ‣ データベース: DynamoDB ‣ コンピュート: Fargate ‣ 監視: CloudWatch、Rollbar ほぼすべてのコンポーネント (⼊出⾦処理、カード会社とのやりとり) は内製 ‣ Elixir採⽤理由などは、Developer Boost 2019の「Elixirで決済サービスを作ってみた」 を! https://speakerdeck.com/enerick/elixir-dejue-ji-sabisuwotukututemita
5グラム(普通のプリペイドカード)の 機能が実装されました!! 6gramにするために
1を⾜してサービスを作ってみます 6gramにするために
PR
「6gram」サービス紹介 ひとりでも、グループでも使うことのできるウォレットサービス グループに⼊れたお⾦をシェアしたり、インスタントに発⾏したプリペイドカードに 残⾼を割り付けたりといろんな使い⽅ができる ‣ JCB プリペイドカードを1アカウントで複数枚発⾏できる ‣ ApplePay /
GooglePay と連携して QUICPay+ 決済 ‣ iOS では コンタクトレス決済にも対応 ‣ リアルカードも発⾏予定 ‣ 現在は完全招待制 PR
⾃由⾃在にお⾦やカードを動かせる CM 6gram 加盟店 TSP ΦʔιϦγεςϜ "QQMF1BZͰܾࡁ カードをそのまま使う 複数のカードを残⾼に紐づけ カードとカードをつなげる
⾃由度がいっぱい ࣗͨͪͰγεςϜΛ࡞ͬͨͷͰɺΧʔυͷಉظߴͷͳͲʹ੍ݶ͕ੜ·Εͳ͍ ڞಉ スイッチ グループウォレット
今⽇はいくつか招待コードのステッカー持ってきてます! Ask the speaker の時にお渡しできます 社内ではお菓⼦を買う共有ウォレットとして使ったりしてます 招待コードは⼀回使い切りですが、 アプリ内で何度でも招待コードを作れます 仲のいい⼈たちを招待して使ってみてください。 CM
おわりに PCI DSSでは様々な運⽤フローの策定や証跡管理が必要 運⽤負荷をへらしていくことが重要です ⾃分たちでルールや仕組みを作り上げて、実践 チームビルディングやチーム⼒の底上げにつながる PCI DSSだけではシステムやサービスを守れない PCI DSS管理外のコンポーネントでも、セキュリティを担保しつつ運⽤コストを減らす⾏動
⽇頃から最新のセキュリティ情報を⼿に⼊れ続ける 監査がなくても、安全なシステム開発・運⽤が保たれるような組織づくり
おわりに 必ずしも⾃分たちで全てを構築するのが正解とは限りません ただの⾞輪の再発明かもしれません ただ⾃分たちでやってみることで⾒えてくる世界もあります。 みんなでわいわいDIY
None