Tous les produits
Search
Centre de documentation

Object Storage Service:Prevent file overwrites

Dernière mise à jour :Sep 08, 2026

Pour protéger les fichiers d'un compartiment OSS contre des modifications accidentelles ou malveillantes, configurez une règle d'interdiction d'écrasement. Cette fonctionnalité vous permet de contrôler précisément quels fichiers ne peuvent pas être écrasés en fonction de leur chemin, de leur type ou de l'identité de l'utilisateur.

  • Écritures concurrentes et règles d'interdiction d'écrasement : Dans les scénarios à forte concurrence, par exemple lorsque plusieurs clients écrivent dans un chemin inexistant ou qu'une écriture survient pendant une suppression, le système peut ne pas trouver de fichier existant à écraser. Dans ces cas, l'opération d'écriture est autorisée. Toutefois, une fois le fichier créé avec succès, la règle bloque toute tentative ultérieure d'écrasement.

  • Limitations liées à la transition de classe de stockage : Lorsque la fonctionnalité d'interdiction d'écrasement de fichiers est activée, vous ne pouvez pas utiliser des méthodes côté client telles que la console OSS, les SDK ou ossutil pour appeler l'opération CopyObject afin de modifier la classe de stockage d'un objet, par exemple de Standard vers Archive. Pour modifier la classe de stockage des objets protégés, utilisez des règles de cycle de vie pour les transitions automatiques.

  • Compatibilité des fonctionnalités : La fonctionnalité d'interdiction d'écrasement de fichiers bloque uniquement les opérations d'écrasement de fichiers côté client. Elle n'affecte pas les fonctions système en arrière-plan telles que la réplication inter-régions (CRR) ou les règles de cycle de vie.

  • Conflit avec le versioning : La fonctionnalité d'interdiction d'écrasement de fichiers est incompatible avec le versioning. Si le versioning est activé ou suspendu pour un compartiment, toutes les règles d'interdiction d'écrasement sont ignorées.

Fonctionnement

