Lưu trữ thông tin bí mật bằng kho khoá

Tradefed bao gồm khái niệm về một kho khoá, nơi các bí mật có thể được lưu trữ trong một dịch vụ kho khoá và được yêu cầu tại thời gian chạy thử nghiệm để sử dụng trong quá trình kiểm thử.

Sử dụng kho khoá

Để sử dụng kho khoá, trước tiên bạn cần xác định nguồn cho kho khoá trong cấu hình chung.

Sau khi hoàn tất, bạn có thể sử dụng các khoá đã lưu trữ thông qua: USE_KEYSTORE@{key}

JSONFileKeyStore

Việc triển khai mẫu trong lõi Tradefed sử dụng kho khoá JSON, JSONFileKeyStoreClient. Để sử dụng kho khoá này, bạn sẽ xác định một tệp khoá JSON có các khoá để ánh xạ giá trị.

Ví dụ: bạn có thể xác định tệp /path/to/keystore.json như

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

Sau đó, bạn sẽ thêm các dòng sau vào tệp cấu hình chung của TF:

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

Khi thực thi các bài kiểm thử liên quan, giờ đây bạn có thể truyền các giá trị dưới dạng USE_KEYSTORE@test_account. Sau đó, TF sẽ truy vấn kho khoá và sử dụng giá trị đó làm một phần của bài kiểm thử.

Tệp kho khoá dựa trên máy chủ

Để xác định các cặp khoá-giá trị dựa trên máy chủ, bạn có thể xác định tệp /path/to/keystore_ssid.json như

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

Khoá của một mục trong tệp là mẫu biểu thức chính quy (regex) cho tên máy chủ và giá trị là tập hợp các cặp khoá-giá trị cho bất kỳ máy chủ nào có tên máy chủ phù hợp.

Sau đó, hãy cập nhật tệp cấu hình chung của TF để đưa tệp kho khoá dựa trên máy chủ vào:

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

Giá trị của một khoá được xác định trong tệp kho khoá dựa trên máy chủ sẽ ghi đè giá trị được xác định trong tệp kho khoá được chỉ định bằng json-key-store-file.

Khi có nhiều tệp kho khoá dựa trên máy chủ trong kho khoá, thứ tự sẽ quan trọng. Nếu giá trị cho một khoá được xác định trong nhiều tệp, thì giá trị trong tệp cuối cùng như vậy sẽ ghi đè các giá trị còn lại.