Nouveauté RFW 7.4 : La gestion des secrets

Robot Framework 7.4 gère maintenant nativement les variables de type "secret"

Nouveauté RFW 7.4 : La gestion des secrets

La version 7.4 de Robot Framework, qui sort bientôt (fin 2025), apporte un nouvel élément de sécurité ⇒ la possibilité d’avoir des variables de type “secret”.

De quoi s’agit-il ?

Il s’agit de pouvoir « cacher », notamment dans le log d’exécution, certaines variables qui contiennent des secrets comme des mots de passe, des clés d’API, des jetons d’authentification ou des données personnelles. Une avancée majeure pour la sécurité et la conformité (RGPD, normes internes, etc.).

Comment ça marche ?

Avec cette nouvelle version, vous pouvez :
✅ Déclarer des variables secrètes : Leur valeur n’apparaît jamais dans les logs, même en mode trace.
✅ Les utiliser dans vos tests : Elles sont transmises aux bibliothèques sans exposition.
✅ Accéder à leur valeur uniquement via l’écriture étendue ${variable.value} (à réserver au débogage car dans ce cas la valeur apparaîtra dans le log).

Exemples dans le code Robot :

*** Settings ***
Library     OperatingSystem


*** Variables ***
# Variable secrète (ne sera pas affichée dans le log)
${API_KEY: Secret}      %{MY_API_KEY}    # Récupérée depuis une variable d'environnement

# Variable classique (sera affichée dans le log)
${USERNAME}             robot


*** Test Cases ***
Example Using Secret Variables
    [Documentation]    Montre comment utiliser une variable secrète vs une variable classique.

    # Utilisation d'une variable secrète (valeur masquée dans le log)
    Log    Connexion avec la clé API : ${API_KEY}    # La valeur de la variable secrète n'est pas affichée.
    Log    Valeur secrète (debug uniquement) : ${API_KEY.value}    # Affiche la valeur (à éviter en production !)

    # Utilisation d'une variable classique (valeur visible dans le log)
    Log    Utilisateur : ${USERNAME}

    # Exemple d'appel à une bibliothèque qui accepte des "Secret"
    Login To System    ${USERNAME}    ${API_KEY}


*** Keywords ***
Login To System
    [Arguments]    ${username}    ${secret_key: Secret}
    Log    Connexion de ${username} avec une clé secrète : ${secret_key}    # La valeur de ${secret_key} reste masquée.
    # ⚠️ Ici, la bibliothèque utiliserait ${secret_key.value} pour accéder à la valeur réelle.
    # ⚠️ Si ${secret_key} n'est pas de type Secret, alors Robot Framework produira une erreur.

Le résultat dans le log.html sera :

Pourquoi c’est important ?

Les logs peuvent être une source de fuite de données confidentielles ou personnelles. Dans certains environnements très contraints, ce n’est pas acceptable d’avoir ce genre de fuites de données dans les logs. Cette fonctionnalité native de gestion des “secrets” dans Robot Framework est donc une bonne évolution.

💡 Et vous, comment gérez-vous les secrets dans vos tests automatisés ?

(Perso j’utilise depuis longtemps CryptoLibrary qui permet aussi de cacher les valeurs dans les logs et en plus permet d’intégrer des credentials chiffrés dans les tests).

Plus d'info :

robotframework/doc/releasenotes/rf-7.4.rst at master · robotframework/robotframework
Generic automation framework for acceptance testing and RPA - robotframework/robotframework