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

Tradefed có khái niệm về kho khoá, trong đó 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 thông qua: USE_KEYSTORE@{key}

JSONFileKeyStore

Việc triển khai mẫu trong lõi Tradefed sử dụng một 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 ánh xạ khoá đến giá trị.

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

{
  "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 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 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á để lấy giá trị và sử dụng giá trị đó trong quá trình 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ủ lưu trữ, bạn có thể xác định tệp /path/to/keystore_ssid.json dưới dạng

{
  "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 mọi máy chủ có tên máy chủ khớp.

Sau đó, hãy cập nhật tệp cấu hình chung TF để đưa tệp kho khoá dựa trên máy chủ lưu trữ 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ủ lưu trữ 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ủ lưu trữ trong kho khoá, thứ tự sẽ có ý nghĩa. 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.