鍵の概要

Media CDN は、リクエストの署名時に暗号鍵ペアを使用します。Media CDN は、鍵セットを使用して、リクエストの署名に積極的に使用される鍵ペアを保存します。最大 3 つの公開鍵と 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 形式でエンコードできる。

  • 一致する秘密鍵を持っている。

次のステップ