Watch-IPのセキュリティとAPIキーの取り扱い
このページでは、現在Watch-IP APIに実際に実装されているアクセス制御について説明します:2種類のキーの仕組み、オリジンの検証方法、キーのローテーションや無効化の方法、そしてセキュリティ問題の報告方法です。コンプライアンス認証や独立したセキュリティ監査を主張するものではありません—本記事作成時点でそのような認証・監査は完了していません。
2種類のキー、2つの異なる制御方式
公開可能キー(GET /v1/geoとPOST /v1/email/validateで使用)はブラウザのコード内で動作することを前提としており、秘匿されたものではありません—制御方式は、そのキーに設定された許可オリジンのリストであり、リクエストのOrigin/Refererヘッダーと照合されます。シークレットキー(GET/POST /v1/lookupとPOST /v1/risk/checkで使用)は、オリジンチェックを一切行わないサーバー間通信専用の認証情報です。バックエンドの呼び出しにはブラウザのOriginヘッダーが存在しないためです。シークレットキーは、公開識別子ではなくデータベースのパスワードと同様に扱ってください。各キータイプが想定するリクエスト形式については認証をご覧ください。
オリジンロックの検証方法
キーの許可リストに含まれないオリジンからの公開可能キーによるリクエストは、Access-Control-Allow-Originヘッダーが設定されない403を返します。ブラウザがページのJavaScriptがそのレスポンスを読み取る前にブロックすることが実際の制御であり、JSONのエラー本文は二次的なものです。オリジンロックはキー自体を秘匿するものではなく、ブラウザ以外のクライアントが偽装したOriginヘッダーを送信することを防ぐものでもありません—これは特にブラウザからの呼び出し経路を保護するものです。
通信と保存
APIおよびダッシュボードへの通信は転送時に暗号化されており(TLS/HTTPS)、APIはキー認証が必要なリクエストに対して平文のHTTPを受け付けません。APIキーはハッシュ化(SHA-256)して保存されており、平文では保存されないため、データベースの侵害だけでは利用可能なキーの値が漏洩することはありません。
ローテーションと無効化
ダッシュボードからキーを無効化・ローテーションできます。無効化はすべての場所で即時には反映されません:キーの有効性はルックアップ後最大5分間キャッシュされるため、無効化されたキーが無効化後最大5分間受け付けられ続ける可能性があります—侵害が疑われた際にどれだけ迅速にアクセスを遮断できるかを考慮し、時間的制約のあるインシデントでは無効化のみに頼らず、積極的にローテーションを行ってください。
レート制限
すべてのキーは顧客アカウントごとに固定された1分間の時間枠でレート制限され、呼び出すエンドポイントに関わらず共有されます—エンドポイントごとの個別の制限ではありません。これにより、1つの漏洩・誤用されたキーが短時間で及ぼす被害を制限できますが、それ自体は侵害されたキーをローテーションする代わりにはなりません。
セキュリティ問題の報告
キーが侵害されたと思われる場合や、APIまたはダッシュボードにセキュリティ上の問題を発見した場合は、security@watch-ip.comまでご連絡ください。現時点では公開のバグバウンティプログラムや第三者機関によるセキュリティ認証は実施していません—状況が変わった場合は、バッジではなく日付を明記してこのページでお知らせします。