Archiviazione dei secret con l'archivio chiavi

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

Usa un archivio chiavi

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 nel core Tradefed utilizza un archivio chiavi JSON, JSONFileKeyStoreClient. Per utilizzare questo keystore, devi definire un file della chiave JSON con mappature delle chiavi ai valori.

Ad esempio, puoi 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",
}

Aggiungi poi le seguenti righe al 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, per i quali TF eseguirà una query nel keystore e utilizzerà il relativo valore nell'ambito del test.

File dell'archivio chiavi 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 è uno schema 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.

Aggiorna il file di configurazione globale TF in modo da 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 del keystore basato sull'host sostituisce quello definito nel file del keystore specificato con json-key-store-file.

Quando nell'archivio chiavi sono presenti più file di archivi chiavi basati su host, l'ordine è importante. Se il valore di una chiave è definito in più file, il valore nell'ultimo file sostituisce il resto.