開発者/本番公開

セキュリティ

APIキーを使えば、ウォレットのお金を使うことも、カードのコードを読むこともできます。APIキーと受け取ったコードは、銀行口座の情報や現金と同じように厳重に管理してください。

関連ドキュメント:認証 · Webhook · Sandbox

#秘密情報の管理

秘密情報重要な理由保管場所
APIキー(cvb2b_...)持っていれば誰でも注文でき、コードを読めます。シークレット管理ツール(サーバー上のみ)
Webhookのシークレット(whsec_...)WebhookがCardVから送られたものであることを証明します。Webhookを受信するサーバーのみ
PortalのパスワードOwnerはAPIキーを作成・表示できます。パスワード管理ツール(2FAを併用)
  • APIキーはサーバー上にだけ置いてください。アプリ、ブラウザ、URL、コードリポジトリ、問い合わせチケット、チャット、メールには絶対に入れないでください。
  • システムごとに別のキーを使うと、1つを無効にしても他のシステムは止まりません。
  • キーを見られる人を限定してください。アクセスできる担当者が退職・異動したら、キーを切り替えてください。
  • キーが漏れた可能性がある場合は、すぐにPortalで無効にしてください。 その後、新しいキーを作成し、CardVのサポートにご連絡ください。
  • PortalのOwner全員で2段階認証(2FA)を有効にしてください。

#コードとエンドユーザーの情報

APIキーで GET/orders/{order_id} を呼び出すと、そのまま使えるコードが返ります。コードには、カード番号、PIN、セキュリティコード、QRコードのデータ、引き換え用のリンクが含まれます。注文には、エンドユーザーのチャージ先情報(inputs)もそのまま含まれます。

  • 注文のレスポンス、コード、引き換え用のリンク、エンドユーザーの inputs は絶対にログに記録しないでください。代わりに、order_id、external_order_id、sku_id、HTTPステータスなどのIDを記録してください。
  • X-Api-Key、X-Signature、X-CardV-Signature の各ヘッダーもログに記録しないでください。
  • コードは暗号化して保存してください。コードを読めるのは、エンドユーザーに届ける処理だけにしてください。保存期間が過ぎたら削除してください。
  • 注文のレスポンスを、共有キャッシュ、CDN、監視ツールにキャッシュしないでください。CardVとの通信では、本文を記録する機能をオフにしてください。
  • redeem_url そのものがコードです。PINと同じように守ってください。

#ネットワーク

  • 接続先は b2b.cardv.net と sandbox.cardv.net だけにし、必ずHTTPSを使ってください。証明書の検証は絶対に無効にしないでください。
  • 本番環境ではIP許可リストを使ってください。キーが漏れたときの被害を小さくできます。サーバーが変わったら、リストも更新してください。
  • すべてのWebhookで署名を検証し、古いタイムスタンプは拒否し、重複は無視してください。WebhookのURLにログイン認証をかけないでください。署名が本物である証明になります。

#担当者と権限

  • Portalの各ユーザーには、必要最小限の権限を与えてください。閲覧だけならViewer、注文と入金ならManager、セキュリティの管理ならOwnerです。
  • 担当者が退職・異動したら、LiveとSandboxの両方のPortalから削除してください。

#監査ログ

Portalの監査ログ(Owner)には、セキュリティに関わる操作が記録されます。たとえば、キーの作成と表示、IP許可リストの変更、Webhookのシークレットの変更などです。CardVも、ブロックしたIPアドレス、署名の検証失敗、レート制限の超過を記録しており、不審な動きがあれば担当チームに通知が届きます。

監査ログは定期的に確認してください。心当たりのないキーの表示があれば、漏えいの可能性があるものとして対応してください。

#問題の報告

キーの漏えい、不正な注文、CardV側のセキュリティ上の問題が疑われる場合は、すぐに [email protected] までご連絡ください。Merchant IDと注文IDを添えてください。秘密情報そのものは絶対に含めないでください。

連携についてご不明な点は、Merchant ID と注文 ID またはリクエスト ID を添えて [email protected] までお問い合わせください。