Stocker des secrets avec keystore

Tradefed inclut le concept de magasin de clés , où les secrets peuvent être stockés dans un service de magasin de clés et demandés au moment de l'exécution du test pour être utilisés pendant le test.

Utiliser un magasin de clés

Pour utiliser un magasin de clés, vous devez d'abord définir la source du magasin de clés dans votre configuration globale .

Une fois cela fait, vous pouvez ensuite utiliser les clés stockées via : USE_KEYSTORE@{key}

JSONFileKeyStore

L'exemple d'implémentation dans le noyau Tradefed utilise un magasin de clés JSON, JSONFileKeyStoreClient . Pour utiliser ce magasin de clés, vous devez définir un fichier de clé JSON doté de mappages clé-valeur.

Par exemple, vous pouvez définir un fichier /path/to/keystore.json comme

{
  "test_account": "foo@gmail.com",
  "test_account_pwd": "helloworld",
  "wifi_lab_ssid": "Google_private_AP",
  "wifi_lab_pwd": "secret123",
}

Ensuite, vous ajouterez les lignes suivantes dans votre fichier de configuration globale TF :

<key_store class="com.android.tradefed.util.keystore.JSONFileKeyStoreFactory">
<option name="json-key-store-file" value="/path/to/keystore.json" />
</key_store>

Lors de l'exécution de tests associés, vous pouvez désormais transmettre des valeurs sous la forme USE_KEYSTORE@test_account , pour lesquelles TF interrogera ensuite le magasin de clés et utilisera sa valeur dans le cadre du test.

Fichier de clés basé sur l'hôte

Pour définir des paires clé-valeur basées sur l'hôte, vous pouvez définir un fichier /path/to/keystore_ssid.json comme

{
  "host_a.*\\.corp\\.com": {
    "wifi_lab_ssid": "ssid_a",
    "wifi_lab_pwd": "secret_a"
  },
  "host_b.*\\.corp\\.com": {
    "wifi_lab_ssid": "ssid_b",
    "wifi_lab_pwd": "secret_b"
  }
}

La clé d'une entrée dans le fichier est un modèle d'expression régulière (regex) pour le nom d'hôte et la valeur est l'ensemble de paires clé-valeur pour tout hôte avec un nom d'hôte correspondant.

Mettez ensuite à jour votre fichier de configuration globale TF pour inclure le fichier de clés basé sur l'hôte :

<key_store class="com.android.tradefed.util.keystore.JSONFileKeyStoreFactory">
<option name="json-key-store-file" value="/path/to/keystore.json" />
<option name="host-based-key-store-file" value="/path/to/keystore-ssid.json" />
</key_store>

La valeur d'une clé définie dans un fichier de magasin de clés basé sur l'hôte remplace celle définie dans le fichier de magasin de clés spécifié avec json-key-store-file .

Lorsque plusieurs fichiers de magasins de clés basés sur l'hôte sont présents dans le magasin de clés, l'ordre est important. Si la valeur d'une clé est définie dans plusieurs fichiers, la valeur du dernier fichier remplace le reste.