ApsaraVideo VOD を通じて配信されるコンテンツは、デフォルトでパブリックです。不正なダウンロードやホットリンクを防止するには、リファラーベースのホットリンク防止や IP アドレス許可リスト/ブロックリストなどの対策と併せて、URL 署名を有効にすることができます。URL 署名は、リクエスト URL 内の署名文字列とタイムスタンプを検証することで、オリジンサーバーのリソースを保護します。
仕組み
ApsaraVideo VOD の URL 署名は、Alibaba Cloud の CDN POP とアプリケーションサーバーが連携して、不正なアクセスを防止します。これには以下のコンポーネントが関係します。
-
アプリケーションサーバー:署名アルゴリズムやキーなど、事前に定義されたルールに基づいて署名付き URL を生成します。
-
ユーザーのアプリまたはブラウザ:検証を受けるため、署名付き URL を CDN POP に送信してリソースをリクエストします。
-
CDN POP:署名付き URL 内の署名文字列やタイムスタンプなどの情報を検証します。
認証プロセスは次の手順で実行されます。
-
アプリケーションサーバーで署名付き URL を生成するためのルールを設定します。
-
クライアントがアプリケーションサーバーに署名付き URL をリクエストします。
-
アプリケーションサーバーは、リクエストされたリソースの署名付き URL を返します。
-
クライアントは、署名付き URL を使用して CDN POP にリソースをリクエストします。
-
CDN POP は、署名付き URL 内の認証情報を検証します。
-
認証に失敗した場合、リクエストは拒否されます。
-
認証に成功した場合、CDN POP はリクエストを処理します。
-
-
認証が成功すると、CDN POP はキャッシュロジックに基づいてリソースを提供します。
説明-
リクエストがキャッシュミスになった場合、CDN POP はオリジンフェッチを実行します。その際、署名付き URL から認証パラメータを削除して元の URL (例:
http://DomainName/FileName) を復元します。CDN POP は、この元の URL を使用してキャッシュキーを生成するか、オリジンサーバーからコンテンツをフェッチします。 -
CDN がリクエスト URL を認証した後、URL 内の特殊文字 (
=や+など) をエスケープします。
-
URL 署名の有効化と設定
-
署名アルゴリズムやキーなど、署名付き URL を生成するためのルールがアプリケーションサーバーで設定されていることを確認してください。
-
ApsaraVideo VOD の URL 署名ロジックは、アプリケーションサーバーのロジックと一致している必要があります。
-
ApsaraVideo VOD コンソール にログインします。
-
左側のナビゲーションペインで、設定の管理 > 配信の高速化設定 > ドメイン名 を選択します。
-
設定するドメイン名を見つけ、[操作] 列の [設定] をクリックします。
-
RAM をクリックします。
-
URL 署名 タブに移動し、URL 署名の設定 セクションの 設定の変更 をクリックします。
-
URL 署名 を有効化し、認証パラメーターを設定します。
パラメータについて、次の表で説明します。
パラメータ
説明
[タイプ]
ApsaraVideo VOD は 3 種類の署名方式をサポートしています。必要な署名付き URL の形式に一致する方式を選択してください。
説明URL 署名エラーは 403 ステータスコードを返します。
-
MD5 ハッシュエラー
例:
X-Tengine-Error:denied by req auth: invalid md5hash=de7bfdc915ced05e17380a149bd7**** -
タイムスタンプエラー
例:
X-Tengine-Error:denied by req auth: expired timestamp=143946****
[プライマリキー]
選択した署名方式のプライマリキーを入力します。キーは 6~32 文字で、大文字、小文字、数字のみで構成されている必要があります。
[セカンダリキー]
選択した署名方式のセカンダリキーを入力します。キーは 6~32 文字で、大文字、小文字、数字のみで構成されている必要があります。プライマリキーまたはセカンダリキーの少なくとも一方を指定する必要があります。
説明セカンダリキーを使用すると、キーローテーション時に古いキーで署名された URL が有効なままとなり、サービスの中断を防ぐことができます。
[デフォルト有効期間]
署名付き URL の有効期間です。URL のタイムスタンプにこの有効期間を加えた時刻までアクセスが許可されます。
-
デフォルト:30。単位:分。
-
例:署名サーバーが 2020-08-15 15:00:00 (UTC+8) に署名付き URL を生成し、デフォルトの有効期間が 30 分に設定されている場合、署名付き URL は 2020-08-15 15:30:00 (UTC+8) に有効期限が切れます。
[お試し視聴をサポート]
プレビュー機能により、ユーザーはメディアファイルの一部 (最初の 5 分間など) を視聴または聴取できます。これは、サブスクリプションベースまたは従量課金制のコンテンツに一般的に使用されます。詳細については、「動画のプレビュー」をご参照ください。
-
-
決定 をクリックして設定を保存します。
有効にすると、このドメイン名を通じて配信されるすべてのコンテンツに URL 署名が適用されます。
ApsaraVideo VOD コンソールで管理されているリソースの場合、コンソールは自動的に有効期限付きの署名付き URL を生成します。また、GetPlayInfo API を呼び出して署名付き URL を取得することもできます。
説明URL 署名を有効にすると、動画、音声ファイル、サムネイル、スナップショットなど、すべてのアセットの URL に適用されます。
URL 署名の無効化
ApsaraVideo VOD で URL 署名を無効にしても、クライアントのリクエストに署名パラメータが含まれている場合、ApsaraVideo VOD は元の URL を復元できません。各リクエストはキャッシュミスとなってオリジンサーバーに転送され、コストが大幅に増加する可能性があります。これを回避するには、ApsaraVideo VOD とアプリケーションサーバーの両方で URL 署名を無効にしてください。
-
URL 署名の設定 セクションで、設定の変更 をクリックします。
-
署名付き URL スイッチを無効にします。
-
アプリケーションサーバーで生成されるリクエスト URL から署名パラメータを削除します。
署名付き URL の生成
コンソールからの生成
URL 署名を設定した後、コンソールから署名付き URL を生成して、署名ロジックが正しいことを確認します。
-
署名付き URL の生成 セクションで、オリジナル URL とその他の認証情報を設定します。
パラメータについて、次の表で説明します。
パラメータ
説明
[オリジナル URL]
完全な元の URL を入力します。例:
https://****.com/ecs.mp4。[タイプ]
URL 署名の有効化と設定手順で選択した署名タイプ (A、B、または C) を選択します。
[認証キー]
「認証を有効にして署名付き URL を設定する」で設定した内容に基づいて、プライマリキー または セカンダリキー を入力します。
[有効期間]
URL 署名の有効化と設定で指定した設定に従って、URL 署名の有効期間を入力します。単位は秒です。例:1800。
-
生成 をクリックすると、署名付き URL と Timestamp が表示されます。
生成された署名付き URL は、
https://<domain-name>/<path>?auth_key={timestamp}-0-0-{md5hash}の形式になります。[コピー] ボタンをクリックして URL をコピーできます。
SDK を使用した生成
ApsaraVideo VOD SDK をアプリケーションサーバーに統合し、GetPlayInfo API を呼び出して署名付き URL を生成します。
コードを使用した生成
3 つの署名方式のいずれかを使用して、カスタムコードで署名付き URL を生成することもできます。