セキュリティのベストプラクティス

NU Signal Partners APIを安全に統合するためのガイドです。

シークレットを保護する

  • APIキーのシークレットと視聴者IDのsaltは一度だけ表示または把握できます。シークレットマネージャーに保存し、ソース管理、クライアントバンドル、ログ、エラーレポートには入れないでください。
  • シークレットが漏えいしたら直ちに失効またはローテーションしてください(APIキー)。

キーはサーバーだけで使用する

  • APIはバックエンドから呼び出してください。nsp_test_やnsp_live_をブラウザ、モバイルアプリ、配布クライアントに埋め込まないでください。
  • 再生トークン要求など、クライアント起点のフローはすべてサーバー経由にし、キーと視聴者saltを非公開に保ちます。

キーを定期的にローテーションする

  • 定期的に、また漏えいが疑われるたびにoverlap-and-revokeでローテーションします。作成、配布、確認後に旧キーを失効します。キーの失効は発行済みトークンやセッションを取り消さず、それぞれのTTLで失効するためTTLは短くしてください。

視聴者IDをハッシュ化 — PII禁止

  • viewer_id_hashは貴社側で計算したSHA-256(stable_viewer_id + salt)でなければなりません。Productionは64文字の小文字16進数のみ受け付けます。生のメール、電話番号、デバイスIDを送信しないでください。NUは生のPIIを受信・保存しません(再生API)。
  • 再生のpreferencesにも同じ規則が適用されます。非PIIの嗜好シグナルだけを送信してください。@または空白を含む値は422 validation_failedで拒否されます。

オリジンとIPを制限する

  • allowed_originsで再生トークンを自社ドメインだけに発行し、allowed_ipsでAPIリクエストを自社サーバーアドレスに固定します(APIキー)。

最小権限のスコープ

  • 各キーにはコンポーネントが必要とする権限だけを付与します。たとえば取り込みにはsettlement:disputeではなくevents:writeが必要です。大量処理と機密処理を分けてください(認証)。
  • api_keys:writeは保管庫に保存した運用キーだけに付与し、再生やイベントのランタイムキーにはキー管理スコープを付与しないでください。

再生URLを公開しない

  • webview_urlと署名付きHLS/DASHマニフェストは短命で(既定1,800秒、絶対最大7,200秒、Production既定上限1,800秒)、署名トークンを含みます。Bearerシークレットとして扱い、ログ記録、expires_at後のキャッシュ・共有、共有リンクへのwebview_url掲載をしないでください。必要に応じ再発行し、webview_urlは視聴者のWebViewまたはiframe内だけで開きます。