Stocker des secrets avec un keystore

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

Utiliser un keystore

Pour utiliser un keystore, vous devez d'abord définir sa source votre international configuration.

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

JSONFileKeyStore

L'exemple d'implémentation dans Tradefed Core utilise un keystore JSON, JSONFileKeyStoreClient Pour utiliser ce keystore, vous devez définir un fichier de clé JSON avec des mappages clé-valeur.

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

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

Vous devez ensuite ajouter les lignes suivantes à votre fichier de configuration global 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 en tant que USE_KEYSTORE@test_account, pour lequel TF interroge ensuite le keystore et l'utilise sa valeur dans le cadre du test.

Fichier keystore basé sur l'hôte

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

{
  "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 du fichier est un modèle d'expression régulière (regex) pour la variable nom d'hôte. La valeur est l'ensemble des paires clé-valeur de tout hôte associé à correspondant.

Ensuite, mettez à jour votre fichier de configuration global TF pour inclure le keystore 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 keystore basé sur l'hôte remplace celle définie dans le fichier keystore spécifié avec json-key-store-file.

Lorsque plusieurs fichiers keystore basés sur l'hôte sont présents dans le keystore, l'ordre ce qui est important. Si la valeur d'une clé est définie dans plusieurs fichiers, la valeur du paramètre le dernier fichier de ce type remplace le reste.