Almacenar secretos con keystore

Tradefed incluye el concepto de almacén de claves , donde los secretos se pueden almacenar en un servicio de almacén de claves y solicitarse en el momento de la ejecución de la prueba para su uso durante la prueba.

Utilice un almacén de claves

Para utilizar un almacén de claves, primero debe definir el origen del almacén de claves en su configuración global .

Una vez hecho esto, puede utilizar las claves almacenadas a través de: USE_KEYSTORE@{key}

JSONFileKeyStore

La implementación de muestra en Tradefed Core utiliza un almacén de claves JSON, JSONFileKeyStoreClient . Para utilizar este almacén de claves, deberá definir un archivo de claves JSON que tenga asignaciones de clave a valor.

Por ejemplo, podría definir un archivo /path/to/keystore.json como

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

Luego agregaría las siguientes líneas en su archivo de configuración global de TF:

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

Al ejecutar pruebas relacionadas, ahora puede pasar valores como USE_KEYSTORE@test_account , que TF luego consultará el almacén de claves y usará su valor como parte de la prueba.

Archivo de almacén de claves basado en host

Para definir pares clave-valor basados ​​en host, puede definir un archivo /path/to/keystore_ssid.json como

{
  "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 clave de una entrada en el archivo es un patrón de expresión regular (regex) para el nombre de host y el valor es el conjunto de pares clave-valor para cualquier host con un nombre de host coincidente.

Luego actualice su archivo de configuración global de TF para incluir el archivo de almacén de claves basado en host:

<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>

El valor de una clave definida en un archivo de almacén de claves basado en host anula el definido en el archivo de almacén de claves especificado con json-key-store-file .

Cuando hay varios archivos de almacén de claves basados ​​en host en el almacén de claves, el orden es importante. Si el valor de una clave se define en varios archivos, el valor del último archivo anula el resto.