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

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

Developers Summit 2020での登壇資料です。
https://event.shoeisha.jp/devsumi/20200213/session/2361/

B16717ef4b7aab0b253d933c3934f280?s=128

mixi_engineers

February 13, 2020
Tweet

Transcript

  1. サーバーレスPCI DSS対応クレジットカード決済 基盤システムを運⽤しながら、みんなでわいわい DIYの精神で、新しいモバイル決済サービス 6gramをともにつくっている話 Developers Summit 2020 株式会社ミクシィ ID・ペイメント事業部

    システムグループ マネージャー ⽥岡 ⽂利 2020/02/13
  2. おしながき ID ペイメント事業部 と 私 タイトルのおさらい PCI DSSとクレジットカード決済 PCI DSS対応

    サーバーレス決済システム?? 6gramにするために おわりに
  3. ⾃⼰紹介 IDペイメント事業部と私 ⽥岡⽂利 株式会社ミクシィ ID・ペイメント事業部 システムグループ マネージャー 2012年4⽉⼊社 → SNS

    mixi の ⾃社Framework開発とサービス開発 →グループ会社の⽀援 (開発体制、ガツガツ開発、SREぽい事)
 → XFLAG アプリ・XFLAG ID の開発・運⽤
 → 新サービス開発熟考期 (ビデオ・ライブ配信 / WebRTC / BLE) → 決済基盤の開発・運⽤や、新規決済系サービス「6gram」の開発を⾏っている
  4. ID ペイメント事業部 IDペイメント事業部と私 社内外でのアカウント、個⼈情報、決済に関して簡単かつ信頼のおける基盤づくり - アカウント・ログイン (key: パスワードレス / FIDO

    / OAuth) ‣ SMS / mail / SNS / etc - 個⼈情報の管理・本⼈確認 (⽣年⽉⽇・住所・⾝分証・犯収法対の本⼈確認) - 決済(クレジットカード・銀⾏・ATM・ID決済) チーム構成 エンジニアリングマネージャ 1名 サーバーサイドエンジニア 5 (6)名 クライアントエンジニア 2名 全員で開発、運⽤を⾏っている
  5. タイトルが⻑すぎますね!! タイトルのおさらい

  6. サーバーレスPCI DSS対応クレジットカード決済 基盤システムを運⽤しながら、みんなでわいわい DIYの精神で、新しいモバイル決済サービス 6gramをともにつくっている話 タイトルのおさらい カード決済システムの構築・運⽤に関して 決済サービス開発に関して

  7. 決済サービスの基礎的な概念 ユーザー 加盟店 アクワイアラ 国際ブランド クレジットカード決済 カード発⾏業務 (信販会社など) 加盟店管理 VISA

    / JCBなど PCI DSSとクレジットカード決済 クレジットカード イシュア 決済代⾏
  8. PCI DSS とは? クレジットカード業界のセキュリティ基準 これに厳格に準拠することで、カード番号などの情報を取り扱いできる 12要件、約400項⽬ 数年に⼀度、基準が改訂される PCI DSSとクレジットカード決済

  9. カード情報の取り扱い ユーザー 加盟店 アクワイアラ 国際ブランド クレジットカード決済 カード発⾏業務 加盟店管理 VISA /

    JCBなど PCI DSSとクレジットカード決済 クレジットカード イシュア 決済代⾏ อଘ ॴ༗ऀ͸ର৅֎ อଘ͍ͯ͠Δ લճͷΧʔυͰܾࡁ PCI DSS対応必須 PCI DSS対応必須
  10. カード番号が通る経路も対象になる ユーザー ECサイト アクワイアラ 国際ブランド トークン カード発⾏業務 加盟店管理 VISA /

    JCBなど PCI DSSとクレジットカード決済 クレジットカード イシュア 決済代⾏ લճͷΧʔυͰܾࡁ Χʔυ൪߸ΛτʔΫϯԽ &$αΠτͳͲͰ͸Χʔυ൪߸Λ௚઀औΓѻΘͳ͍͜ͱͰճආ Χʔυ൪߸ Χʔυͷ*% PCI DSS対応必須 PCI DSS対応必須 PCI DSS対応必須 PCI DSS対応不要
  11. 6gramの場合 ユーザー ECサイト アクワイアラ 国際ブランド トークン カード発⾏業務 加盟店管理 VISA /

    JCBなど PCI DSSとクレジットカード決済 クレジットカード イシュア 決済代⾏ ܾࡁγεςϜ Χʔυ൪߸ΛτʔΫϯԽ ࠓճͭ͘ΔܾࡁγεςϜ͸ΠγϡΞͱܾࡁ୅ߦ྆ํͷػೳ ܾࡁγεςϜ PCI DSS対応必須
  12. PCI DSS とは? クレジットカード業界のセキュリティ基準 これに厳格に準拠することで、カード番号などの情報を取り扱いできる 12要件、約400項⽬ 数年に⼀度、基準が改訂される ⼀年に⼀回オンサイト監査の実施 運⽤⼿順のドキュメントやその実施証跡 PCI

    DSSとクレジットカード決済
  13. アカウント要件 要件8 コンピュータにアクセスできる各ユーザーに⼀意のIDを割り当てる ‣ 8.2.3 パスワードは以下を満たす必要がある ‣ パスワードに7⽂字以上含まれる ‣ 数字と英⽂字を両⽅含む

    ‣ 8.2.4 パスワードは少なくとも90⽇ごとに変更する ‣ 8.2.5 これまで使⽤した最後の4つのパスワードのいずれかで同じである新しいパス ワードを許可しない PCI DSS対応サーバーレス決済システム *%ج൫ͱͯ͠͸ύεϫʔυϨεͱ͔Ωʔϫʔυʹͯ͠Δͷʹ パスワード要件
  14. セキュリティ要件 要件5 すべてのシステムをマルウェアから保護する ⇨ 稼働中のサーバーにウイルスチェックなどが必要 要件11 セキュリティシステムおよびプロセスを定期的にテストする ‣ 11.4 侵⼊検知/侵⼊防⽌システムを使⽤して警告する

    ‣ 11.5 変更検出メカニズムを導⼊してファイル変更を監視、警告する PCI DSS対応サーバーレス決済システム IDS/IPS 要件
  15. われわれの⼤⽅針 ⇨ 運⽤負荷をできるだけさげたい PCI DSS対応サーバーレス決済システム その⽅法に関して⼀部紹介します ‣ 「グループウォレットアプリ、6gramの運⽤をはじめてみた」 ‣ https://speakerdeck.com/ryosan470/6gram-sre-next-2020

  16. インスタンスを使わない PCI DSS対応サーバーレス決済システム

  17. インスタンスを使わない PCI DSS対応サーバーレス決済システム

  18. 真のサーバーレス サービスを運⽤しなければ、 インシデントも発⽣しない 冗談です PCI DSS対応サーバーレス決済システム

  19. コンテナをRead Only で動かす PCI DSS対応サーバーレス決済システム

  20. インスタンスレス + Read Only で何が嬉しいか リモートコンソールが存在しないためそもそも侵⼊できない - 侵⼊検知の仕組みを導⼊する必要がない Read Only

    なのでそもそも書き換えができない - ファイル変更検出ソフトウェアが不要になる ログインできないのでID・パスワードもいらない ؅ཧ͢Δίϯϙʔωϯτ͕ݮΔͱ͍͏͜ͱ͸ૉ௚ʹӡ༻ίετ͕ܰݮ ূ੻؅ཧίετ΋ܰݮ PCI DSS対応サーバーレス決済システム IDS/IPS 要件 パスワード要件
  21. ストレージに関して RDBは基本user/passwordで接続しにいく… ↓ クレジットカード情報をはじめとするすべてのデータをDynamoDBに保存 AWSのmanagedなシステムによりそうことで ‣ KMSによるテーブルの暗号化 が⽤意(様々なコンポーネントで標準で暗号化がサポートされる) ‣ IAMをベースとした細かいアクセス制御(サービスのロールで管理できる)

    ‣ 開発者のユーザーではデータを⾒ることができません。 ‣ アプリケーションロールのみが、DynamoDBやその暗号化に使う鍵情報にアクセスができます。 PCI DSS対応サーバーレス決済システム
  22. 6gramにするために

  23. まずは5グラムに 6gramにするために

  24. プリペイド(クレジット)カードシステム 6gramにするために イシュア機能(カード会社) ‣ カード番号の管理 (カード番号や有効期限、セキュリティーコード) ‣ 残⾼の管理 チャージ機能(ポイント機能) ‣

    クレカ決済 ‣ 銀⾏決済 —> (銀⾏登録 + 即時決済) or netBank振込対応 ‣ ATM⼊⾦(セブンバンク) モバイル決済への対応 (TSP連携) ‣ ApplePay / GooglePay
  25. モバイル決済対応の登場⼈物 ⾚いものを作る ユーザー アクワイアラ 国際ブランド クレジットカードによる⼊⾦ VISA / JCBなど イシュア ܾࡁ୅ߦج൫

    カード番号 ⼝座番号 残⾼ アクワイアラ 国際ブランド クレジットカードの利⽤ VISA / JCBなど TSP TR ApplePay/GooglePay対応 Apple/Google 加盟店 カード番号 Token管理 残⾼ Issuer基盤 APPサーバ 銀⾏ 6gramにするために
  26. 要件をすべて満たすパッケージは存在しなかった 6gramにするために

  27. ⾃分でつくるしかないYO! みんなでわいわいDIY 6gramにするために

  28. 冷静に考えよう なぜそのような製品がないのか ‣ 可能な限りフルマネージドサービスを利⽤することで少⼈数でも運⽤可能なサー バーレス PCI DSS 対応構成を採⽤している ‣ コンテナサポート

    ‣ Readonlyで動く 既製品のランニングコストや PCI DSS 対応も含めたコスト vs 最初ちょっと頑張って今のままのローコストな運⽤で使える様に内製 6gramにするために ແཧͳΒ͹ɺύοέʔδΛങͬͯؒʹڬΜͰӡ༻ɺಛघͳରԠ͕ൃੜͯ͠΋ ͦͷͱ͖ʹͦͷίϯϙʔωϯτ͚ͩʹӨڹ͕ग़ΔΑ͏ʹ͠Α͏
  29. レイヤリングの⼀例 6gramにするために アクワイアラ TSP 銀⾏ アクワイアラ 決済プロトコル 変換APP1 銀⾏ ⼊⾦

    API 決済サービス カード 銀⾏ 決済プロトコル 変換APP2 ઐ༻ઢ ಛघϓϩτίϧ 424 クレカclient Internet 1 専⽤線 1 銀⾏client 専⽤線 1 Internet 1 Internet 2 銀⾏ 残⾼サービス 特殊プロトコルでもここだけで対応できる "11 ˡ
  30. イシュア側全部作ると(カード・残⾼・トークンを管理) CM イシュア 加盟店 TSP オーソリシステム ⻩⾊のカードで100円の買い物 1. ⻩⾊のカードを探す 2.

    残⾼をチェックする 3. 残⾼を減らす 4. ヨシ! ࢒ߴ 1. ⻘⾊のカードを探す 2. 残⾼をチェックする 3. トークン情報をもらう 4. ヨシ! ⻘⾊のカードをMobileに登録 ApplePayで決済 1. のカードを探す 2. 残⾼をチェックする 3. 残⾼を減らす 4. ヨシ!
  31. 構築例) Mobileペイメントだけ移譲する CM イシュア 加盟店 TSP ΦʔιϦγεςϜ ⻩⾊のカードで100円の買い物 ࢒ߴ ੨৭ͷΧʔυΛ.PCJMFʹొ࿥

    普通のカード決済は⾃分で処理 Χʔυ৘ใΛಉظͯ͠Ҡৡ͢Δ TSPͰॲཧ׬݁ (1BZͰܾࡁ 1. GPayの情報はわからない ので、TSPに問い合わせ 2. ⻘いカードとわかる 3. 通常の処理 プリペイドだと ちょっと決済に時間かかる ࣮ଌɿՃໍళͱͯ͠νϟʔδͷܾࡁΛͨ͠৔߹ʹɺશମͱͯ͠௨ৗͷΧʔυܾࡁΑΓ΋5PLFOܾࡁͷ΄͏͕ ܾࡁωοτϫʔΫͷԠ౴͕ฏۉͰ஗͍ͷ͕؍ଌ͞Ε͍ͯ·͢
  32. 構築例)残⾼だけ⾃分で管理 CM 加盟店 ΦʔιϦγεςϜ ⻩⾊のカードで100円の買い物 ࢒ߴ ΠγϡΞ ࢒ߴ 同期したり 決済時にAPIコールしてもらったりする

    このパターンは、カード番号をアプリとかで知らせない限り PCI DSSと結構無縁で作れる γεςϜआΓΔ 決済時にAPIコー ルされるのであれ ば送⾦の実現は 割とすぐにできる
  33. 結果、今回は全部作りました 6gramにするために

  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. 5グラム(普通のプリペイドカード)の 機能が実装されました!! 6gramにするために

  36. 1を⾜してサービスを作ってみます 6gramにするために

  37. PR

  38. 「6gram」サービス紹介 ひとりでも、グループでも使うことのできるウォレットサービス グループに⼊れたお⾦をシェアしたり、インスタントに発⾏したプリペイドカードに 残⾼を割り付けたりといろんな使い⽅ができる ‣ JCB プリペイドカードを1アカウントで複数枚発⾏できる ‣ ApplePay /

    GooglePay と連携して QUICPay+ 決済 ‣ iOS では コンタクトレス決済にも対応 ‣ リアルカードも発⾏予定 ‣ 現在は完全招待制 PR
  39. ⾃由⾃在にお⾦やカードを動かせる CM 6gram 加盟店 TSP ΦʔιϦγεςϜ "QQMF1BZͰܾࡁ カードをそのまま使う 複数のカードを残⾼に紐づけ カードとカードをつなげる

    ⾃由度がいっぱい ࣗ෼ͨͪͰγεςϜΛ࡞ͬͨͷͰɺΧʔυͷಉظ΍࢒ߴͷ਺ͳͲʹ੍ݶ͕ੜ·Εͳ͍ ڞಉ スイッチ グループウォレット
  40. 今⽇はいくつか招待コードのステッカー持ってきてます! Ask the speaker の時にお渡しできます 社内ではお菓⼦を買う共有ウォレットとして使ったりしてます 招待コードは⼀回使い切りですが、 アプリ内で何度でも招待コードを作れます 仲のいい⼈たちを招待して使ってみてください。 CM

  41. おわりに PCI DSSでは様々な運⽤フローの策定や証跡管理が必要 運⽤負荷をへらしていくことが重要です ⾃分たちでルールや仕組みを作り上げて、実践 チームビルディングやチーム⼒の底上げにつながる PCI DSSだけではシステムやサービスを守れない PCI DSS管理外のコンポーネントでも、セキュリティを担保しつつ運⽤コストを減らす⾏動

    ⽇頃から最新のセキュリティ情報を⼿に⼊れ続ける 監査がなくても、安全なシステム開発・運⽤が保たれるような組織づくり
  42. おわりに 必ずしも⾃分たちで全てを構築するのが正解とは限りません ただの⾞輪の再発明かもしれません ただ⾃分たちでやってみることで⾒えてくる世界もあります。 みんなでわいわいDIY

  43. None