Secrets im Keystore speichern

Tradefed enthält das Konzept eines Schlüsselspeichers, in dem Secrets in einem Schlüsselspeicherdienst gespeichert und zum Zeitpunkt des Tests angefordert werden können, um sie während des Tests zu verwenden.

Schlüsselspeicher verwenden

Wenn Sie einen Schlüsselspeicher verwenden möchten, müssen Sie zuerst die Quelle für den Schlüsselspeicher in Ihrer globalen Konfiguration definieren.

Anschließend kannst du die gespeicherten Schlüssel über folgende Methoden verwenden: USE_KEYSTORE@{key}

JSONFileKeyStore

Die Beispielimplementierung in Tradefed Core verwendet einen JSON-Schlüsselspeicher, JSONFileKeyStoreClient. Wenn Sie diesen Schlüsselspeicher verwenden möchten, müssen Sie eine JSON-Schlüsseldatei mit Schlüssel/Wert-Zuordnungen definieren.

Sie können eine /path/to/keystore.json-Datei beispielsweise so definieren:

{
  "test_account": "foo@gmail.com",
  "test_account_pwd": "helloworld",
  "wifi_lab_ssid": "Google_private_AP",
  "wifi_lab_pwd": "secret123",
}

Fügen Sie dann die folgenden Zeilen in die globale TF-Konfigurationsdatei ein:

<key_store class="com.android.tradefed.util.keystore.JSONFileKeyStoreFactory">
<option name="json-key-store-file" value="/path/to/keystore.json" />
</key_store>

Wenn Sie zugehörige Tests ausführen, können Sie jetzt Werte als USE_KEYSTORE@test_account übergeben. TF fragt dann den Schlüsselspeicher danach ab und verwendet den Wert im Test.

Hostbasierte Schlüsselspeicherdatei

Wenn Sie hostbasierte Schlüssel/Wert-Paare definieren möchten, können Sie eine /path/to/keystore_ssid.json-Datei so definieren:

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

Der Schlüssel eines Eintrags in der Datei ist ein regulärer Ausdruck (Regex) für den Hostnamen und der Wert ist die Reihe von Schlüssel/Wert-Paaren für jeden Host mit einem übereinstimmenden Hostnamen.

Aktualisieren Sie dann die globale TF-Konfigurationsdatei, um die hostbasierte Schlüsselspeicherdatei aufzunehmen:

<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>

Der Wert eines Schlüssels, der in einer hostbasierten Schlüsselspeicherdatei definiert ist, überschreibt den in der mit json-key-store-file angegebenen Schlüsselspeicherdatei definierten Wert.

Wenn sich im Keystore mehrere hostbasierte Keystore-Dateien befinden, ist die Reihenfolge wichtig. Wenn der Wert für einen Schlüssel in mehreren Dateien definiert ist, wird der Wert in der letzten solchen Datei überschrieben.