Aller au contenu principal

Profils de stockage

L'écran Profils de stockage permet de déclarer le stockage objet du client (S3, Azure Blob, GCS, IBM COS, SeaweedFS ou compatible S3), de vérifier ses capacités par de vrais appels, de lister et supprimer des objets, et d'émettre des URL présignées. Chemin du portail : /data/storage. Les administrateurs du tenant gèrent les profils du tenant, les administrateurs de la plateforme les profils de plateforme ; les responsables sécurité les vérifient ; les développeurs et les agents utilisent les URL présignées.

Ce que montre l'écran​

Un avertissement en haut rappelle qu'un profil ne contient jamais de secret : credential_ref pointe vers OpenBao ou une variable d'environnement, et le WORM exige le verrouillage d'objet et la rétention vérifiés. Trois onglets :

  • Profils : la table avec Nom, Portée, Fournisseur, Bucket, Usages, Statut, WORM, Capacités manquantes, Vérifié le. WORM est calculé par le portail : not_worm sans l'usage audit_worm, qualified quand object_lock et retention sont vérifiés, missing_capability sinon. Filtres : Portée (tenant, platform), Fournisseur et Finalité (audit_worm, evidence, documents, media, exports, backups, general). Un clic sur une ligne ouvre le profil.
  • Objets d'un profil : un champ Profil avec Appliquer, puis la table Objets avec Clé, Taille (octets), Type, Classe de stockage, Version de l'objet, ETag, Dernière modification, et un filtre Préfixe (exemple docs/).
  • URL présignée : un formulaire avec Profil (obligatoire), Portée (read ou write, obligatoire), Clé (obligatoire), Expiration (secondes) (900) et Type, et son panneau de résultat.

