Speichern Sie Geheimnisse mit Keystore

Tradefed beinhaltet das Konzept eines Keystores , bei dem Geheimnisse in einem Keystore-Dienst gespeichert und zur Testlaufzeit zur Verwendung während des Tests angefordert werden können.

Verwenden Sie einen Schlüsselspeicher

Um einen Keystore zu verwenden, müssen Sie zunächst die Quelle für den Keystore in Ihrer globalen Konfiguration definieren.

Sobald Sie fertig sind, können Sie die gespeicherten Schlüssel verwenden über: USE_KEYSTORE@{key}

JSONFileKeyStore

Die Beispielimplementierung im Tradefed-Kern verwendet einen JSON-Keystore, JSONFileKeyStoreClient . Um diesen Keystore zu verwenden, würden Sie eine JSON-Schlüsseldatei definieren, die Schlüssel-Wert-Zuordnungen enthält.

Sie könnten beispielsweise eine Datei /path/to/keystore.json als definieren

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

Dann würden Sie die folgenden Zeilen in Ihre globale TF-Konfigurationsdatei einfügen:

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

Beim Ausführen verwandter Tests können Sie jetzt Werte als USE_KEYSTORE@test_account übergeben, woraufhin TF den Keystore abfragt und seinen Wert als Teil des Tests verwendet.

Hostbasierte Keystore-Datei

Um hostbasierte Schlüssel-Wert-Paare zu definieren, können Sie eine Datei /path/to/keystore_ssid.json als 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äres Ausdrucksmuster (Regex) für den Hostnamen und der Wert ist der Satz von Schlüssel-Wert-Paaren für jeden Host mit einem passenden Hostnamen.

Aktualisieren Sie dann Ihre globale TF-Konfigurationsdatei, um die hostbasierte Keystore-Datei einzuschließen:

<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 Keystore-Datei definiert ist, überschreibt den Wert, der in der mit json-key-store-file angegebenen Keystore-Datei definiert ist.

Wenn mehrere hostbasierte Keystore-Dateien im Keystore vorhanden sind, ist die Reihenfolge wichtig. Wenn der Wert für einen Schlüssel in mehreren Dateien definiert ist, überschreibt der Wert in der letzten Datei den Rest.