使用金鑰庫儲存機密

Tradefed 包含金鑰庫的概念,其中秘密可以儲存在金鑰庫服務中,並在測試執行時間請求以在測試期間使用。

使用金鑰庫

若要使用金鑰庫,您需要先在全域設定中定義金鑰庫的來源。

完成後,您可以透過以下方式使用儲存的金鑰: USE_KEYSTORE@{key}

JSON檔案金鑰存儲

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指定的金鑰庫檔案中定義的值。

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