Préambule

OpenStack Swift permet de stocker un grand nombre de fichiers.
Afin de gérer vos fichiers, vous devez être authentifié à l'aide d'un token, pour chacune de vos requêtes vers l'API. Cela permet de confirmer vos autorisations (lecture, écriture,...) sur Swift.
Ce jeton provient de du système d'authentification, à l'aide de votre identifiant et mot de passe.

Partons donc du principe que vous souhaitez partager un fichier avec un ami ou un collègue, mais que vous ne souhaitez évidemment pas donner vos informations personnelles pour l'authentification. Dans ce cas, les URL temporaires (tempurl) pourront répondre à votre besoin.

Les Temp url est une fonctionnalité qui vous permet de contrôler les fichiers que vous souhaitez partagé, mais aussi combien de temps vous souhaitez que le lien soit disponible.
.

Comment cela fonctionne ?

La fonction Temp url générera une adresse temporaire en utilisant les éléments suivants :

  • L'adresse du point d'accès, comme par exemple : "https://storage.sbg1.cloud.ovh.net/"
  • Le chemin vers votre objet contenant votre projet, le conteneur, et le nom de l'object : "v1/AUTH_tenant/default/file"
  • Un premier paramètre supplémentaire tempurlsign, qui correspondant à une signature qui a été généré selon votre clé secrète, la methode HTTP, le chemin du fichier et la date d'expiration.
  • Un second paramètre url_expires qui correspond à la date d'expiration de votre lien.

Générer la Temp URL

.

Génération de la clé

Dans un premier temps, il faudra générer une clé. Celle ci sera utilisable pour tout les fichiers de votre projet, une seule génération de clé suffit pour toutes futures TempURL. Il est donc conseillé de choisir une longue clé sécurisée. Sachez cependant qu'il est possible de régénérer une nouvelle clé à tout moment.

Pour générer votre clé, il est conseillé d'utiliser 20 caractères au moins.
Vous pouvez utiliser des outils comme :
Une fois en possession de votre clé, nous pouvons désormais configurer celle ci sur votre projet à l'aide du client swift (remplacer la chaine "12345" par votre clé) :

swift post -m "Temp-URL-Key: 12345"

Ou en utilisant curl :

curl -i -X POST \ -H "X-Account-Meta-Temp-URL-Key: 12345" \ -H "X-Auth-Token: abcdef12345" \ https://storage.sbg1.cloud.ovh.net/v1/AUTH_ProjectID
Informations
Le nom du header au complet est X-Account-Meta-Temp-Url-Key mais le client Swift utilise Temp-Url-Key car il ajoute X-Account-Meta automatiquement.
Maintenant que la clé est configuré sur le compte, on peut vérifier que le header a correctement été appliqué grâce à la commande suivante en utilisant le client Swift :

swift stat

Ou avec curl :

curl -i -X HEAD \ -H "X-Auth-Token: abcdef12345" \ ttps://storage.sbg1.cloud.ovh.net/v1/AUTH_ProjectID
.

Génération de l'URL

Les tâches suivantes peuvent être effectuées hors ligne.

Nous allons générer l'adresse URL temporaire à l'aide du script swift-temp-url :

python swift-temp-url GET 60 /v1/AUTH_tenant/default/file 12345

  • GET : Methode HTTP
  • 60 : Lien disponible pendant 60 secondes. Vous pouvez personnaliser cette valeur.
  • 12345 : A remplacer par votre clé
  • /v1/AUTH_tenant/default/file : Le chemin vers votre fichier. Il n'est pas nécessaire d'ajouter le point d'accès à ce stage de la procédure.

Cela vous fournira donc une tempURL telle que :

v1/AUTH_tenant/default/file?temp_url_sig=8016dsdf3122d526afds60911cde59fds3&temp_url_expires=1401548543

Vous pouvez donc voir le chemin vers le fichier, la signature, et la date d'expiration comme expliqué précédemment.

Pour que votre URL fonctionne correctement, il faudra simplement ajouter l'adresse du point d'accès devant votre tempURL :

https://storage.sbg1.cloud.ovh.net/v1/AUTH_tenant/default/file?temp_url_sig=8016dsdf3122d526afds60911cde59fds3&temp_url_expires=1401548543

Dans notre exemple, cette URL permet de à tout le monde de télécharger le fichier "file" dans le conteneur "default", pendant 60 secondes, et cela sans authentification.
Au delà des 60 secondes, l'URL ne fonctionnera plus.
Pour les utilisateurs les plus avancées qui veulent générer des tempURL sans le script swift-temp-url, il est possible d'avoir plus d'informations directement sur la documentation d'OpenStack.

Retour à l'index