合同会社Techno Vision AO

連載「YOKOSO PAY の舞台裏」第 3 回

YOKOSO PAY のセキュリティと運用守る・気づく・直す

この記事のまとめ

  • お店とお客様のお金と情報を、何重にも守っています。 カード番号は当社を通らず、データは立場ごとの権限で分け、鍵は 1 か所にだけ置いています
  • 異常には、すぐ気づける仕組みにしています。 人が本番のシステムに直接触れたとき、定期処理が失敗したとき、決済の記録が合わないときは、運営にすぐ知らせが届きます
  • 気づいたら、決まった流れで直します。 AI が原因と影響を調べ、直したものは品質ゲートを通って、いつもと同じ流れで本番に出ます

はじめに

合同会社Techno Vision AO は、町おこしのプラットフォーム「YOKOSO PAY」を作り、運営しています。第 1 回ではシステムの構成を、第 2 回では開発体制を紹介しました。

第 3 回は、セキュリティと運用です。お店の決済とお客様の情報を預かるサービスとして、何をどう守り、異常にどう気づき、どう直しているかを紹介します。

前半は、お店・お客様・自治体の方に向けて、専門用語を使わずに書きます。後半は、IT 事業者・エンジニアの方に向けて、使っている仕組みまで具体的に書きます。

この記事の「本番」は、お客様とお店が実際に使っているシステムと、そのデータのことです。動きを確かめるための環境 (確認用の環境) とは分けています。

お店・お客様の方へ: 何を、どう守っているか

心配なことYOKOSO PAY では
カード番号が盗まれないかカード番号は、当社のシステムを通りません。決済の会社 (Stripe) が預かり、当社は持ちません
知らないうちに請求されないか1 回の金額や回数に上限をかけ、カードの本人確認 (3D セキュア) を求めます。同じ支払いは 1 回だけ記録します
売上や情報を、ほかの人に見られないかログインした人の立場ごとに、見られる範囲を決めています。お店のスタッフでも、返金や売上の操作ができるのはオーナーと店長だけです
アカウントを乗っ取られないか2 段階認証やパスキーを使えます。運営のアカウントは、2 段階認証を必ず使います
データが消えないか本番のデータは削除から守り、過去の時点に戻せるようにしています
退会したら情報はどうなるか決めた期間がたったら、自動で消したり、誰のものか分からない形にしたりします
何か起きたら運営にすぐ知らせが届き、決まった流れで直します

全体像

YOKOSO PAY の守りは、「守る」「気づく」「直す」の 3 つの柱で組み立てています。これは、セキュリティの標準の考え方 (NIST のサイバーセキュリティフレームワーク) の「防御」「検知」「対応・復旧」にあたります。

柱標準の考え方主な仕組み
守る防御 (多層防御・最小権限)カード番号を持たない・立場ごとの権限・秘密は 1 か所・セキュリティのヘッダ・部品の版の固定・本番に出すときの承認
気づく検知 (監視・監査ログ)人が本番のシステムに直接触れたら通知・定期処理の失敗・毎朝の決済の照合・毎晩の設定の検査・画面のエラー・緊急の脆弱性
直す対応・復旧AI が原因と影響を調べる・品質ゲートを通して直す・前の版に戻す・手順書
YOKOSO PAY の守り・気づき・直し
図 1YOKOSO PAY の守り・気づき・直し押すと拡大します

守る: 何重にも守る (多層防御)

ねらい1 つの守りが破られても、次の層で止まるようにする (多層防御)。権限は、その仕事に要る最小にとどめる (最小権限)。入口 → ログイン → 権限 → データと決済の順に、層を重ねる。

1. 入口

2. ログイン

3. 権限

4. データと決済

5. 部品と変更の管理 (サプライチェーン)

効果どこか 1 か所に誤りや漏れがあっても、それだけで全部が開くことはありません。決済の情報は、そもそも当社に置かないので、漏れようがありません。

