デフォルトでは、Alibaba Cloud CDN によって配布されるコンテンツは公開されています。 ユーザーはURLを使用してコンテンツにアクセスできます。 リソースのホットリンクや不正アクセスを防止する場合は、リファラーホワイトリストとブラックリスト、IPアドレスホワイトリストとブラックリスト、およびURL署名を使用してアクセス制御を管理できます。 URL署名は、URLに署名文字列とタイムスタンプを追加して、アクセス制御を最適化します。
認証ロジック
ポイントオブプレゼンス (POP) は、オリジンサーバーと連携してURL署名を実装し、より安全で信頼性の高い方法でオリジンサーバー上のリソースを保護します。 URL署名には、次のオブジェクトが含まれます。
オリジンサーバー: オリジンサーバーは、署名アルゴリズムや暗号キーなどのURL署名ルールに基づいてURLに署名します。 次に、オリジンサーバーは署名されたURLをクライアントに返します。
クライアント: クライアントは要求を開始し、署名されたURLを認証のためにPOPに送信します。
POP: POPは、署名およびタイムスタンプを含む、要求によって搬送される署名情報を検証する。
オリジンサーバーで、署名アルゴリズムや暗号化キーなどのURL署名ルールを設定します。
たとえば、
http:// DomainName/timestamp/md5hash/FileName
は、オリジンサーバーによって署名されたURLです。クライアントがURLにアクセスしようとすると、前の図の手順2と手順3に示すように、オリジンサーバーはURL署名ルールに基づいてURLに署名し、署名されたURLをクライアントに返します。
前の図の手順4に示すように、クライアントは署名付きURLを使用してPOPからリソースを要求します。
POPは、署名されたURL内の署名およびタイムスタンプを含む署名情報を検証し、要求が有効かどうかを判定する。
リクエストが認証に失敗した場合、POPはリクエストを拒否します。
要求が認証に合格すると、POPは要求に応答する。
説明要求されたリソースがPOPにキャッシュされていない場合、POPはURLからURL署名パラメーターを削除し、リクエストがオリジンサーバーにリダイレクトされる前にURLを元のバージョンに復元します。 たとえば、URLは
http:// DomainName/FileName
に復元されます。 次に、元のURLを使用してキャッシュキーが生成されるか、リクエストがオリジンサーバーにリダイレクトされます。リクエストが認証を通過した後、URL内の等号 (=) やプラス記号 (+) などの特殊文字がエスケープされます。
使用上の注意
URL署名を設定した後も、認証に失敗したリクエストはPOPに到達する可能性があります。 ただし、POPはリクエストを拒否し、HTTP 403ステータスコードを返します。 リクエストはAlibaba Cloud CDN ログに記録されます。
URL署名では、システムは署名されたURLの暗号化された文字列とタイムスタンプを検証します。 POPが悪意のあるリクエストをブロックしたときに生成されるデータ転送に対して課金されます。 クライアントがHTTPS経由でリソースをリクエストした場合、HTTPSリクエストに対しても課金されます。
URL署名の設定と有効化
URL署名を有効にする前に、オリジンサーバーで、署名アルゴリズムや暗号化キーなどのURL署名ルールが設定されていることを確認してください。
POPの認証ロジックは、オリジンサーバーの認証ロジックと同じである必要があります。
Alibaba Cloud CDNコンソール
左側のナビゲーションウィンドウで、ドメイン名をクリックします。
[ドメイン名] ページで、管理するドメイン名を見つけて、アクション 列の 管理 をクリックします。
ドメイン名の左側のナビゲーションツリーで、リソースアクセス制御.
をクリックし、URL 認証タブをクリックします。
では、URL 認証セクション、変更をクリックします。
では、認証 URLダイアログボックスでURL署名をオンにし、次の表の説明に従ってパラメーターを設定します。
パラメーター
説明
認証タイプ
Alibaba Cloud CDNは、4つのURL署名タイプをサポートしています。 ビジネス要件に基づいて署名タイプを選択し、オリジンサーバーのリソースを保護できます。 サポートされる署名タイプは次のとおりです。
説明URL署名が失敗した場合、HTTP 403ステータスコードが返されます。 考えられる原因は次のとおりです。
無効なMD5値
例:
X-Tengine-Error: req authによって拒否されました: invalid md5hash=de7bfdc915ced05e17380a149bd760be
無効なタイムスタンプ
例:
X-Tengine-Error: req authによる拒否: expired timestamp=1439469547
マスターキー
選択した署名タイプの主キーを指定します。 キーの長さは6 ~ 128文字で、英数字を使用できます。
バックアップキー
選択した署名タイプのセカンダリキーを指定します。 キーの長さは6 ~ 128文字で、英数字を使用できます。 主キーまたは副キーを指定する必要があります。
TTL
署名付きURLのtime-to-live (TTL) 値を指定します。 ユーザーは、署名付きURLの有効期限が切れる前にCDN POPにアクセスできます。 署名付きURLの有効期限は、タイムスタンプ値とTTL値によって決まります。
単位は秒です。
有効な値: 1 ~ 31536000
デフォルト値: 1800 (30分) 。
たとえば、署名付きURLのタイムスタンプは2020-08-15 15:00:00 (UTC + 8) で、TTL値は1800です。 この場合、署名付きURLは2020年8月15日15:30:00 (UTC + 8) まで有効です。
署名パラメータ
カスタム署名パラメーターを指定します。 このパラメーターは、TypeパラメーターがType Fに設定されている場合にのみ有効です。
Timestampパラメーター
カスタムtimestampパラメーターを指定します。 このパラメーターは、TypeパラメーターがType Fに設定されている場合にのみ有効です。
Timestamp形式
timestamp形式を指定します。 有効な値: Decimal (Unix Timestamp) およびHexadecimal (Unix Timestamp) 。 このパラメーターは、TypeパラメーターがType Fに設定されている場合にのみ有効です。
URLエンコーディング
URLエンコードスイッチはデフォルトでオフになっています。 このスイッチをオンにすると、リクエストURLに対してURLエンコードが実行されます。 このパラメーターは、TypeパラメーターがType Fに設定されている場合にのみ有効です。
ルール条件
ルール条件は、構成が要求に適用されるかどうかを決定するために要求内のパラメータを識別できる。
条件を使用しない
ルールエンジンで設定されたルール条件を選択します。 詳細については、「ルールエンジン」をご参照ください。
OKをクリックします。
URL署名結果の確認
認証ロジックが正しく実装されていることを確認するには、Alibaba Cloud CDNコンソールでテストを実行し、URLに正しく署名できるかどうかを確認することを推奨します。
では、認証 URL の生成セクション、セット元の URLおよびその他のパラメータ。
パラメーター
説明
元の URL
https://www.aliyun.com
などの完全なURLを入力します。認証タイプ
[URL署名の設定と有効化] セクションで指定したURL署名タイプを選択します。
認証キー
[URL署名の設定と有効化] セクションで指定したマスターキーまたはバックアップキーを入力します。
TTL
[URL署名の設定と有効化] セクションで指定した署名URLの有効期間を入力します。 単位は秒です。
クリック作成中を取得します。認証 URLとTimestamp.
URL署名の無効化
POPでURL署名が無効になっていても、ユーザーリクエストにURL署名パラメーターが含まれている場合、POPはURL署名パラメーターを削除できません。 この場合、リクエストはPOPのキャッシュにヒットすることができず、オリジンサーバーにリダイレクトされます。 これにより、オリジンサーバーのネットワークトラフィックとデータ転送料金が増加します。 URL署名を無効にする場合は、オリジンサーバーとPOPでURL署名が無効になっていることを確認してください。
Alibaba Cloud CDNコンソールで、URL 認証 セクションに移動し、変更 をクリックして、URL署名をオフにします。
オリジンサーバーで、URL署名設定を削除します。