Par défaut, le contenu distribué par CDNDCDN est public et accessible à toute personne disposant de son URL. Pour protéger vos ressources d'origine contre les accès non autorisés et les téléchargements malveillants, utilisez la signature d'URL en complément d'autres méthodes de contrôle d'accès, telles que la protection contre le hotlinking par Referer et les listes d'autorisation/de blocage d'adresses IP. La signature d'URL sécurise votre contenu en validant la chaîne chiffrée et l'horodatage contenus dans une URL signée.
Fonctionnement
La signature d'URL empêche l'accès non autorisé à vos ressources d'origine en coordonnant les requêtes entre les nœuds de bord (POPs) Alibaba Cloud CDNDCDN et votre serveur d'origine. Le processus repose sur trois composants clés :
Serveur d'application d'origine : génère une URL signée selon une règle de signature définie (incluant l'algorithme et la clé), puis la renvoie au client.
Client : envoie l'URL signée à un POP CDNDCDN pour demander une ressource.
POP CDNDCDN : valide les informations contenues dans l'URL signée, telles que la chaîne de signature et l'horodatage.
-
Configurez les règles de génération des URL signées (y compris un algorithme de signature et une clé) sur le serveur d'application d'origine.
Par exemple, une URL signée peut suivre le format
http://DomainName/timestamp/md5hash/FileName. Lorsqu'un client accède à une page de votre application, le serveur d'application d'origine génère une URL signée selon les règles configurées et l'intègre à la page renvoyée au client.
Le client utilise l'URL signée pour demander la ressource auprès d'un POP CDNDCDN.
-
Le POP CDNDCDN valide les informations contenues dans l'URL signée, comme la chaîne de signature et l'horodatage, afin de déterminer si la requête est légitime.
Si l'authentification échoue, le POP rejette la requête.
-
Si l'authentification réussit, le POP sert le contenu.
RemarqueSi un nœud CDNDCDN ne dispose pas de la ressource en cache, il supprime les paramètres d'authentification de l'URL signée pour la restaurer sous sa forme d'origine (par exemple,
http://DomainName/FileName), puis utilise cette URL d'origine pour générer une clé de cache ou initier une requête de récupération depuis l'origine.Après avoir authentifié l'URL de la requête, CDNDCDN encode tous les caractères spéciaux présents dans l'URL, tels que les caractères chinois ou autres caractères non ASCII.
Remarques d'utilisation
Une fois la signature d'URL configurée, les requêtes dont l'authentification échoue peuvent toujours atteindre les nœuds CDNDCDN, mais elles sont rejetées par ces nœuds et un code d'état 403 est renvoyé. Les journaux CDNDCDN enregistrent néanmoins ces échecs d'authentification.
La validation des requêtes s'effectue au niveau des POPs CDNDCDN. Par conséquent, l'interception des requêtes malveillantes consomme une petite quantité de trafic facturable. Pour les requêtes HTTPS, des frais supplémentaires s'appliquent car les POPs CDNDCDN mobilisent des ressources de traitement pour effectuer cette interception.
Configurer et activer la signature d'URL
Assurez-vous d'avoir configuré les règles de génération des URL signées, y compris l'algorithme de signature et la clé, sur votre serveur d'application d'origine.
La logique de signature d'URL configurée dans la console CDNDCDN doit correspondre exactement à celle implémentée sur votre serveur d'application d'origine.
Connectez-vous à la console CDN.
Dans le volet de navigation de gauche, cliquez sur Domain Names.
Sur la page Domain Names, localisez le nom de domaine cible et cliquez sur Manage dans la colonne Actions.
Dans le volet de navigation du domaine, cliquez sur Access Control.
Cliquez sur l'onglet URL Signing.
Dans la section URL Signing, cliquez sur Modify.
-
Activez le commutateur URL Signing et configurez les paramètres.
Paramètre
Description
Type
Alibaba Cloud CDN propose quatre méthodes de signature. Sélectionnez un type de signature en fonction du format de vos URL signées afin de protéger efficacement vos ressources d'origine. Les types de signature d'URL suivants sont disponibles :
RemarqueEn cas d'échec de la signature d'URL, une erreur 403 est renvoyée :
Erreur de calcul MD5
Exemple :
X-Tengine-Error:denied by req auth: invalid md5hash=de7bfdc915ced05e17380a149bd760beErreur liée au temps
Exemple :
X-Tengine-Error:denied by req auth: expired timestamp=1439469547
Primary Key
Saisissez la clé primaire pour la méthode de signature. La clé doit comporter entre 6 et 128 caractères et peut contenir des lettres majuscules, des lettres minuscules et des chiffres.
Secondary Key
Saisissez la clé secondaire pour la méthode de signature. La clé doit comporter entre 6 et 128 caractères et peut contenir des lettres majuscules, des lettres minuscules et des chiffres. Vous devez spécifier au moins une clé primaire ou secondaire.
TTL
Spécifie la durée de validité de l'URL signée. Un client doit accéder à la ressource dans le délai défini par l'horodatage + TTL. Les requêtes envoyées après cette période échouent à l'authentification.
Unité : secondes
Valeurs valides : 1 à 31536000
Valeur par défaut : 1800 (30 minutes)
Exemple : Si votre serveur de signature génère une URL signée à 15:00:00 (UTC+8) le 15 août 2020 et que le TTL est de 1 800 secondes, l'URL signée expire à 15:30:00 (UTC+8) le 15 août 2020.
Signature Parameter
Vous pouvez personnaliser les noms des paramètres de signature. Cette option n'est valable que lorsque le type d'authentification est défini sur Méthode F.
Timestamp Parameter
Vous pouvez personnaliser le nom du paramètre d'horodatage. Cette option n'est effective que lorsque le type d'authentification est défini sur Type F.
Timestamp Format
Définit le format de l'horodatage, qui peut être décimal (horodatage Unix) ou hexadécimal (horodatage Unix). Ce paramètre prend effet uniquement lorsque le type d'authentification est défini sur Type F.
URL Encoding
Le commutateur d'encodage d'URL est désactivé par défaut. Si vous activez ce commutateur, les URL des requêtes utilisateur sont encodées au format URL. Cette fonctionnalité n'est effective que lorsque le type d'authentification est défini sur Méthode F.
Rule Condition
Une condition de règle identifie diverses informations de paramètre dans une requête utilisateur. Cela détermine si une configuration s'applique à cette requête.
ImportantLorsque vous référencez des conditions de règle, elles sont mises en correspondance en fonction de la priorité des conditions de règle associées, et non de l'ordre de configuration de la fonctionnalité elle-même.
Ne pas utiliser : n'utilise pas de condition de règle.
Pour ajouter ou modifier des conditions de règle, gérez-les dans le Rules Engine.
Cliquez sur OK.
Vérifier l'URL signée
Après avoir configuré la signature d'URL, utilisez le générateur d'URL signées disponible dans la console CDN pour créer une URL signée et vérifier l'implémentation. Cette procédure confirme que la logique de signature de votre serveur est correcte.
-
Dans la section Signed URL Generator, spécifiez l'Original URL (Unencoded) ainsi que les autres informations de signature.
Paramètre
Description
Original URL (Unencoded)
Saisissez l'URL d'origine complète, par exemple
https://www.aliyun.com. L'outil encode automatiquement l'URL d'origine lors de la génération de l'URL signée.Type
Sélectionnez le type de signature d'URL en fonction des paramètres que vous avez configurés dans la section Configurer et activer la signature d'URLConfigurer et activer la signature d'URL.
Cryptographic Key
Saisissez la Primary Key ou la Secondary Key que vous avez configurée dans la section Configurer et activer la signature d'URLConfigurer et activer la signature d'URL.
TTL
Saisissez le TTL pour la signature d'URL en secondes, en fonction des paramètres que vous avez configurés dans la section Configurer et activer la signature d'URLConfigurer et activer la signature d'URL.
Cliquez sur Generate pour obtenir l'Signed URL et l'Timestamp.
Désactiver la signature d'URL
Si vous désactivez la signature d'URL dans la console CDNDCDN alors que les requêtes clientes contiennent encore des paramètres de signature, CDNDCDN ne pourra pas restaurer les URL de requête à leur format d'origine. Cela entraînera des échecs de cache (cache miss), redirigeant toutes ces requêtes vers votre serveur d'origine. Par conséquent, le trafic et les coûts au niveau de l'origine augmenteront considérablement. Pour désactiver complètement la signature d'URL, vous devez supprimer la configuration à la fois de votre serveur d'application et de la console CDNDCDN.
Dans la section URL Signing de la console CDN, cliquez sur Modify et désactivez le commutateur de signature d'URL.
Sur votre serveur d'application, supprimez la logique qui ajoute les paramètres de signature aux URL de requête.