Successfully reported this slideshow.
Your SlideShare is downloading. ×

サーバーレスなPCI DSS対応クレジットカード決済基盤システムを運用しながら、みんなでわいわいDIYの精神で、新しいモバイル決済サービス6gramを作っている話

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad

Check these out next

1 of 43 Ad

サーバーレスなPCI DSS対応クレジットカード決済基盤システムを運用しながら、みんなでわいわいDIYの精神で、新しいモバイル決済サービス6gramを作っている話

Download to read offline

mixiのカードイシュイングシステムに関して、我々のチームのPCI DSS対応方針をベースに作成したシステムに関してごく簡単に一部を紹介しました。

mixiのカードイシュイングシステムに関して、我々のチームのPCI DSS対応方針をベースに作成したシステムに関してごく簡単に一部を紹介しました。

Advertisement
Advertisement

More Related Content

Slideshows for you (20)

Similar to サーバーレスなPCI DSS対応クレジットカード決済基盤システムを運用しながら、みんなでわいわいDIYの精神で、新しいモバイル決済サービス6gramを作っている話 (20)

Advertisement

Recently uploaded (20)

サーバーレスなPCI DSS対応クレジットカード決済基盤システムを運用しながら、みんなでわいわいDIYの精神で、新しいモバイル決済サービス6gramを作っている話

  1. 1. サーバーレスPCI DSS対応クレジットカード決済 基盤システムを運⽤しながら、みんなでわいわい DIYの精神で、新しいモバイル決済サービス 6gramをともにつくっている話 Developers Summit 2020 株式会社ミクシィ ID・ペイメント事業部 システムグループ マネージャー ⽥岡 ⽂利 2020/02/13
  2. 2. おしながき ID ペイメント事業部 と 私 タイトルのおさらい PCI DSSとクレジットカード決済 PCI DSS対応 サーバーレス決済システム?? 6gramにするために おわりに
  3. 3. ⾃⼰紹介 IDペイメント事業部と私 ⽥岡⽂利 株式会社ミクシィ ID・ペイメント事業部 システムグループ マネージャー 2012年4⽉⼊社 → SNS mixi の ⾃社Framework開発とサービス開発 →グループ会社の⽀援 (開発体制、ガツガツ開発、SREぽい事)
 → XFLAG アプリ・XFLAG ID の開発・運⽤
 → 新サービス開発熟考期 (ビデオ・ライブ配信 / WebRTC / BLE) → 決済基盤の開発・運⽤や、新規決済系サービス「6gram」の開発を⾏っている
  4. 4. ID ペイメント事業部 IDペイメント事業部と私 社内外でのアカウント、個⼈情報、決済に関して簡単かつ信頼のおける基盤づくり - アカウント・ログイン (key: パスワードレス / FIDO / OAuth) ‣ SMS / mail / SNS / etc - 個⼈情報の管理・本⼈確認 (⽣年⽉⽇・住所・⾝分証・犯収法対の本⼈確認) - 決済(クレジットカード・銀⾏・ATM・ID決済) チーム構成 エンジニアリングマネージャ 1名 サーバーサイドエンジニア 5 (6)名 クライアントエンジニア 2名 全員で開発、運⽤を⾏っている 💪
  5. 5. タイトルが⻑すぎますね!! タイトルのおさらい
  6. 6. サーバーレスPCI DSS対応クレジットカード決済 基盤システムを運⽤しながら、みんなでわいわい DIYの精神で、新しいモバイル決済サービス 6gramをともにつくっている話 タイトルのおさらい カード決済システムの構築・運⽤に関して 決済サービス開発に関して
  7. 7. 決済サービスの基礎的な概念 ユーザー 加盟店 アクワイアラ 国際ブランド クレジットカード決済 カード発⾏業務 (信販会社など) 加盟店管理 VISA / JCBなど PCI DSSとクレジットカード決済 クレジットカード イシュア 決済代⾏
  8. 8. PCI DSS とは? クレジットカード業界のセキュリティ基準 これに厳格に準拠することで、カード番号などの情報を取り扱いできる 12要件、約400項⽬ 数年に⼀度、基準が改訂される PCI DSSとクレジットカード決済
  9. 9. カード情報の取り扱い ユーザー 加盟店 アクワイアラ 国際ブランド クレジットカード決済 カード発⾏業務 加盟店管理 VISA / JCBなど PCI DSSとクレジットカード決済 クレジットカード イシュア 決済代⾏ 保存 所有者は対象外 保存している 前回のカードで決済 PCI DSS対応必須 PCI DSS対応必須
  10. 10. カード番号が通る経路も対象になる ユーザー ECサイト アクワイアラ 国際ブランド トークン カード発⾏業務 加盟店管理 VISA / JCBなど PCI DSSとクレジットカード決済 クレジットカード イシュア 決済代⾏ 前回のカードで決済 カード番号をトークン化 ECサイトなどではカード番号を直接取り扱わないことで回避 カード番号 カードのID PCI DSS対応必須 PCI DSS対応必須 PCI DSS対応必須 PCI DSS対応不要
  11. 11. 6gramの場合 ユーザー ECサイト アクワイアラ 国際ブランド トークン カード発⾏業務 加盟店管理 VISA / JCBなど PCI DSSとクレジットカード決済 クレジットカード イシュア 決済代⾏ 決済システム カード番号をトークン化 今回つくる決済システムは イシュアと決済代行両方の機能 決済システム PCI DSS対応必須
  12. 12. PCI DSS とは? クレジットカード業界のセキュリティ基準 これに厳格に準拠することで、カード番号などの情報を取り扱いできる 12要件、約400項⽬ 数年に⼀度、基準が改訂される ⼀年に⼀回オンサイト監査の実施 運⽤⼿順のドキュメントやその実施証跡 PCI DSSとクレジットカード決済
  13. 13. アカウント要件 要件8 コンピュータにアクセスできる各ユーザーに⼀意のIDを割り当てる ‣ 8.2.3 パスワードは以下を満たす必要がある ‣ パスワードに7⽂字以上含まれる ‣ 数字と英⽂字を両⽅含む ‣ 8.2.4 パスワードは少なくとも90⽇ごとに変更する ‣ 8.2.5 これまで使⽤した最後の4つのパスワードのいずれかで同じである新しいパス ワードを許可しない PCI DSS対応サーバーレス決済システム ID基盤としてはパスワードレスとかキーワードにしてるのに.. パスワード要件
  14. 14. セキュリティ要件 要件5 すべてのシステムをマルウェアから保護する ⇨ 稼働中のサーバーにウイルスチェックなどが必要 要件11 セキュリティシステムおよびプロセスを定期的にテストする ‣ 11.4 侵⼊検知/侵⼊防⽌システムを使⽤して警告する ‣ 11.5 変更検出メカニズムを導⼊してファイル変更を監視、警告する PCI DSS対応サーバーレス決済システム IDS/IPS 要件
  15. 15. われわれの⼤⽅針 ⇨ 運⽤負荷をできるだけさげたい PCI DSS対応サーバーレス決済システム その⽅法に関して⼀部紹介します ‣ 「グループウォレットアプリ、6gramの運⽤をはじめてみた」 ‣ https://speakerdeck.com/ryosan470/6gram-sre-next-2020
  16. 16. インスタンスを使わない PCI DSS対応サーバーレス決済システム
  17. 17. インスタンスを使わない PCI DSS対応サーバーレス決済システム
  18. 18. 真のサーバーレス サービスを運⽤しなければ、 インシデントも発⽣しない 冗談です PCI DSS対応サーバーレス決済システム
  19. 19. コンテナをRead Only で動かす PCI DSS対応サーバーレス決済システム
  20. 20. インスタンスレス + Read Only で何が嬉しいか リモートコンソールが存在しないためそもそも侵⼊できない - 侵⼊検知の仕組みを導⼊する必要がない Read Only なのでそもそも書き換えができない - ファイル変更検出ソフトウェアが不要になる ログインできないのでID・パスワードもいらない 管理するコンポーネントが減るということは素直に運用コストが軽減 証跡管理コストも軽減 PCI DSS対応サーバーレス決済システム IDS/IPS 要件 パスワード要件
  21. 21. ストレージに関して RDBは基本user/passwordで接続しにいく… ↓ クレジットカード情報をはじめとするすべてのデータをDynamoDBに保存 AWSのmanagedなシステムによりそうことで ‣ KMSによるテーブルの暗号化 が⽤意(様々なコンポーネントで標準で暗号化がサポートされる) ‣ IAMをベースとした細かいアクセス制御(サービスのロールで管理できる) ‣ 開発者のユーザーではデータを⾒ることができません。 ‣ アプリケーションロールのみが、DynamoDBやその暗号化に使う鍵情報にアクセスができます。 PCI DSS対応サーバーレス決済システム
  22. 22. 6gramにするために
  23. 23. まずは5グラムに 6gramにするために
  24. 24. プリペイド(クレジット)カードシステム 6gramにするために イシュア機能(カード会社) ‣ カード番号の管理 (カード番号や有効期限、セキュリティーコード) ‣ 残⾼の管理 チャージ機能(ポイント機能) ‣ クレカ決済 ‣ 銀⾏決済 —> (銀⾏登録 + 即時決済) or netBank振込対応 ‣ ATM⼊⾦(セブンバンク) モバイル決済への対応 (TSP連携) ‣ ApplePay / GooglePay
  25. 25. モバイル決済対応の登場⼈物 ⾚いものを作る ユーザー アクワイアラ 国際ブランド クレジットカードによる⼊⾦ VISA / JCBなど イシュア 決済代行基盤 カード番号 ⼝座番号 残⾼ アクワイアラ 国際ブランド クレジットカードの利⽤ VISA / JCBなどTSP TR ApplePay/GooglePay対応 Apple/Google 加盟店 カード番号 Token管理 残⾼ Issuer基盤 APPサーバ 銀⾏ 6gramにするために
  26. 26. 要件をすべて満たすパッケージは存在しなかった 6gramにするために
  27. 27. ⾃分でつくるしかないYO! みんなでわいわいDIY 6gramにするために
  28. 28. 冷静に考えよう なぜそのような製品がないのか ‣ 可能な限りフルマネージドサービスを利⽤することで少⼈数でも運⽤可能なサー バーレス PCI DSS 対応構成を採⽤している ‣ コンテナサポート ‣ Readonlyで動く 既製品のランニングコストや PCI DSS 対応も含めたコスト vs 最初ちょっと頑張って今のままのローコストな運⽤で使える様に内製 6gramにするために 無理ならば、パッケージを買って間に挟んで運用、特殊な対応が発生しても そのときにそのコンポーネントだけに影響が出るようにしよう
  29. 29. レイヤリングの⼀例 6gramにするために アクワイアラ TSP 銀⾏ アクワイアラ 決済プロトコル 変換APP1 銀⾏ ⼊⾦ API 決済サービス カード 銀⾏ 決済プロトコル 変換APP2 専用線 特殊プロトコル SQS クレカclient Internet 1 専⽤線 1 銀⾏client 専⽤線 1 Internet 1 Internet 2 銀⾏ 残⾼サービス 特殊プロトコルでもここだけで対応できる APP ←
  30. 30. イシュア側全部作ると(カード・残⾼・トークンを管理) CM イシュア 加盟店 TSP オーソリシステム ⻩⾊のカードで100円の買い物 1. ⻩⾊のカードを探す 2. 残⾼をチェックする 3. 残⾼を減らす 4. ヨシ! 残高 1. ⻘⾊のカードを探す 2. 残⾼をチェックする 3. トークン情報をもらう 4. ヨシ! ⻘⾊のカードをMobileに登録 ApplePayで決済 1. のカードを探す 2. 残⾼をチェックする 3. 残⾼を減らす 4. ヨシ!
  31. 31. 構築例) Mobileペイメントだけ移譲する CM イシュア 加盟店 TSP オーソリシステム ⻩⾊のカードで100円の買い物 残高 青色のカードをMobileに登録 普通のカード決済は⾃分で処理 カード情報を同期して移譲する TSPで処理完結 GPayで決済 1. GPayの情報はわからない ので、TSPに問い合わせ 2. ⻘いカードとわかる 3. 通常の処理 プリペイドだと ちょっと決済に時間かかる 実測:加盟店としてチャージの決済をした場合に、全体として通常のカード決済よりもToken決済のほうが 決済ネットワークの応答が平均で遅いのが観測されています
  32. 32. 構築例)残⾼だけ⾃分で管理 CM 加盟店 オーソリシステム ⻩⾊のカードで100円の買い物 残高 イシュア 残高 同期したり 決済時にAPIコールしてもらったりする このパターンは、カード番号をアプリとかで知らせない限り PCI DSSと結構無縁で作れる システム借りる 決済時にAPIコー ルされるのであれ ば送⾦の実現は 割とすぐにできる
  33. 33. 結果、今回は全部作りました 6gramにするために
  34. 34. システム構成 ‣ 開発⾔語: Elixir ‣ ⼀部 DynamoDB Streams を経由した NodeJS や解析環境で Python など ‣ インフラ: AWS ‣ データベース: DynamoDB ‣ コンピュート: Fargate ‣ 監視: CloudWatch、Rollbar ほぼすべてのコンポーネント (⼊出⾦処理、カード会社とのやりとり) は内製 ‣ Elixir採⽤理由などは、Developer Boost 2019の「Elixirで決済サービスを作ってみた」 を! https://speakerdeck.com/enerick/elixir-dejue-ji-sabisuwotukututemita
  35. 35. 5グラム(普通のプリペイドカード)の 機能が実装されました!! 6gramにするために
  36. 36. 1を⾜してサービスを作ってみます 6gramにするために
  37. 37. PR
  38. 38. 「6gram」サービス紹介 ひとりでも、グループでも使うことのできるウォレットサービス グループに⼊れたお⾦をシェアしたり、インスタントに発⾏したプリペイドカードに 残⾼を割り付けたりといろんな使い⽅ができる ‣ JCB プリペイドカードを1アカウントで複数枚発⾏できる ‣ ApplePay / GooglePay と連携して QUICPay+ 決済 ‣ iOS では コンタクトレス決済にも対応 ‣ リアルカードも発⾏予定 ‣ 現在は完全招待制 PR
  39. 39. ⾃由⾃在にお⾦やカードを動かせる CM 6gram 加盟店 TSP オーソリシステム ApplePayで決済 カードをそのまま使う 複数のカードを残⾼に紐づけ カードとカードをつなげる ⾃由度がいっぱい 自分たちでシステムを作ったので、カードの同期や残高の数などに制限が生まれない 共同 スイッチ グループウォレット
  40. 40. 今⽇はいくつか招待コードのステッカー持ってきてます! Ask the speaker の時にお渡しできます 社内ではお菓⼦を買う共有ウォレットとして使ったりしてます 招待コードは⼀回使い切りですが、 アプリ内で何度でも招待コードを作れます 仲のいい⼈たちを招待して使ってみてください。 CM
  41. 41. おわりに PCI DSSでは様々な運⽤フローの策定や証跡管理が必要 運⽤負荷をへらしていくことが重要です ⾃分たちでルールや仕組みを作り上げて、実践 チームビルディングやチーム⼒の底上げにつながる PCI DSSだけではシステムやサービスを守れない PCI DSS管理外のコンポーネントでも、セキュリティを担保しつつ運⽤コストを減らす⾏動 ⽇頃から最新のセキュリティ情報を⼿に⼊れ続ける 監査がなくても、安全なシステム開発・運⽤が保たれるような組織づくり
  42. 42. おわりに 必ずしも⾃分たちで全てを構築するのが正解とは限りません ただの⾞輪の再発明かもしれません ただ⾃分たちでやってみることで⾒えてくる世界もあります。 みんなでわいわいDIY

×