Secrets mit Schlüsselspeicher speichern

Tradefed umfasst das Konzept eines Schlüsselspeichers, bei dem Secrets in einem Schlüsselspeicherdienst gespeichert und bei der Testausführung zur Verwendung während des Tests angefordert werden können.

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 können Sie die gespeicherten Schlüssel mit folgendem Befehl verwenden: USE_KEYSTORE@{key}

JSONFileKeyStore

Die Beispielimplementierung in Tradefed Core verwendet einen JSON-Schlüsselspeicher, JSONFileKeyStoreClient. Um diesen Schlüsselspeicher zu verwenden, definieren Sie eine JSON-Schlüsseldatei, die Schlüssel/Wert-Zuordnungen enthält.

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

Dann fügen Sie die folgenden Zeilen in Ihre 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 entsprechende Tests ausführen, können Sie jetzt Werte wie 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 in einer hostbasierten Schlüsselspeicherdatei definierten Schlüssels überschreibt den Wert, der in der mit json-key-store-file angegebenen Schlüsselspeicherdatei definiert ist.

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