אחסון סודות באמצעות מאגר מפתחות

Tradefed כולל את המושג מאגר מפתחות, שבו אפשר לאחסן סודות בשירות של מאגר מפתחות ולבקש אותם בזמן הרצת הבדיקה לשימוש במהלך הבדיקה.

שימוש במאגר מפתחות

כדי להשתמש במאגר מפתחות, קודם צריך להגדיר את המקור של מאגר המפתחות בהגדרה הגלובלית.

בסיום, תוכלו להשתמש במפתחות השמורים דרך: USE_KEYSTORE@{key}

JSONFileKeyStore

בהטמעה לדוגמה ב-Trendified נעשה שימוש במאגר מפתחות של 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.

כשיש כמה קובצי מאגר מפתחות מבוססי-מארח במאגר המפתחות, הסדר חשוב. אם הערך של מפתח מוגדר בכמה קבצים, הערך בקובץ האחרון מבטל את שאר הערכים.