Media CDN は、リクエストの署名時に暗号鍵ペアを使用します。Media CDN は、鍵セットを使用して、リクエストの署名に積極的に使用される鍵ペアを保存します。キーセットあたり、公開鍵と共有検証鍵をそれぞれ 3 つまで、合計 6 つの鍵を指定できます。
キーセットから未使用のキーを削除することもできます。鍵の追加と削除は、通常はシークレットのローテーションと呼ばれます。シークレットのローテーションにより、次のことができます。
- 新しいシークレットをキーセットの末尾に付加して、安全に追加する。
- 対応するシークレットでトークンを生成する。
最も古いトークンの期限切れ後に、古いシークレットを削除する。
たとえば、短期トークンが 1 時間後に期限切れになるように設定したとします。次に、新しいリクエストで 1 時間以上にわたってユーザーにサービスが提供された後、短期トークンに使用される最も古いシークレットを削除します。
未使用のシークレットを削除する前に、アプリケーション サーバーでユーザー リクエストの署名に使用されていないことを確認してください。シークレットをキーセットから早期に削除してしまうと、メディア CDN はそのシークレットに関連付けられたリクエストを検証できなくなります。影響を受けるユーザーには HTTP 403
Forbidden
レスポンスが提供されます。
Secret Manager への同時アクセスのパフォーマンス、信頼性、費用を最適化するために、共有検証鍵シークレットは最大 1 時間キャッシュに保存されます。シークレットをキャッシュに保存すると、Secret Manager がシークレットから削除されてから最大 1 時間、トークンがアクセスされる可能性があります。
鍵は定期的にローテーションすることをおすすめします。
既知の制限事項
Media CDN は、Cloud CDN で使用される対称署名で署名されたリクエストを HTTP 403
レスポンスで拒否します。現在、Media CDN は、トークン形式と Media CDN が参照する鍵を使用するリクエストで対称鍵をサポートしています。
非対称鍵は、512 ビット(64 バイト)の秘密鍵と 256 ビット(32 バイト)の公開鍵を持つ Ed25519 ペアとして生成する必要があります。Tink ライブラリは、C++、Go、Java、Objective-C で Ed25519 署名の鍵生成、署名、検証をサポートしています。
非対称鍵には次の特性が必要です。
44 バイト(パディングあり)または 43 バイト(パディングなし)の Base64 エンコードである。base64 のパディングされた形式とパディングされていない形式の両方が受け入れられる。
公開鍵は URL セーフの Base64 形式でエンコードする必要がある。秘密鍵は 標準の Base64 形式でエンコードできる。
一致する秘密鍵があること。