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対応クレジットカード決済 基盤システムを運用しながら、みんなでわいわい DIYの精神で、新しいモバイル決済サービス 6gramをともにつくっている話/6gram-DIY
Search
MIXI ENGINEERS
PRO
February 13, 2020
Programming
7
1.4k
サーバーレス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
【D2-5】MIXI SREの最新事例まるわかり! 〜 各事業のSRE活動にかかわるエンジニアに本音を聞く | #MTDC2024 | MIXI TECH DESIGN CONFERENCE 2024
mixi_engineers
PRO
2
37
【D2-7】共闘ことばRPG コトダマンの自律分散型QA組織 | #MTDC2024 | MIXI TECH DESIGN CONFERENCE 2024
mixi_engineers
PRO
0
11
【D2-S1】MIXIオンプレミス設備のこれまでとこれから~そして印西へ~ | #MTDC2024 | MIXI TECH DESIGN CONFERENCE 2024
mixi_engineers
PRO
0
12
【D2-6】モンスト10周年における真獣神化実装担当者が10年分の形態変化の設計をイチから作り直した話 | #MTDC2024 | MIXI TECH DESIGN CONFERENCE 2024
mixi_engineers
PRO
1
8
【D2-8】WordPressのヘッドレス運用化 〜minimo roomのJamstack構成移行プロジェクト〜 | #MTDC2024 | MIXI TECH DESIGN CONFERENCE 2024
mixi_engineers
PRO
1
11
【D2-S2】Kotlin と Flutter を愛であう会 for Android開発 | #MTDC2024 | MIXI TECH DESIGN CONFERENCE 2024
mixi_engineers
PRO
1
22
なんで私に登壇依頼が?! ~頼られるエンジニアになるためには~ /
mixi_engineers
PRO
2
200
【D1-3】フィギュアスケートにおける自動追尾カメラ開発 - 位置情報+AI画像解析 | #MTDC2024 | MIXI TECH DESIGN CONFERENCE 2024
mixi_engineers
PRO
0
16
【D1-6】netkeibaにおける機械学習を用いた競馬オッズ予測手法の開発とその変革 | #MTDC2024 | MIXI TECH DESIGN CONFERENCE 2024
mixi_engineers
PRO
0
14
Other Decks in Programming
See All in Programming
とにかくHTTP3をライトニングに話す / Anyway, I'll talk to Lightning about HTTP3.
seike460
PRO
0
120
LLMチャットボットのアプリケーション設計Tips
os1ma
4
660
Deno に Web 標準 API を実装する / Implementing Web Standard API to Deno
petamoriken
0
350
Some Quick Ideas To Improve Your Tests ( #jassttokyo )
teyamagu
PRO
2
2.3k
チームでモデリングを育てるうえで 考えたこと・気づいたこと / Cultivating Modeling in Teams: Thoughts and Insights
mackey0225
5
2.2k
htmx is fun!
codehex
2
190
【KMC春合宿2024】実装視点で見るNeural Radiance Fields
runningoutrate
0
150
自動テスト実行結果の目的を整理する / Organizing objectives of automated test results
twada
PRO
10
2.1k
WinUI 3デモ - "CommunityToolkit.Mvvm"NuGetパッケージ編
andrewkeepcoding
0
130
TCA魔法学入門🪄
dazy
0
280
ISUCONってなんだか難しそう……!!でも、初めてのISUCONにPHPで挑戦してきました!
kotomin_m
1
300
Creating Retro-Style Photos Using Swift
ski
1
340
Featured
See All Featured
The World Runs on Bad Software
bkeepers
PRO
60
6.6k
Unsuck your backbone
ammeep
660
56k
Pencils Down: Stop Designing & Start Developing
hursman
115
11k
For a Future-Friendly Web
brad_frost
170
8.9k
5 minutes of I Can Smell Your CMS
philhawksworth
199
19k
Building Applications with DynamoDB
mza
88
5.6k
Why Our Code Smells
bkeepers
PRO
330
56k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
272
12k
BBQ
matthewcrist
78
8.7k
How To Stay Up To Date on Web Technology
chriscoyier
781
250k
The Invisible Customer
myddelton
114
12k
Build The Right Thing And Hit Your Dates
maggiecrowley
23
1.9k
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