AdministrationPrise en charge des protocoles

WebDAV

Configurez la passerelle WebDAV de RustFS et accédez aux compartiments et aux objets avec des clients WebDAV.

RustFS inclut une passerelle Web Distributed Authoring and Versioning (WebDAV) qui expose les compartiments (buckets) et les objets aux clients WebDAV sur HTTP ou HTTPS. Vous pouvez parcourir les compartiments, créer des collections, puis charger, télécharger, renommer ou supprimer des objets, tandis que RustFS applique les autorisations de l’utilisateur authentifié de la gestion des identités et des accès (IAM).

La prise en charge de WebDAV est compilée dans le binaire RustFS standard, mais la passerelle est désactivée par défaut à l’exécution. Vous devez l’activer et la configurer avant de connecter un client.

Vue d’ensemble

La passerelle associe les chemins WebDAV aux ressources RustFS :

Chemin WebDAVRessource RustFS
/Tous les compartiments visibles par l’utilisateur authentifié
/my-bucket/Le compartiment my-bucket
/my-bucket/hello.txtL’objet hello.txt dans my-bucket
/my-bucket/docs/hello.txtL’objet docs/hello.txt dans my-bucket

RustFS prend en charge les opérations suivantes via la passerelle :

MéthodeOpération
PROPFINDRépertorier les compartiments ou les objets, et lire les métadonnées
MKCOLCréer un compartiment ou un préfixe de répertoire
PUTCharger un objet
GETTélécharger un objet
HEADLire les métadonnées d’un objet
MOVERenommer ou déplacer un objet ou un répertoire
DELETESupprimer un objet, un répertoire ou un compartiment

Utilisez PROPFIND, et non GET, pour répertorier une collection. La passerelle actuelle renvoie 405 Method Not Allowed pour les requêtes GET vers des répertoires.

WebDAV utilise l’authentification HTTP Basic. Saisissez une clé d’accès RustFS comme nom d’utilisateur et la clé secrète correspondante comme mot de passe. La passerelle authentifie les identifiants auprès de l’IAM RustFS et applique les politiques S3 de l’utilisateur à chaque opération.

Protégez les identifiants

L’authentification Basic ne chiffre pas les identifiants. Ne désactivez TLS que pour des tests locaux isolés. Utilisez HTTPS pour toute connexion distante ou de production.

Configuration

Configurez la passerelle avec des variables d’environnement avant de démarrer RustFS :

VariableDescriptionValeur par défaut
RUSTFS_WEBDAV_ENABLEActive la passerelle WebDAV.false
RUSTFS_WEBDAV_ADDRESSAdresse d’écoute des connexions WebDAV.0.0.0.0:8080
RUSTFS_WEBDAV_TLS_ENABLEDActive TLS pour l’écouteur WebDAV.true
RUSTFS_WEBDAV_CERTS_DIRRépertoire de certificats utilisé par le moteur TLS de RustFS. Obligatoire lorsque TLS est activé.Non définie
RUSTFS_WEBDAV_MAX_BODY_SIZETaille maximale du corps de requête, en octets. Doit être supérieure à zéro.5368709120 (5 GiB)

La compilation RustFS standard active la fonctionnalité de compilation WebDAV. Si vous compilez RustFS avec --no-default-features, incluez la fonctionnalité explicitement :

cargo build --release --features webdav

Tests locaux sans TLS

L’exemple suivant démarre RustFS avec un écouteur WebDAV en HTTP sur le port 8080 :

export RUSTFS_WEBDAV_ENABLE=true
export RUSTFS_WEBDAV_ADDRESS=127.0.0.1:8080
export RUSTFS_WEBDAV_TLS_ENABLED=false
export RUSTFS_ACCESS_KEY=<your-access-key>
export RUSTFS_SECRET_KEY=<your-secret-key>

rustfs /path/to/data

La liaison à 127.0.0.1 empêche les autres hôtes de se connecter au point de terminaison de test non chiffré.

HTTPS

Pour une connexion distante ou de production, activez TLS et indiquez un répertoire de certificats :

export RUSTFS_WEBDAV_ENABLE=true
export RUSTFS_WEBDAV_ADDRESS=0.0.0.0:8080
export RUSTFS_WEBDAV_TLS_ENABLED=true
export RUSTFS_WEBDAV_CERTS_DIR=/path/to/certs