Le formulaire Nouveau profil contient Nom (obligatoire, minuscules, chiffres et -), Fournisseur (obligatoire), Bucket (obligatoire), Portée, Point d'accès, Région, Préfixe de clé, Authentification (JSON, par défaut {"method": "sigv4"}), Référence d'identifiant (exemple openbao://storage/s3), Usages et Description.

Actions​

Bouton ou actionCe qu'il faitAppel APIRôles
Icône d'actualisation, FiltrerRecharge les profilsGET /v1/storage/profilestenant_admin, security_officer, developer, auditor, platform_admin
Nouveau profil > CréerCrée le profil (aucun secret accepté)POST /v1/storage/profilestenant_admin ; platform_admin pour la portée platform
Clic sur une ligneOuvre le profilGET /v1/storage/profiles/{profile_id}comme la liste
Vérifier la signature (menu de ligne)Ouvre une boîte de dialogue avec Écriture de test (décochée), puis teste les capacités par de vrais appelsPOST /v1/storage/profiles/{profile_id}/verifytenant_admin, security_officer ; platform_admin pour la portée plateforme
Vérifications (menu de ligne)Affiche l'historique des contrôles de capacitésGET /v1/storage/profiles/{profile_id}/checkscomme la liste
Désactiver (menu de ligne, profil actif)Demande une confirmation, puis pose le statut disabledPATCH /v1/storage/profiles/{profile_id}tenant_admin ; platform_admin pour la portée plateforme
Activer (menu de ligne, profil désactivé)Pose le statut activePATCH /v1/storage/profiles/{profile_id}comme Désactiver
Supprimer (menu de ligne)Affiche la confirmation d'impact, puis supprime le profilDELETE /v1/storage/profiles/{profile_id}comme Désactiver
Appliquer (Objets)Liste les objets sous les préfixes présignésGET /v1/storage/profiles/{profile_id}/objectstenant_admin, developer, agent, auditor
Supprimer (menu d'un objet)Demande une confirmation, puis supprime l'objet (et sa version si elle est connue)POST /v1/storage/profiles/{profile_id}/objects/deleteserveur : tenant_admin, developer, agent ; affiché pour tenant_admin, platform_admin
Exécuter (URL présignée)Émet une URL de lecture (GET) ou d'écriture (PUT), affichée une seule foisPOST /v1/storage/profiles/{profile_id}/presigntenant_admin, developer, agent ; platform_admin pour la portée plateforme

Rôles​

Le portail masque les boutons avec les listes de portal/src/lib/kit.ts : ROLES.storageManagers (tenant_admin, platform_admin) pour Nouveau profil, Désactiver, Activer, Supprimer et la suppression d'objet, ROLES.storageVerifiers (tenant_admin, security_officer, platform_admin) pour Vérifier la signature, et ROLES.storagePresign (tenant_admin, developer, agent, platform_admin) pour le formulaire de présignature ; les autres utilisateurs voient « Nécessite l'un de ces rôles ». Le Control Plane décide dans services/control-plane/src/eai/domains/storage/routes.py ; chaque action passe aussi par la décision de politique et est auditée.

Tâches courantes​

Déclarer et vérifier un profil​

  1. Créer le profil. Le profil ne fait que nommer l'endroit où vit le secret. Cliquez sur Nouveau profil, remplissez Nom, Fournisseur, Bucket, Point d'accès si besoin et Référence d'identifiant, puis Créer.

    Résultat attendu : le message « Créé » et la ligne dans Profils.

    En cas d'échec : storage_secret_in_profile signifie qu'un secret a été saisi dans Authentification ; déplacez-le dans OpenBao.

  2. Le vérifier. Les capacités sont découvertes par de vrais appels, jamais déclarées. Ouvrez le menu de la ligne, choisissez Vérifier la signature, cochez Écriture de test pour tester aussi l'écriture, puis confirmez.

    Résultat attendu : un panneau latéral avec status, capabilities et missing_capabilities ; Vérifié le est rempli.

    En cas d'échec : le bloc error de la réponse donne l'erreur du fournisseur ; storage_credential_invalid désigne la référence d'identifiant.

Donner un lien de téléchargement à une application​

  1. Émettre l'URL. Une URL de lecture ne peut pas écrire et inversement. Ouvrez URL présignée, remplissez Profil, Portée read, Clé, puis Exécuter.

    Résultat attendu : la réponse contient url, method GET et expires_at. Copiez l'URL tout de suite : elle n'est affichée qu'une fois.

    En cas d'échec : storage_key_out_of_scope signifie que la clé est hors des préfixes présignés du profil.

Nettoyer un objet​

  1. Lister les objets. Ouvrez Objets d'un profil, collez l'identifiant du profil, puis Appliquer.

    Résultat attendu : la table Objets.

    En cas d'échec : storage_prefix_required signifie que le profil a plusieurs préfixes présignés ; remplissez Préfixe et cliquez sur Filtrer.

  2. Le supprimer. Ouvrez le menu de l'objet, choisissez Supprimer et confirmez.

    Résultat attendu : le message « Terminé ».

    En cas d'échec : storage_object_protected signifie que le profil contient des exports d'audit WORM ou des preuves ; la rétention s'applique.

Dépannage​

SymptômeCauseCorrection
forbidden (403) avec required_rolesVotre rôle n'est pas autorisé pour cette actionVoir la section Rôles
storage_scope_forbidden (403)Un profil de plateforme n'est géré que par platform_adminConnectez-vous en administrateur de la plateforme
storage_profile_exists (409)Le nom est déjà utiliséChoisissez un autre nom
storage_profile_disabled (409)Le profil est désactivéActiver le profil d'abord
storage_secret_in_profile (422)Un champ secret a été envoyé dans le profilRangez le secret dans OpenBao et utilisez Référence d'identifiant
storage_credential_ref_invalid (422)La référence n'est ni openbao:// ni env://Corrigez Référence d'identifiant
storage_endpoint_required (422)Le fournisseur exige un point d'accèsRemplissez Point d'accès
storage_presign_expiry_invalid (422)Expiration (secondes) dépasse le maximum autoriséRéduisez l'expiration
storage_key_out_of_scope (403)Clé hors des préfixes présignésUtilisez une clé sous un préfixe autorisé
storage_object_protected (409)Profil d'audit WORM ou de preuvesL'objet n'est jamais supprimé par l'API

Pages liées​