私たちの見解

アカウント単位とネットワーク単位の割り当てが両方とも必要な理由

アカウント単位の割り当ては、この特定のキーがどれだけ使ったか、という単純な問いに答えるものです。最初に管理するものとしては自然ですが、それだけでは十分ではありません。キーは単なる認証情報であり、認証情報はいくらでも増やせるからです。アカウント単位の上限を超えようと決めた人は、多くの場合、別のアカウントを作り、別のキーを発行して、新しい割り当てを始めるだけで済みます。新しい認証情報が発行されてもリセットされない別の軸を何かが追跡していない限り、そうなります。

そのためにあるのがネットワーク単位の割り当てです。各ネットワーク(IPv4アドレスなら/24ブロック1つ、IPv6なら/48ブロック1つ)には、1日あたり2,500リクエストの共有無料枠があり、キーなしのトラフィックと、そのネットワークから登録されたすべてのキーの両方を合算してカウントします。アカウント単位の上限だけでは、新しいキーを際限なく発行して無料枠をリセットし続けることができてしまいます。ネットワーク単位の上限はまさにその穴を塞ぎます。どの認証情報が付いていたかだけでなく、トラフィックが実際にどこから来ているかを追跡しているからです。

どちらの指標も単独では不十分です。両者は異なる問題を解決するので、それぞれが何から守っているのかを具体的に説明しておく価値があります。アカウント単位の追跡は、1つの認証情報が本来の範囲をはるかに超えて使われることから守ります。これは請求の正確さのためにも、漏えいしたキーが本来使われるべきでない場所で使われているのを見つけるためにも重要です。ネットワーク単位の追跡は、登録を繰り返すことで無料枠そのものが増やされることから守ります。これは別の種類の失敗であり、アカウント単位の追跡だけでは見えません。新しいアカウントは、それぞれ単独で見ればまったく普通に見えるからです。

両方を同時に運用すると、正当な問題も生じます。少数のパブリックIPアドレスの背後にある企業のように、複数の正規ユーザーが1つのネットワークを共有している場合、理論上は、個々のユーザーの実際の利用量とは無関係にネットワーク単位の上限にぶつかる可能性があります。私たちはこれをローリング方式のIPスロット(1つのキーを使用できる異なるアドレスの固定数)と、上限に対してそのスロットがいくつ使用中かを正確に示す割り当てヘッダーで対処しています。これにより、正当な共有ネットワークは、説明のない不透明な壁にぶつかるのではなく、自分たちの実際の状況を確認できます。

これは、1つの軸だけを追跡するというより単純な設計のほうが、不正利用への防御が弱いだけでなく、誠実なユーザーにとっても実際に悪い結果になるケースだと考えています。ネットワークだけの上限では、同じネットワーク上の無関係な活動のせいでアカウントが不利益を受けます。アカウントだけの上限では、十分な数のアカウントを作る気がある人なら誰でも無料枠を際限なく増やせてしまいます。両方を運用し、それぞれをレスポンスヘッダーで可視化するのは仕組みとして複雑になりますが、本来の意図どおりに使っている人を黙って罰することなく、無料枠が守るべきものを実際に守れるのはこの方式です。