Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
サーバーレスPCI DSS対応クレジットカード決済 基盤システムを運用しながら、みんな...
Search
MIXI ENGINEERS
PRO
February 13, 2020
Programming
1.9k
7
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
サーバーレスPCI DSS対応クレジットカード決済 基盤システムを運用しながら、みんなでわいわい DIYの精神で、新しいモバイル決済サービス 6gramをともにつくっている話/6gram-DIY
Developers Summit 2020での登壇資料です。
https://event.shoeisha.jp/devsumi/20200213/session/2361/
MIXI ENGINEERS
PRO
February 13, 2020
More Decks by MIXI ENGINEERS
See All by MIXI ENGINEERS
安全性・開発速度・ユーザー体験の あいだで考える 事業会社のプロダクトセキュリティ
mixi_engineers
PRO
0
160
MIXIで活躍できるエンジニアを 若手社員目線で考えてみる
mixi_engineers
PRO
0
310
『モンスターストライク』 の運営に伴走する! データ民主化への 解析グループの3つのアプローチ
mixi_engineers
PRO
1
610
実践が先生だった— 新卒サーバーエンジニア1年目のリアル
mixi_engineers
PRO
0
670
13年運用タイトルのサーバーサイドが辿り着いた現在地 ― モンスターストライクにおける技術・組織・AI活用から得た知見
mixi_engineers
PRO
1
910
脱Jenkins、インターン生が挑んだCIツールGitHubActions移行
mixi_engineers
PRO
2
670
セキュリティ研修【MIXI 26新卒技術研修】
mixi_engineers
PRO
38
34k
WEBフロントエンド研修【MIXI 26新卒技術研修】
mixi_engineers
PRO
5
1.9k
AI研修(Day1)【MIXI 26新卒技術研修】
mixi_engineers
PRO
22
19k
Other Decks in Programming
See All in Programming
モジュールの視点からSwiftを読み解く #iosdc
s_shimotori
0
100
高専キャリア LT 発表内容
crysta1221
6
5.7k
[DroidKaigi 2026] Bring your own phones to Gradle Managed Devices
f2lk
0
120
テストを司るデーモンに会いに行く 〜隔離した仮想マシンでテストを通すまで〜
h1d3mun3
1
190
Go × SIMDで高速化するベクトル検索 ~ルーフラインモデルでSIMDが効く境界を探れ! ~
po3rin
1
240
How I Stole PSI from Android Studio - DroidKaigi2026
worker8
0
110
AIとGame Jamで、ゲームを完成させた話
takahirosaeki
0
120
XHTMLが残したもの
yosuke_furukawa
PRO
2
710
From 6 People Classroom Meetup to 100 People Regional Conference / FOSS4G Hiroshima 2026
furukawayasuto
0
140
LLMは4年分のCompose移行を再現できるのか?実プロダクト279件のXMLで探る自動化の境界線
makun
0
590
GKE アップグレード前に知っておきたい Blue/Green と PDB の関係
stkk
0
160
自分的「カンファレンスの楽しみ方」
syumai
0
200
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Designing Powerful Visuals for Engaging Learning
tmiket
1
540
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.6k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
410
Building the Perfect Custom Keyboard
takai
2
870
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
530
Building Flexible Design Systems
yeseniaperezcruz
330
41k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Practical Orchestrator
shlominoach
191
12k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
700
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
720
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