Memorizzare i secret con il keystore

Tradefed include il concetto di keystore, in cui i secret possono essere archiviati in un servizio keystore e richiesti al momento dell'esecuzione del test per l'utilizzo durante il test.

Utilizzare un keystore

Per utilizzare un keystore, devi prima definire l'origine del keystore nella configurazione globale.

Al termine, puoi utilizzare le chiavi memorizzate tramite: USE_KEYSTORE@{key}

JSONFileKeyStore

L'implementazione di esempio in Tradefed core utilizza un keystore JSON, JSONFileKeyStoreClient. Per utilizzare questo keystore, devi definire un file di chiavi JSON con mappature chiave-valore.

Ad esempio, potresti definire un file /path/to/keystore.json come

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

Quindi, aggiungi le seguenti righe nel file di configurazione globale di TF:

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

Quando esegui test correlati, ora puoi passare i valori come USE_KEYSTORE@test_account, che TF interrogherà quindi per utilizzare il suo valore come parte del test.

File keystore basato su host

Per definire coppie chiave-valore basate sull'host, puoi definire un file /path/to/keystore_ssid.json come

{
  "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 chiave di una voce nel file è un pattern di espressione regolare (regex) per il nome host e il valore è l'insieme di coppie chiave-valore per qualsiasi host con un nome host corrispondente.

Poi aggiorna il file di configurazione globale di TF per includere il file del keystore basato sull'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>

Il valore di una chiave definita in un file keystore basato sull'host sostituisce quello definito nel file keystore specificato con json-key-store-file.

Quando nel keystore sono presenti più file keystore basati sull'host, l'ordine è importante. Se il valore di una chiave è definito in più file, il valore nell'ultimo file di questo tipo sostituisce gli altri.