Храните секреты с помощью хранилища ключей

Tradefed включает в себя концепцию хранилища ключей , где секреты могут храниться в службе хранилища ключей и запрашиваться во время выполнения теста для использования во время теста.

Как использовать хранилище ключей

Чтобы использовать хранилище ключей, вам необходимо сначала определить источник хранилища ключей в вашей глобальной конфигурации .

После этого вы можете использовать сохраненные ключи через: USE_KEYSTORE@{key}

JSONFileKeyStore

Пример реализации в ядре Tradefed использует хранилище ключей JSON, JSONFileKeyStoreClient . Чтобы использовать это хранилище ключей, вы должны определить файл ключей JSON, который имеет сопоставления ключей и значений.

Например, вы можете определить файл /path/to/keystore.json как

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

Затем вы должны добавить следующие строки в свой глобальный файл конфигурации TF:

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

При выполнении связанных тестов теперь вы можете передавать значения как USE_KEYSTORE@test_account , для которых TF затем будет запрашивать хранилище ключей и использовать его значение как часть теста.

Файл хранилища ключей на хосте

Чтобы определить пары ключ-значение на основе хоста, вы можете определить файл /path/to/keystore_ssid.json как

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

Ключ записи в файле представляет собой шаблон регулярного выражения (regex) для имени хоста, а значение представляет собой набор пар ключ-значение для любого хоста с совпадающим именем хоста.

Затем обновите глобальный файл конфигурации TF, включив в него файл хранилища ключей на хосте:

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

Значение ключа, определенное в файле хранилища ключей на хосте, переопределяет значение, определенное в файле хранилища ключей, указанном с помощью json-key-store-file .

Когда в хранилище ключей присутствует несколько файлов хранилища ключей на хосте, порядок имеет значение. Если значение ключа определено в нескольких файлах, значение в последнем таком файле имеет приоритет перед остальными.