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

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

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

<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 , которые TensorFlow затем запросит у хранилища ключей и использует полученное значение в рамках теста.

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

Для определения пар ключ-значение на основе хоста можно указать файл /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 .

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