Archivia i segreti con il keystore

Tradefed include il concetto di archivio di chiavi , in cui i segreti possono essere archiviati in un servizio di archivio di chiavi e richiesti in fase di esecuzione del test per essere utilizzati durante il test.

Utilizzare un archivio chiavi

Per utilizzare un archivio di chiavi, devi prima definire l'origine per l'archivio di chiavi nella configurazione globale .

Una volta terminato, puoi utilizzare le chiavi memorizzate tramite: USE_KEYSTORE@{key}

JSONFileKeyStore

L'implementazione di esempio nel core Tradefed utilizza un keystore JSON, JSONFileKeyStoreClient . Per utilizzare questo archivio di chiavi, definiresti 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 aggiungeresti le seguenti righe nel file di configurazione globale TF:

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

Quando si eseguono test correlati, ora è possibile passare valori come USE_KEYSTORE@test_account , per cui TF interrogherà quindi il keystore e utilizzerà il suo valore come parte del test.

File di archivio chiavi basato su host

Per definire coppie chiave-valore basate su host, è possibile 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 modello 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.

Quindi aggiorna il file di configurazione globale TF per includere il file di archivio chiavi basato su 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 di archivio chiavi basato su host sovrascrive quello definito nel file di archivio chiavi specificato con json-key-store-file .

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