تخزين الأسرار باستخدام ملف تخزين المفاتيح

يتضمّن Tradefed مفهوم مخزن المفاتيح، حيث يمكن تخزين الأسرار في خدمة مخزن المفاتيح وطلبها في وقت تشغيل الاختبار لاستخدامها أثناء الاختبار.

استخدام ملف تخزين مفاتيح

لاستخدام مخزن مفاتيح، عليك أولاً تحديد مصدر مخزن المفاتيح في الإعدادات العامة.

بعد الانتهاء، يمكنك استخدام المفاتيح المخزّنة من خلال: USE_KEYSTORE@{key}

JSONFileKeyStore

يستخدم نموذج التنفيذ في Tradefed Core مخزن مفاتيح بتنسيق JSON، JSONFileKeyStoreClient. لاستخدام مخزن المفاتيح هذا، عليك تحديد ملف مفتاح JSON يتضمّن عمليات ربط المفتاح بالقيمة.

على سبيل المثال، يمكنك تعريف ملف /path/to/keystore.json على أنّه

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

بعد ذلك، ستضيف الأسطر التالية في ملف الإعداد العام لـ TF:

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

عند تنفيذ اختبارات ذات صلة، يمكنك الآن إدخال القيم على النحو التالي USE_KEYSTORE@test_account، ثم سيطلب TF من مخزن المفاتيح هذه القيم ويستخدمها كجزء من الاختبار.

ملف تخزين المفاتيح المستند إلى المضيف

لتحديد أزواج المفاتيح والقيم المستندة إلى المضيف، يمكنك تحديد ملف /path/to/keystore_ssid.json على النحو التالي

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

مفتاح الإدخال في الملف هو نمط تعبير عادي (regex) لاسم المضيف، والقيمة هي مجموعة أزواج المفاتيح والقيم لأي مضيف يتضمّن اسم مضيف مطابقًا.

بعد ذلك، عدِّل ملف الإعدادات العامة لـ TF لتضمين ملف مخزن المفاتيح المستند إلى المضيف:

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

تتجاوز قيمة المفتاح المحدّدة في ملف مخزن المفاتيح المستند إلى المضيف القيمة المحدّدة في ملف مخزن المفاتيح المحدّد باستخدام json-key-store-file.

عندما تتوفّر عدّة ملفات لمخزن المفاتيح المستند إلى المضيف في مخزن المفاتيح، يكون الترتيب مهمًا. إذا تم تحديد قيمة مفتاح في ملفات متعددة، ستلغي القيمة في آخر ملف من هذا النوع القيم الأخرى.