キーストアを使用したシークレットの保存

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 はキーストアに対してクエリし、その値をテストで使用します。

ホストベースのキーストア ファイル

ホストベースの Key-Value ペアを定義するには、/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)パターンです。値は、ホスト名が一致するすべてのホストの Key-Value ペアのセットです。

次に、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 で指定されたキーストア ファイルで定義されている値よりも優先されます。

複数のホストベースのキーストア ファイルがキーストアに存在する場合は、順序が重要です。キーの値が複数のファイルで定義されている場合、最後のファイルの値でそれ以外の値がオーバーライドされます。