דלג לתוכן
חזור

אוטומציית בדיקות - הסתרת סודות באמצעות משתני סביבה מערכתיים

פורסם:

מבוא

במאמר זה, אסקור את היכולת להסתיר סודות שיכולים להיות, לדוגמה, סיסמאות חשובות או כל נתון רגיש אחר, ולאחסן אותם כמשתנה סביבה מערכתי. הכלים הטכנולוגיים המשמשים למימוש הפתרון הם:

שפות תכנות: Java, PowerShell

מנוע בדיקות: TestNG

הבעיה

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

זוהי הטמעת הקוד של שיטת בדיקה המכילה נתונים רגישים:

@Test(description = "seccesfully login to the system")
public void login() {
    // some test code
    driver.findElement(By.cssSelector("#user")).sendKeys("userName");
    // the password is visable to all users in this repository
    driver.findElement(By.cssSelector("#password")).sendKeys("superSecretPassword");
}

אנו זקוקים לפתרון שיסתיר נתונים רגישים מקוד הבדיקה שלנו.

הפתרון – הסתרת סודות באמצעות משתני סביבה מערכתיים

מהם משתני סביבה מערכתיים

מ-ויקיפדיה:

משתנה סביבה הוא ערך בעל שם דינמי שיכול להשפיע על האופן שבו תהליכים פועלים במחשב.

הם חלק מהסביבה שבה תהליך פועל. לדוגמה, תהליך פועל יכול לשאול את הערך של משתנה הסביבה TEMP כדי לגלות מיקום מתאים לאחסון קבצים זמניים, או את המשתנה HOME או USERPROFILE כדי למצוא את מבנה הספריות שבבעלות המשתמש המריץ את התהליך.

פעולות CRUD עם משתני סביבה מערכתיים באמצעות PowerShell

יצירה

ליצירה, השתמש בפקודה הבאה במצב מנהל מערכת:

[System.Environment]::SetEnvironmentVariable('secretPassword', 'superSecretPassword', [System.EnvironmentVariableTarget]::Machine)

הפרמטר הראשון הוא שם המשתנה והשני הוא הערך.

קריאה

[System.Environment]::GetEnvironmentVariable('secretPassword', 'machine')

הפרמטר הראשון הוא שם המשתנה, והשני הוא יעד משתנה הסביבה (קובע אם משתנה זה קשור למשתמש מסוים או למכונה).

מחיקה

זה נעשה באמצעות שיטת היצירה והעברת ערך null:

[Environment]::SetEnvironmentVariable('secretPassword', $null, [System.EnvironmentVariableTarget]::Machine)

עדכון

אנו יכולים להשתמש בשיטת היצירה כדי לעדכן משתנה קיים.

רשימת כל משתני הסביבה

Get-ChildItem env:

מימוש הפתרון

ראשית, עלינו ליצור משתנה סביבה מערכתי כדי לאחסן את הנתונים הרגישים שלנו.

לאחר מכן נוכל לקרוא את הנתונים בשיטת הבדיקה שלנו ולהסיר נתונים אלה מבקרת המקור שלנו.

driver.findElement(By.cssSelector("#password"))
      .sendKeys(System.getenv("secretPassword"));

זהו פתרון פשוט שיש לו מספר חסרונות:

לפתרון ניהול סודות מרכזי חזק ומתוחכם יותר, תוכלו לנסות את Vault by HashiCorp.

לסיכום

במאמר זה, סקרנו את היכולת להסתיר סודות באמצעות משתני סביבה מערכתיים, יתרונותיה וחסרונותיה. אבטחת הקוד שלנו היא נושא חשוב ועלינו לשים לב אליו היטב בעת קידוד מסגרת האוטומציה שלנו.

קריאה נוספת על ניהול סודות ניתן למצוא בקישור זה.

בדיקות מהנות!


הציעו שינויים

מוכנים לבנות את מפת הדרכים שלכם? נתחיל כאן


הפוסט הקודם
אוטומציית בדיקות - כיצד לדלג אוטומטית על מקרי בדיקה נכשלים
הפוסט הבא
אוטומציית בדיקות - שיפור קריאות הקוד באמצעות בלוקי טקסט של Java 13