Lorsque OSS reçoit une demande d'écrasement de fichier, le système évalue la demande par rapport aux règles d'interdiction d'écrasement configurées, dans l'ordre de leur création :

  1. Correspondance des règles : Le système vérifie si le chemin du fichier correspond aux conditions de préfixe et de suffixe d'une règle et si l'identité de l'utilisateur correspond au paramètre Utilisateur autorisé.

  2. Décision : OSS bloque l'écrasement et renvoie une erreur FileAlreadyExists uniquement si toutes les conditions d'une règle (préfixe, suffixe et identité de l'utilisateur) sont remplies.

  3. Comportement par défaut : Si une demande ne correspond à aucune règle d'interdiction d'écrasement, l'écrasement est autorisé.

Protéger des types de fichiers spécifiques

Protégez les fichiers de configuration et les journaux de votre environnement de production contre un écrasement accidentel par des utilisateurs spécifiques.

  1. Sur la page Buckets, cliquez sur le nom du compartiment cible.

  2. Dans le volet de navigation de gauche, choisissez Data Management > File overwrite prohibited.

  3. Cliquez sur New rule added to prohibit overwrite writes et configurez les paramètres suivants :

    • Rule ID : Saisissez un ID personnalisé ou laissez le champ vide pour en générer un automatiquement.

    • File name prefix : Saisissez le chemin du répertoire à protéger, par exemple production/configs/.

    • File name extension : Saisissez l'extension de fichier à protéger, par exemple .json.

    • Authorized User : Spécifiez les utilisateurs RAM, les rôles RAM ou d'autres comptes à restreindre.

  4. Cliquez sur OK pour créer la règle.

  5. Vérifiez la règle :

    • À l'aide d'un compte restreint, essayez de télécharger un fichier portant le même nom vers production/configs/app.json.

    • Confirmez qu'une erreur FileAlreadyExists est renvoyée.

    • Confirmez que les autres utilisateurs peuvent télécharger des fichiers normalement et que les téléchargements vers des chemins ne correspondant pas aux conditions de préfixe et de suffixe aboutissent.

Définir une politique de protection globale

Établissez une protection complète pour les données métier critiques afin d'éviter les modifications accidentelles par n'importe quel utilisateur.

  1. Sur la page Buckets, cliquez sur le nom du compartiment cible.

  2. Dans le volet de navigation de gauche, choisissez Data Management > File overwrite prohibited.

  3. Cliquez sur New rule added to prohibit overwrite writes et configurez les paramètres suivants :

    • Rule ID : Saisissez un ID personnalisé ou laissez le champ vide pour en générer un automatiquement.

    • File name prefix : critical-data/

    • File name extension : Laissez ce champ vide pour protéger tous les fichiers du chemin spécifié.

    • Authorized User : * (tous les comptes)

  4. Cliquez sur OK pour créer la règle.

  5. Vérifiez la protection globale :

    • À l'aide de n'importe quel compte, essayez d'écraser critical-data/database.sql.

    • Confirmez qu'une erreur FileAlreadyExists est renvoyée, ce qui indique que la protection globale est active.

    • Confirmez que les fichiers situés dans d'autres chemins, tels que public-data/, peuvent toujours être écrasés.

Règles de correspondance

  • Nombre de règles : Un seul compartiment peut contenir un maximum de 100 règles.

  • Longueur des caractères : La longueur maximale d'un préfixe ou d'un suffixe est de 1 023 caractères.

  • Correspondance de préfixe et de suffixe : Seule la correspondance exacte de chaînes est prise en charge. Les expressions régulières et les caractères génériques ne sont pas pris en charge. OSS traite une entrée telle que logs/ comme des caractères littéraux.

  • Correspondance de préfixe : Un préfixe logs/ correspond à logs/app.log mais ne correspond pas à dev-logs/app.log.

  • Correspondance de suffixe : Un suffixe .txt correspond à readme.txt mais ne correspond pas à readme.TXT (sensible à la casse) ni à readme.txt.bak.

  • Correspondance d'utilisateur autorisé : Le caractère générique astérisque (*) est pris en charge. Pour plus de détails sur la configuration, consultez l'élément Principal dans Common examples of a bucket policy.

  • Logique des conditions : OSS bloque l'écrasement uniquement si toutes les conditions d'une règle (préfixe, suffixe et Utilisateur autorisé) sont remplies.

  • ID de règle : Ce paramètre est facultatif. Si vous laissez ce champ vide, OSS génère automatiquement un identifiant universel unique (UUID). Si vous fournissez un ID, il doit être unique au sein du compartiment.

Opérations d'écrasement de fichiers

Cette fonctionnalité bloque les opérations d'écrasement de fichiers côté client suivantes :

  • PutObject

  • PostObject

  • CopyObject

  • PutObjectSymlink

  • InitiateMultipartUpload

  • CompleteMultipartUpload

FAQ

Pourquoi le propriétaire du compartiment ne peut-il pas écraser les fichiers ?

Il s'agit du comportement attendu. Un champ Utilisateur autorisé vide applique la règle à tous les utilisateurs, y compris le propriétaire du compartiment et le compte racine. Pour restaurer les autorisations d'écrasement, vous pouvez :

  • Supprimer la règle dans la console.

  • Modifier le préfixe ou le suffixe de la règle pour réduire sa portée.

  • Définir l'Utilisateur autorisé sur des comptes spécifiques pour restreindre uniquement ces utilisateurs.

Pourquoi le préfixe logs/*.txt ne fonctionne-t-il pas ?

OSS ne prend pas en charge les caractères génériques pour la correspondance de préfixe et de suffixe. Le caractère * est traité comme un caractère littéral et le système effectue une correspondance exacte pour un fichier nommé logs/*.txt. La méthode correcte consiste à :

  • Définir le préfixe sur logs/

  • Définir le suffixe sur .txt

Cela correspond à tous les fichiers du répertoire logs/ se terminant par .txt.

Que se passe-t-il lorsque les champs de préfixe et de suffixe sont vides ?

Lorsque le préfixe et le suffixe sont laissés vides, la règle s'applique à l'ensemble du compartiment. Cela signifie que :

  • Si le champ Utilisateur autorisé est également vide, tous les utilisateurs sont empêchés d'écraser n'importe quel fichier du compartiment.

  • Si le champ Utilisateur autorisé spécifie certains comptes, seuls ces utilisateurs sont restreints dans l'écrasement des fichiers du compartiment.

Pourquoi certaines opérations d'écriture ne sont-elles pas bloquées ?

Une règle d'interdiction d'écrasement bloque uniquement les opérations d'écriture sur des fichiers déjà existants. Lors d'écritures concurrentes, par exemple lorsque plusieurs clients écrivent dans un chemin inexistant ou lorsqu'une écriture est initiée pendant une suppression, le système peut ne pas trouver de fichier existant à écraser. Dans de telles conditions de course, l'opération d'écriture se poursuit. Cela ne signifie pas que la règle a échoué. Une fois le fichier créé, la règle bloque toute tentative ultérieure d'écrasement. De plus, la règle ne peut pas bloquer une opération qui ne figure pas dans la liste des opérations d'écrasement de fichiers.