気づく: 異常を、すぐ運営に届ける (検知)

ねらい守りは、いつか破られる前提で考える。破られたとき・壊れたときに、すぐ気づけることが、被害を小さくする。気づく仕組みが止まったことにも、気づけるようにする。

仕組み

知らせは、Cloud Monitoring からログ・Pub/Sub・Cloud Functions を通って、運営の Slack に届きます。本番と確認用の環境で、届く部屋を分けています

効果人が本番のシステムに直接触れたこと、処理が止まったこと、お金の記録が合わないことに、その日のうちに気づけます。通知が来ないことが「何も起きていない」の証拠になるよう、検査そのものの生存も知らせます。

直す: 決まった流れで直す (対応・復旧)

ねらい気づいたら、迷わず同じ手順で直す。急いでいるときほど、いつもの品質ゲートを外さない。

仕組み

効果調べ方が人によって変わらず、夜中でも同じ質で原因にたどり着けます。直したものが、別のところを壊して戻ってくることもありません。

実話: 定期処理の失敗に、1 か月気づけなかった

以前、本番の予約の自動キャンセルの定期処理が、設定の誤りで 1 時間ごとに失敗し続けていました。失敗は 802 回、成功は 0 回。ログには出ていましたが、運営に知らせる道が無く、1 か月近く誰も気づけませんでした。

解決設定を直しただけで終わらせず、気づく仕組みを足しました。定期処理の失敗をアラートにし、Slack へ知らせる道を作り、届いたアラートから AI が原因を調べるスキルを作りました。あわせて、定期処理ごとの権限も、届くデータベースを絞り直しました。一度の失敗を、仕組みの穴として埋めるようにしています。

費用を守る: 使いすぎで赤字にしない

ねらいお店に安く使っていただくには、思わぬ使いすぎで費用がふくらまないことが前提になる。ボットや誤り、一部の使いすぎで、サービス全体が赤字にならないようにする。

仕組み

効果ほとんどのお店は追加の料金なしで使え、使う量が増えたお店も止まらずに続けられます。使いすぎが起きても、費用はお店にも当社にも決めた範囲に収まります。小さく安く続けられる理由の 1 つです。

お店ごとの利用枠と、費用の守り
図 2お店ごとの利用枠と、費用の守り押すと拡大します

これから: 利用が増えるのに合わせて、次のように広げます。

あえて採らなかった判断

お客様のパスキー・2 段階認証を、必須にしない

YOKOSO PAY のお客様には、旅行の途中で使う方が多くいます。毎回のログインに手間をかけると、その場で使えなくなります。とくに海外から来た方は、端末を替えたときに戻る手段 (SMS など) が限られます。そこで、お客様のパスキーと 2 段階認証は、望む方だけが使う任意のものにしています。代わりに、決済に上限と本人確認 (3D セキュア) をかけ、パスキーを登録したときは新しい端末の知らせをメールで送ります。運営のアカウントは、2 段階認証を必須にしています

端末の信頼の確認を、本番では使わない

ログインした端末を「信頼できる端末」として覚え、知らない端末からの操作を止める仕組みは作ってありますが、本番では使っていません。iPhone の Safari は、しばらく使わないサイトの保存データを消すことがあり、正しいお客様やお店が締め出されてしまうためです。確認用の環境で動かし続け、使える形になったら本番に出します。

これから足すもの

第 1 回の「これからの構成」と同じく、利用が増えるのに合わせて、次のものを足します。

まとめ

次回は、システムの外の話です。イベントや地域の取り組みを、企画の段階から一緒に進める伴走を紹介します。

ご意見・ご相談

セキュリティや運用へのご意見、「うちのサービスも見てほしい」といったご相談をお待ちしています。

お問い合わせのフォーム

YOKOSO PAY

旅行者・お店・町をつなぐ観光アプリ

YOKOSO PAY のご紹介を見る