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

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

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

Затем обновите глобальный файл конфигурации 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.

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