Armazenar secrets com o keystore

O Tradefed inclui o conceito de keystore, em que os secrets podem ser armazenados em um serviço de keystore e solicitados no ambiente de execução do teste. para uso durante o teste.

Usar um keystore

Para usar um keystore, você precisa primeiro definir a origem do keystore em seu site global do Terraform.

Depois disso, é possível usar as chaves armazenadas por: USE_KEYSTORE@{key}

JSONFileKeyStore

O exemplo de implementação no Tradefed Core usa um keystore JSON. JSONFileKeyStoreClient: Para usar esse keystore, defina um arquivo de chave JSON que tem mapeamentos de chave para valor.

Por exemplo, defina um arquivo /path/to/keystore.json como

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

Em seguida, adicione as seguintes linhas ao arquivo de configuração global do TF:

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

Ao executar testes relacionados, agora é possível passar valores como USE_KEYSTORE@test_account, que o TF vai consultar o keystore e usar o valor dele como parte do teste.

Arquivo keystore baseado em host

Para definir pares de chave-valor baseados em host, defina um /path/to/keystore_ssid.json como

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

A chave de uma entrada no arquivo é um padrão de expressão regular (regex) para o nome do host e o valor é o conjunto de pares de chave-valor para qualquer host com um com o nome do host correspondente.

Em seguida, atualize o arquivo de configuração global do TF para incluir o arquivo de chaves baseado no host:

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

O valor de uma chave definida em um arquivo de keystore baseado em host substitui o valor definido no arquivo de keystore especificado com json-key-store-file.

Quando vários arquivos de keystore baseados em host estão presentes no keystore, a ordem é importante. Se o valor de uma chave for definido em vários arquivos, o valor na por último, esse arquivo substitui o restante.