rustfs /path/to/data

Si TLS est activé sans RUSTFS_WEBDAV_CERTS_DIR, ou si le répertoire n’existe pas, l’initialisation de WebDAV échoue. Consultez Configurer TLS pour préparer les certificats.

Autorisez le trafic TCP entrant vers le port WebDAV configuré. Cet écouteur est distinct de ceux de l’API S3 et de la Console.

Utilisation

Les commandes suivantes utilisent un point de terminaison HTTP pour les tests locaux. Remplacez le point de terminaison et les identifiants par votre point de terminaison WebDAV HTTPS et par un utilisateur IAM disposant des autorisations requises sur les compartiments et les objets.

Définissez des variables shell réutilisables sans placer le secret directement dans chaque commande :

export WEBDAV_URL=http://127.0.0.1:8080
export WEBDAV_USER=<your-access-key>
read -s WEBDAV_PASSWORD
export WEBDAV_PASSWORD

Répertorier les compartiments

Envoyez PROPFIND avec Depth: 1 pour répertorier les compartiments visibles par l’utilisateur :

curl --user "$WEBDAV_USER:$WEBDAV_PASSWORD" \
	--request PROPFIND \
	--header "Depth: 1" \
	"$WEBDAV_URL/"

Créer un compartiment

curl --user "$WEBDAV_USER:$WEBDAV_PASSWORD" \
	--request MKCOL \
	"$WEBDAV_URL/my-bucket/"

Les noms de compartiment doivent suivre les mêmes règles de nommage que les compartiments créés via l’API S3.

Charger et télécharger un objet

Chargez /path/to/hello.txt :

curl --user "$WEBDAV_USER:$WEBDAV_PASSWORD" \
	--upload-file /path/to/hello.txt \
	"$WEBDAV_URL/my-bucket/hello.txt"

Téléchargez l’objet :

curl --user "$WEBDAV_USER:$WEBDAV_PASSWORD" \
	--output hello.txt \
	"$WEBDAV_URL/my-bucket/hello.txt"

Créer et répertorier un répertoire

Les répertoires WebDAV situés sous un compartiment correspondent à des préfixes de clé d’objet :

curl --user "$WEBDAV_USER:$WEBDAV_PASSWORD" \
	--request MKCOL \
	"$WEBDAV_URL/my-bucket/docs/"

curl --user "$WEBDAV_USER:$WEBDAV_PASSWORD" \
	--request PROPFIND \
	--header "Depth: 1" \
	"$WEBDAV_URL/my-bucket/docs/"

Renommer un objet

Utilisez MOVE avec un chemin de destination sur le même point de terminaison WebDAV :

curl --user "$WEBDAV_USER:$WEBDAV_PASSWORD" \
	--request MOVE \
	--header "Destination: $WEBDAV_URL/my-bucket/greeting.txt" \
	"$WEBDAV_URL/my-bucket/hello.txt"

L’utilisateur IAM doit être autorisé à lire et à supprimer la source, ainsi qu’à écrire la destination. Si l’autorisation échoue, RustFS laisse la source inchangée.

Supprimer un objet ou un compartiment

Supprimez un objet :

curl --user "$WEBDAV_USER:$WEBDAV_PASSWORD" \
	--request DELETE \
	"$WEBDAV_URL/my-bucket/greeting.txt"

Supprimez le compartiment après en avoir retiré le contenu :

curl --user "$WEBDAV_USER:$WEBDAV_PASSWORD" \
	--request DELETE \
	"$WEBDAV_URL/my-bucket/"

Connecter un client de bureau

Utilisez le point de terminaison WebDAV dans un client qui prend en charge l’authentification Basic :

ClientAdresse de connexion
GNOME Filesdav://<host>:8080/ pour HTTP ou davs://<host>:8080/ pour HTTPS
macOS Finderhttp://<host>:8080/ ou https://<host>:8080/
Windows File Explorerhttps://<host>:8080/

Saisissez la clé d’accès et la clé secrète RustFS lorsque le client demande les identifiants. Le comportement du client et les méthodes WebDAV prises en charge varient ; utilisez curl pour isoler les erreurs côté serveur lors du dépannage.

Étapes suivantes

On this page