Secrets im Keystore speichern

Tradefed umfasst das Konzept eines Schlüsselspeichers, in dem Geheimnisse in einem Schlüsselspeicherdienst gespeichert und zur Testlaufzeit angefordert werden können für die Verwendung während des Tests.

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 über USE_KEYSTORE@{key} verwenden.

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 beispielsweise eine Datei /path/to/keystore.json 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 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>

Bei der Ausführung zugehöriger Tests können Sie jetzt Werte als USE_KEYSTORE@test_account übergeben. TF fragt dann den Schlüsselspeicher ab und verwendet den Wert als Teil des Tests.

Hostbasierte Schlüsselspeicherdatei

Wenn Sie hostbasierte Schlüssel/Wert-Paare definieren möchten, können Sie eine Datei /path/to/keystore_ssid.json 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 Menge der Schlüssel/Wert-Paare für jeden Host mit einem übereinstimmenden Hostnamen.

Aktualisieren Sie dann Ihre globale TF-Konfigurationsdatei, um die hostbasierte Schlüsselspeicherdatei einzufügen:

<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 Wert, der in der mit json-key-store-file angegebenen Schlüsselspeicherdatei definiert ist.

Wenn mehrere hostbasierte Schlüsselspeicherdateien im Schlüsselspeicher 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 die anderen Werte.