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