使用 Keystore 存儲秘密

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 file 指定的密鑰庫文件中定義的值。

當密鑰庫中存在多個基於主機的密鑰庫文件時,順序很重要。如果鍵的值在多個文件中定義,則最後一個此類文件中的值將覆蓋其余文件。