デフォルトでは、CDN または によって配信されるコンテンツは公開されており、URL を知っていれば誰でもアクセスできます。オリジンリソースを不正アクセスや悪意のあるダウンロードから保護するために、Referer ホットリンク保護や IP ブラックリスト/ホワイトリストなどのアクセス制御方法に加えて、URL 署名を使用できます。URL 署名は、署名付き URL に含まれる暗号化された文字列とタイムスタンプを検証することで、コンテンツを保護します。
仕組み
URL 署名は、Alibaba Cloud CDN または の POP とオリジンとの間でリクエストを調整することにより、オリジンリソースへの不正アクセスを防ぎます。このプロセスは、次の 3 つの主要コンポーネントで構成されます。
オリジンアプリケーションサーバー:定義された署名ルール (アルゴリズムとキーを含む) に基づいて署名付き URL を生成し、クライアントに返します。
クライアント:署名付き URL を CDN または の POP に送信して、リソースをリクエストします。
CDN または の POP:署名付き URL 内の情報 (署名文字列やタイムスタンプなど) を検証します。
CDN または をご利用のお客様は、オリジンアプリケーションサーバーで署名付き URL の生成ルール (署名アルゴリズムとキーを含む) を設定します。
たとえば、署名付き URL は
http://DomainName/timestamp/md5hash/FileNameのような形式になります。クライアントがアプリケーションのページにアクセスすると、オリジンアプリケーションサーバーは設定されたルールに基づいて署名付き URL を生成し、それをクライアントに返されるページに埋め込みます。
クライアントは、署名付き URL を使用して CDN または の POP からリソースをリクエストします。
CDN または の POP は、署名付き URL 内の情報 (署名文字列やタイムスタンプなど) を検証し、リクエストが正当であるかどうかを判断します。
認証に失敗した場合、POP はリクエストを拒否します。
認証に成功した場合、POP はコンテンツを配信します。
説明CDN または ノードにキャッシュされたリソースがない場合、CDN または ノードは署名付き URL から認証パラメーターを削除して元の URL (例:
http://DomainName/FileName) に復元し、その元の URL を使用してキャッシュキーを生成するか、オリジンフェッチリクエストを開始します。CDN または がリクエスト URL を認証した後、URL 内の特殊文字 (中国語やその他の非 ASCII 文字など) をエンコードします。
注意事項
URL 署名を設定した後でも、認証に失敗したリクエストは CDN または ノードに到達する可能性がありますが、CDN または ノードによって拒否され、403 ステータスコードが返されます。CDN または のログには、これらの失敗した認証リクエストが記録されます。
URL 署名は CDN または の POP でリクエストを検証します。したがって、悪意のあるリクエストをインターセプトする場合でも、少量の課金対象トラフィックが消費されます。HTTPS リクエストの場合、CDN または の POP がインターセプトを実行するために処理リソースを消費するため、追加料金が適用されます。
URL 署名の設定と有効化
オリジンアプリケーションサーバーで、署名付き URL の生成ルール (署名アルゴリズムとキーを含む) が設定されていることを確認してください。
CDN または コンソールで設定された URL 署名ロジックは、オリジンアプリケーションサーバーのロジックと一致させる必要があります。
Alibaba Cloud CDN コンソールにログインします。
左側のナビゲーションペインで [ドメイン名 ] をクリックします。
[ドメイン名] ページで、管理対象のドメイン名を見つけ、[アクション] 列の [管理] をクリックします。

ドメイン名の左側のナビゲーションウィンドウで、[リソースアクセス制御] をクリックします。
URL 署名 タブをクリックします。
URL 認証 セクションで、変更 をクリックします。
URL 署名の設定 スイッチをオンにして、パラメーターを設定します。
パラメーター
説明
[署名タイプ]
Alibaba Cloud CDN は 4 つの署名方法を提供します。署名付き URL の形式に基づいて署名タイプを選択し、オリジンリソースを効果的に保護できます。次の URL 署名タイプが利用できます。
説明URL 署名に失敗した場合、403 エラーが返されます。
MD5 計算エラー
例:
X-Tengine-Error:denied by req auth: invalid md5hash=de7bfdc915ced05e17380a149bd760be時間関連のエラー
例:
X-Tengine-Error:denied by req auth: expired timestamp=1439469547
[マスターキー]
署名方法のプライマリキーを入力します。キーは 6~128 文字で、大文字、小文字、数字を使用できます。
[バックアップキー]
署名方法のセカンダリキーを入力します。キーは 6~128 文字で、大文字、小文字、数字を使用できます。プライマリキーまたはセカンダリキーの少なくとも一方を指定する必要があります。
[TTL]
署名付き URL の有効期間を指定します。クライアントは、タイムスタンプ + TTL の期間内にリソースにアクセスする必要があります。この期間を過ぎて送信されたリクエストは認証に失敗します。
単位:秒
有効な値:1〜31536000
デフォルト値:1800 (30 分)
例: 署名サーバーが 2020 年 8 月 15 日 15:00:00 (UTC+8) に署名付き URL を生成し、TTL が 1,800 秒の場合、署名付き URL は 2020 年 8 月 15 日 15:30:00 (UTC+8) に失効します。
[署名パラメーター]
署名パラメーターの名前をカスタマイズできます。これは、認証タイプがタイプ F に設定されている場合にのみ有効になります。
[タイムスタンプパラメーター]
タイムスタンプパラメーターの名前をカスタマイズできます。これは、認証タイプがタイプ F に設定されている場合にのみ有効になります。
[タイムスタンプ 形式]
タイムスタンプ形式を 10 進数 (Unix タイムスタンプ) または 16 進数 (Unix タイムスタンプ) に設定します。この設定は、認証タイプがタイプ F に設定されている場合にのみ有効になります。
[URL エンコード]
URL エンコーディングスイッチはデフォルトで無効になっています。このスイッチを有効にすると、ユーザーリクエスト URL が URL エンコードされます。この機能は、認証タイプがタイプ F に設定されている場合にのみ有効になります。
[ルール条件]
ルール条件により、リクエストが特定の基準を満たす場合にのみルールを適用できます。
重要機能がルール条件を参照する場合、実行順序は機能設定の順序ではなく、関連するルール条件の優先順位に従います。
-
使用しない:条件付きルールを無効にします。
-
条件付きルールはルールエンジンで追加または編集できます。
OK をクリックします。
署名付き URL の検証
URL 署名を設定した後、CDN コンソールの署名付き URL ジェネレーターを使用して署名付き URL を生成し、実装を検証します。このプロセスにより、サーバーの署名ロジックが正しいかどうかを検証できます。
署名付き URL 生成ツール セクションで、元の URL (未エンコード) およびその他の署名情報を指定します。
パラメーター
説明
[元の URL (未エンコード)]
完全な元の URL を入力します (例:
https://www.aliyun.com)。このツールは、署名付き URL を生成する際に、元の URL を自動的にエンコードします。[署名タイプ]
「URL 署名の設定と有効化」セクションで設定した内容に基づいて、URL 署名タイプを選択します。
[暗号化キー]
「URL 署名の設定と有効化」セクションで設定した[マスターキー]または[バックアップキー]を入力します。
[TTL]
「URL 署名の設定と有効化」セクションで設定した内容に基づいて、URL 署名の TTL を秒単位で入力します。
作成中 をクリックして、認証 URL と Timestamp を取得します。
URL 署名の無効化
CDN または コンソールで URL 署名を無効にしても、クライアントリクエストに署名パラメーターが含まれている場合、CDN または はリクエスト URL を元の形式に復元できません。これによりキャッシュミスが発生し、そのようなリクエストはすべてオリジンにリダイレクトされます。その結果、オリジントラフィックとコストが大幅に増加します。したがって、URL 署名を完全に無効にするには、アプリケーションサーバーと CDN または コンソールの両方から設定を削除する必要があります。
CDN コンソール の URL 認証 セクションで 変更 をクリックし、URL 署名スイッチをオフにします。
アプリケーションサーバーで、リクエスト URL に署名パラメーターを追加するロジックを削除します。