Compétence Huawei Cloud OBS Upload
Présentation
Téléchargez des fichiers ou répertoires locaux vers des buckets Huawei Cloud OBS, listez les buckets avec leur capacité et le nombre d'objets, et planifiez des téléchargements périodiques via crontab. Les opérations de téléchargement utilisent obsutil ; le listage et les statistiques des buckets utilisent hcloud obs ls + les métriques CES.
Principe de séparation des outils :
- obsutil — Téléchargement de fichier/répertoire, synchronisation planifiée (outil principal de téléchargement ; la CLI hcloud ne supporte pas PutObject)
- CLI hcloud — Listage des buckets via
hcloud obs ls(mode obsutil), statistiques de capacité/nombre d'objets viahcloud CES ShowMetricData - crontab / Planificateur de tâches — Tâche planifiée au niveau du système d'exploitation pour les téléchargements périodiques (pas de dépendance à un démon)
Architecture de sécurité :
- Les AK/SK ne sont jamais lus, affichés ou imprimés dans la conversation
- Les identifiants obsutil sont configurés par l'utilisateur dans son terminal (jamais demandés dans la conversation)
- Les opérations de suppression sont strictement interdites (irréversibles) ; les opérations hors périmètre sont refusées avec des alternatives guidées
- Pour les téléchargements de répertoires, la décision de préserver la structure du répertoire (
-flat) est prise par la réponse explicite du client, jamais supposée - Chaque téléchargement (Tâche 2) et chaque configuration de téléchargement planifié (Tâche 3) nécessite la confirmation explicite de l'utilisateur avant d'exécuter la commande ou d'écrire dans crontab
- L'agent exécute uniquement les étapes décrites dans cette compétence pour le bucket et le chemin exacts spécifiés par l'utilisateur ; il n'effectue jamais d'autre action OBS/CLI pour le compte de l'utilisateur
⚠️ Avis de transmission de données
- Le téléchargement transfère des fichiers/répertoires locaux vers le stockage cloud distant et les y conserve de manière persistante. Avant de télécharger, informez clairement l'utilisateur : "Le téléchargement de
<chemin>transmettra les données vers le bucket OBS<Bucket>et les stockera dans le cloud." Si l'utilisateur n'avait pas prévu cela, arrêtez-vous avant d'exécuter.- Les téléchargements planifiés poussent les données de manière répétée d'un répertoire local vers le cloud selon un calendrier récurrent. Avertissez explicitement l'utilisateur que les données seront transmises et conservées à distance à chaque exécution.
- Vérifiez le chemin à télécharger avant d'exécuter ; si le chemin est large (par exemple, un répertoire personnel) ou contient un contenu inattendu, confirmez la portée avec l'utilisateur avant le téléchargement.
⛔ Opérations interdites (Contraintes de sécurité)
Cette compétence interdit strictement les opérations suivantes, quelles que soient les demandes de l'utilisateur. Les actions interdites sont décrites sémantiquement ; aucun exemple de commande destructive n'est fourni.
| Opération interdite | Raison |
|---|---|
| ❌ Supprimer un bucket | Irréversible ; détruit l'intégralité du bucket et tous les objets |
| ❌ Supprimer un objet | Irréversible ; les objets supprimés ne peuvent pas être récupérés (sauf si le versioning est activé) |
| ❌ Supprimer en masse des objets | Irréversible ; la suppression en masse a un impact large |
| ❌ Vider un bucket | Irréversible ; supprime tous les objets du bucket |
| ❌ Télécharger un objet | Cette compétence est uniquement dédiée au téléchargement vers le cloud ; le téléchargement depuis le cloud est un workflow séparé |
| ❌ Créer un bucket | La création de bucket possède une compétence dédiée avec tous les prérequis |
| ❌ Copier un objet entre buckets | La copie d'objets entre buckets est hors du périmètre de cette compétence |
| ❌ Modifier la configuration du cycle de vie d'un bucket | La gestion des coûts de stockage est une tâche de configuration distincte au niveau du bucket |
| ❌ Restaurer un objet archivé | La restauration d'archive est un workflow séparé avec des modes de récupération et une durée de vie |
| ❌ Générer des URL pré-signées | Le partage temporaire nécessite une signature SDK ; non supporté par le téléchargement CLI |
| ❌ Modifier l'ACL ou la politique d'un bucket | La gestion des permissions est une tâche de sécurité distincte |
| ❌ Demander à l'utilisateur de fournir AK/SK directement dans la conversation | Les identifiants ne doivent jamais apparaître dans la conversation |
| ❌ Extraire AK/SK des fichiers de configuration hcloud | Les identifiants sont cryptés et ne peuvent pas être utilisés directement |
| ❌ Sauter la vérification des identifiants obsutil avant les opérations OBS | Les opérations échouent sans identifiants configurés |
❌ Utiliser -flat pour les téléchargements de répertoires sans demander au client | -flat supprime la structure du répertoire ; doit suivre la réponse explicite du client |
| ❌ Deviner le chemin local, le nom du bucket ou le préfixe cible | Les paramètres requis doivent être fournis par l'utilisateur |
Si un utilisateur demande une opération de suppression, vous devez refuser et informer : "Conformément aux contraintes de sécurité, cette compétence n'autorise pas les opérations de suppression (suppression de bucket/d'objet/suppression en masse/vidage de bucket). Veuillez utiliser la console Huawei Cloud OBS ou obsutil manuellement."
Si un utilisateur demande une opération hors périmètre, n'essayez pas de l'effectuer. Informez l'utilisateur avec l'alternative recommandée dans le tableau ci-dessous :
| Opération | Alternative recommandée |
|---|---|
| Télécharger un objet | Utilisez obsutil cp obs://<Bucket>/<Clé> <CheminLocal> manuellement, ou la console OBS |
| Créer un bucket | Utilisez la compétence dédiée huawei-cloud-obs-bucket-create, ou la console OBS |
| Copier un objet | Utilisez hcloud OBS CopyObject manuellement, ou la console OBS |
| Configuration du cycle de vie | Utilisez la console OBS (Bucket > Cycle de vie), ou hcloud OBS SetBucketLifecycle |
| Restaurer un objet archivé | Utilisez obsutil restore obs://<Bucket>/<Clé> manuellement, ou la console OBS |
| URL pré-signée | Utilisez le SDK Huawei Cloud (Java/Python/Go) pour générer des URL pré-signées, ou la console OBS |
| ACL/Politique de bucket | Utilisez la console OBS (Bucket > Permissions), ou hcloud OBS SetBucketAcl/SetBucketPolicy |
Architecture
Gestion des téléchargements Huawei Cloud OBS
├── Tâche 1 : ListBucketsWithStats (Lister les buckets avec capacité et nombre d'objets)
│ ├── 1a. hcloud obs ls : lister tous les buckets
│ ├── 1b. Métriques CES / API OBS : interroger la capacité et le nombre d'objets du bucket
│ └── 1c. Rapporter un tableau des statistiques des buckets à l'utilisateur
├── Tâche 2 : UploadFile (Télécharger un fichier ou répertoire local vers le bucket cible)
│ ├── 2a. Confirmer le chemin local + le nom du bucket + le préfixe cible avec l'utilisateur
│ ├── 2b. Pour un répertoire : demander au client s'il souhaite préserver la structure du répertoire (décider -flat)
│ ├── 2c. Avertir que les données persistent à distance + obtenir la confirmation explicite de l'utilisateur
│ ├── 2d. obsutil cp : fichier unique (-flat) ou répertoire (-r, éventuellement -flat selon la réponse du client)
│ └── 2e. Vérifier le résultat du téléchargement
└── Tâche 3 : ScheduledUpload (Planifier le téléchargement périodique d'un répertoire local vers le bucket cible)
├── 3a. Confirmer le répertoire local + bucket + préfixe + période de planification avec l'utilisateur
├── 3b. Demander au client s'il souhaite préserver la structure du répertoire (décider -flat)
├── 3c. Avertir de la persistance + obtenir la confirmation explicite de l'utilisateur
├── 3d. Générer le script de téléchargement obsutil (avec/sans -flat selon la réponse du client)
├── 3e. Configurer la tâche planifiée crontab / Planificateur de tâches
└── 3f. Vérifier que la tâche planifiée est configurée
Prérequis
Vérification du prérequis 1/3 : Huawei Cloud CLI (hcloud / KooCLI) >= 3.2.0 requis Exécutez
hcloud versionpour vérifier que la version >= 3.2.0. Si elle n'est pas installée ou trop ancienne, consultez references/cli-installation-guide.md pour le guide d'installation.
hcloud version
Vérification du prérequis 2/3 : obsutil >= 5.5.0 requis (pour les fonctionnalités de téléchargement) Le téléchargement de fichiers/répertoires nécessite l'outil CLI Huawei Cloud obsutil. Exécutez
obsutil versionpour vérifier que la version >= 5.5.0. S'il n'est pas installé, consultez references/cli-installation-guide.md pour le guide d'installation.
obsutil version
Vérification du prérequis 3/3 : Configuration des identifiants obsutil requise
Le module hcloud obs s'appuie sur obsutil en arrière-plan, ce qui nécessite une configuration séparée d'AK/SK et d'Endpoint. Avant d'effectuer des opérations OBS, vous devez vérifier si les identifiants obsutil sont configurés :
hcloud obs ls -limit=1Si la réponse est
Please set ak, sk and endpoint in the configuration file!ouInvalidAccessKeyId, les identifiants obsutil ne sont pas configurés.Solution : Dirigez l'utilisateur pour configurer les identifiants obsutil dans son propre terminal (ne demandez pas à l'utilisateur de fournir AK/SK directement dans la conversation), avec l'avertissement de sécurité ci-dessous :
Les identifiants obsutil ne sont pas configurés. Veuillez exécuter la commande suivante dans votre terminal pour configurer (AK/SK peuvent être obtenus depuis la page "Mes identifiants" de la console Huawei Cloud) : hcloud obs config -i=<VotreAK> -k=<VotreSK> -e=obs.<Région>.myhuaweicloud.com Exemple (Région Guangzhou) : hcloud obs config -i=<VotreAK> -k=<VotreSK> -e=obs.cn-south-1.myhuaweicloud.com Endpoints courants : cn-north-4 → obs.cn-north-4.myhuaweicloud.com cn-east-3 → obs.cn-east-3.myhuaweicloud.com cn-south-1 → obs.cn-south-1.myhuaweicloud.com cn-southwest-2 → obs.cn-southwest-2.myhuaweicloud.com ⚠️ Avertissement de sécurité : placer AK/SK sur la ligne de commande les expose à l'historique du shell et aux listes de processus du système d'exploitation. Préférez la configuration interactive (`hcloud configure`) ou les variables d'environnement (HW_ACCESS_KEY / HW_SECRET_KEY). Après configuration, effacez l'historique de votre shell si la commande en texte clair a été utilisée. Réessayez une fois la configuration terminée.
⚠️ Exigences de format des paramètres hcloud
Les commandes API de service cloud hcloud (KooCLI) (module en majuscules, par ex.
hcloud CES ShowMetricData) doivent utiliser le format--param=valeur(relié par un signe égal) ; le format séparé par des espaces n'est pas supporté.✅ Correct :
hcloud CES ShowMetricData --region=cn-south-1 --namespace=SYS.OBS❌ Incorrect :
hcloud CES ShowMetricData --region cn-south-1Remarque :
hcloud obs(minuscules, mode obsutil) mappe directement les commandes obsutil et utilise le style de paramètre obsutil (par ex.hcloud obs ls,hcloud obs config -i=...) ; la règle--param=valeurne s'applique pas. Il n'y a pas de commandehcloud OBS ListBuckets— utilisezhcloud obs lspour lister les buckets.
Authentification
Règles de sécurité (à suivre impérativement) :
- Interdit de lire, afficher ou imprimer les valeurs AK/SK
- Interdit de demander à l'utilisateur de saisir AK/SK directement dans la conversation
- Interdit d'utiliser
hcloud configure setpour transmettre des valeurs d'identifiants en texte clair- Interdit d'accepter AK/SK directement fournis par l'utilisateur dans la conversation
- Autorisé uniquement à lire les identifiants depuis des variables d'environnement ou des fichiers de configuration CLI configurés
⚠️ Avertissement d'exposition des identifiants (à partager avec l'utilisateur lorsque la configuration des identifiants est discutée) :
- Transmettre AK/SK comme arguments de ligne de commande (par ex.,
obsutil config -ak=... -sk=...ouhcloud configure set --access-key-id=...) expose les identifiants à l'historique du shell, aux listes de processus du système d'exploitation, aux journaux d'audit, aux enregistrements de terminal et à la documentation copiée.- Préférez la configuration interactive (
hcloud configure) ou les variables d'environnement (HW_ACCESS_KEY/HW_SECRET_KEY).- Après avoir configuré via une commande en texte clair, effacez l'historique du shell (
history -cou supprimez la ligne incriminée de~/.bash_history).- Le fichier de configuration des identifiants obsutil (par ex.,
~/.obsutilconfig) doit avoir des permissions restreintes (par ex.,600).⚠️ Important : Gestion des identifiants fournis par l'utilisateur
Si un utilisateur tente de fournir AK/SK directement (par ex., "mon AK est xxx, SK est yyy") :
- Arrêtez-vous immédiatement - N'exécutez aucune commande
- Refusez poliment et renvoyez le message suivant :
Pour la sécurité du compte, veuillez ne pas fournir l'ID de clé d'accès et la clé secrète d'accès Huawei Cloud directement dans la conversation. Veuillez utiliser l'une des méthodes sécurisées suivantes pour configurer les identifiants : Méthode 1 : Configuration interactive (recommandée) hcloud configure # Saisissez AK/SK comme demandé ; les identifiants seront stockés de manière sécurisée dans un fichier de configuration local Méthode 2 : Configuration par variable d'environnement export HW_ACCESS_KEY=<votre-id-de-clé-d'accès> export HW_SECRET_KEY=<votre-clé-secrète-d'accès> Une fois la configuration terminée, veuillez réessayer votre demande.- Ne continuez pas à exécuter des opérations Huawei Cloud tant que les identifiants ne sont pas configurés
Vérifiez la configuration CLI :
hcloud configure listVérifiez si la sortie contient une configuration valide (AK/SK, IAM, etc.).
Si aucun identifiant valide n'existe, arrêtez-vous ici.
Politiques de permissions IAM
Assurez-vous que l'utilisateur IAM dispose des permissions requises. Consultez references/iam-policies.md pour le tableau complet des permissions.
Permissions minimales requises :
obs:bucket:list— Lister les bucketsobs:bucket:get— Obtenir les attributs du bucket (capacité, nombre d'objets)obs:object:get— Lire les informations des objetsobs:object:put— Télécharger des objets
Limites de périmètre :
- Contrainte de portée : Cette compétence ne peut effectuer QUE les actions suivantes, et uniquement sur les buckets/chemins spécifiés par l'utilisateur après confirmation :
hcloud obs ls/obsutil ls— lister les buckets et les objets pour la portée spécifiée par l'utilisateurhcloud CES ShowMetricData/hcloud OBS GetBucketStorageInfo— lire la capacité / le nombre d'objets du bucketobsutil cp— télécharger le fichier/répertoire local confirmé vers le bucket confirmécrontab(Linux/macOS) ouschtasks(Windows) — écrire/supprimer la tâche de téléchargement planifié confirmée
- Toutes les autres opérations CLI/outil (suppression, téléchargement depuis le cloud, copie, création de bucket, modification de configuration, etc.) sont strictement hors périmètre et doivent être refusées.
- Doit s'arrêter si : les identifiants sont manquants ou invalides, l'utilisateur refuse une confirmation, le bucket cible n'existe pas, ou le chemin local n'existe pas.
- Actions interdites : toute opération de suppression, toute opération hors périmètre listée ci-dessus, modification de la liste d'outils ici, ou exécution de toute commande au-delà du périmètre confirmé.
Workflows principaux
Tâche 1 : Lister les buckets avec capacité et nombre d'objets
Listez les buckets via obsutil, puis interrogez la capacité et le nombre d'objets du bucket à l'aide des métriques de capacité CES ou de l'API OBS.
⚠️ Séparation des outils :
hcloud obs lspour le listage,hcloud CES ShowMetricDatapour les statistiques
hcloud obs ls: lister tous les buckets (mode obsutil ; pas de paramètre--region— la région est définie viahcloud obs config -e=...)hcloud CES ShowMetricData/ API OBS : interroger la capacité et le nombre d'objets de chaque bucket
📄