Przechowuj sekrety w magazynie kluczy

Tradefed obejmuje koncepcję magazynu kluczy , w którym klucze tajne mogą być przechowywane w usłudze magazynu kluczy i żądane w czasie wykonywania testu w celu wykorzystania podczas testu.

Użyj magazynu kluczy

Aby użyć magazynu kluczy, musisz najpierw zdefiniować źródło magazynu kluczy w konfiguracji globalnej .

Gdy już to zrobisz, możesz użyć przechowywanych kluczy poprzez: USE_KEYSTORE@{key}

JSONFileKeyStore

Przykładowa implementacja w rdzeniu Tradefed wykorzystuje magazyn kluczy JSON, JSONFileKeyStoreClient . Aby użyć tego magazynu kluczy, należy zdefiniować plik kluczy JSON zawierający odwzorowania klucz-wartość.

Można na przykład zdefiniować plik /path/to/keystore.json jako

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

Następnie dodałbyś następujące linie do swojego globalnego pliku konfiguracyjnego TF:

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

Podczas wykonywania powiązanych testów możesz teraz przekazywać wartości jako USE_KEYSTORE@test_account , które TF następnie zapyta o magazyn kluczy i użyje jego wartości w ramach testu.

Plik magazynu kluczy oparty na hoście

Aby zdefiniować pary klucz-wartość oparte na hoście, możesz zdefiniować plik /path/to/keystore_ssid.json jako

{
  "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"
  }
}

Kluczem wpisu w pliku jest wzór wyrażenia regularnego (regex) dla nazwy hosta, a wartość to zestaw par klucz-wartość dla dowolnego hosta z pasującą nazwą hosta.

Następnie zaktualizuj swój globalny plik konfiguracyjny TF, aby uwzględnić plik magazynu kluczy oparty na hoście:

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

Wartość klucza zdefiniowana w pliku magazynu kluczy na hoście zastępuje wartość zdefiniowaną w pliku magazynu kluczy określonym za pomocą json-key-store-file .

Jeśli w magazynie kluczy znajduje się wiele plików kluczy hosta, kolejność ma znaczenie. Jeśli wartość klucza jest zdefiniowana w wielu plikach, wartość w ostatnim takim pliku zastępuje resztę.