אימות באמצעות מפתחות ציבוריים של SSH

משתמשים וחשבונות שירות יכולים להשתמש במפתחות ציבוריים של SSH כדי לבצע אימות למאגרי Secure Source Manager. בדף הזה מוסבר איך ליצור זוג מפתחות SSH ואז להוסיף אותו כשיטת אימות בממשק האינטרנט של Secure Source Manager.

‫Secure Source Manager תומך בסוגי מפתחות SSH‏ RSA,‏ ECDSA ו-Ed25519.

התפקידים הנדרשים

כדי לקבל את ההרשאות שדרושות לאימות באמצעות מפתחות ציבוריים של SSH, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:

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

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

ההרשאות הנדרשות

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

  • securesourcemanager.sshkeys.createAny במופע של Secure Source Manager
  • כדי להקצות מפתח SSH לחשבון שירות: iam.serviceAccounts.actAs בחשבון השירות

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

במאמרים בקרת גישה באמצעות IAM והענקת גישה של משתמשים למופע מוסבר איך נותנים תפקידים ב-Secure Source Manager.

יצירת צמד מפתחות

זוג מפתחות SSH מורכב ממפתח פרטי שנמצא במערכת המקומית וממפתח ציבורי שאתם רושמים ב- Google Cloud.

Linux או macOS

  1. מתקינים את OpenSSH במערכת המקומית.

  2. בשורת הפקודה, מזינים את הפקודה הבאה:

    ssh-keygen -t KEY_TYPE -C "USER_EMAIL"
    

    כאשר:

    • USER_EMAIL היא כתובת האימייל שלכם.
    • KEY_TYPE הוא אחד מהערכים rsa, ecdsa או ed25519.

    לדוגמה:

    ssh-keygen -t rsa -C "user@example.com"
    
    1. כשמופיעה בקשה, מזינים מיקום ושם קובץ עבור קובץ המפתח הציבורי. כדי לאשר את מיקום ברירת המחדל ואת שם הקובץ, מקישים על Enter.

    2. כשמופיעה בקשה, משאירים את ביטוי הסיסמה ריק ומקישים על Enter.

Windows

  1. אם אין לכם אותו, צריך להתקין את לקוח OpenSSH (כלול ב-Windows 10 ובגרסאות מתקדמות יותר) ואת Git for Windows במערכת המקומית. ההוראות הבאות מתייחסות לשימוש ב-OpenSSH וב-Git ל-Windows.

  2. ב-PowerShell או בשורת הפקודה, מריצים את הפקודה הבאה:

    ssh-keygen -t KEY_TYPE -C "USER_EMAIL"
    

    כאשר:

    • USER_EMAIL היא כתובת האימייל שלכם.
    • KEY_TYPE הוא אחד מהערכים rsa, ecdsa או ed25519.

    לדוגמה:

    ssh-keygen -t rsa -C "user@example.com"
    
    1. כשמופיעה בקשה, מזינים מיקום ושם קובץ עבור קובץ המפתח הציבורי. כדי לאשר את מיקום ברירת המחדל ואת שם הקובץ (‎%USERPROFILE%.ssh), לוחצים על Enter.

    2. כשמופיעה בקשה, משאירים את ביטוי הסיסמה ריק ומקישים על Enter.

הוספת מפתח SSH לסוכן SSH

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

Linux או macOS

  1. התחלת ssh-agent ברקע:

    eval "$(ssh-agent -s)"
    

    הפקודה מחזירה את מזהה התהליך (PID) של הסוכן, לדוגמה:

    Agent pid 3245
    

    בהתאם לסביבה שלכם, יכול להיות שתצטרכו להשתמש בפקודה אחרת, למשל:

    • כדי להשתמש בגישת root, מריצים את הפקודה sudo -s -H לפני שמפעילים את ssh-agent.
    • כדי להריץ את ssh-agent ישירות, משתמשים ב-exec ssh-agent bash או ב-exec ssh-agent zsh.
  2. מוסיפים את המפתח הפרטי של SSH אל ssh-agent.

    ssh-add ~/.ssh/FILENAME
    

    כאשר FILENAME הוא שם קובץ המפתח הפרטי, לדוגמה id_rsa או id_ed25519.

Windows

  1. התחלת ssh-agent.

    • אם אתם משתמשים ב-Git Bash, מפעילים את ssh-agent:

      eval "$(ssh-agent -s)"
      
    • אם אתם משתמשים ב-PowerShell או בכלי Command Prompt, צריך להפעיל את השירות ssh-agent. ב-PowerShell, מריצים את הפקודה:

      Set-Service ssh-agent -StartupType Automatic; Start-Service ssh-agent
      
  2. מוסיפים את המפתח הפרטי של SSH אל ssh-agent.

    • אם אתם משתמשים ב-Git Bash:

      ssh-add ~/.ssh/FILENAME
      
    • אם משתמשים ב-PowerShell או בשורת הפקודה:

      ssh-add $env:USERPROFILE\.ssh\FILENAME
      

    כאשר FILENAME הוא שם קובץ המפתח הפרטי, לדוגמה id_rsa או id_ed25519.

הוספת מפתחות SSH למשתמשים

  1. בממשק האינטרנט של Secure Source Manager, בדף של המופע או המאגר, לוחצים על התפריט אפשרויות נוספות.
  2. לוחצים על מפתחות SSH של משתמשים.

    ייפתח הדף User SSH keys, ויוצג בו רשימה של כל המפתחות הקיימים שיצרתם.

  3. בדף User SSH keys (מפתחות SSH של משתמש), לוחצים על Add key (הוספת מפתח).

  4. בדף Add SSH Key (הוספת מפתח SSH), מזינים את הערכים הבאים עבור המפתח:

    1. שם: מוסיפים שם תיאורי למפתח.
    2. מפתח ציבורי SSH: מדביקים את מחרוזת המפתח הציבורי. כדי לקבל את מחרוזת המפתח הציבורי, פותחים את קובץ המפתח הציבורי (FILENAME.pub) בכלי לעריכת טקסט, או מריצים אחת מהפקודות הבאות:

      Linux או macOS

      cat ~/.ssh/FILENAME.pub
      

      Windows

      cat $env:USERPROFILE\.ssh\FILENAME.pub
      

      מחליפים את FILENAME בשם של קובץ המפתח.

אתם יכולים להשתמש במפתחות SSH כדי לבצע אימות לכל מאגר של Secure Source Manager, בתנאי שיש לכם את ההרשאות הנדרשות במאגר הזה.

הוספה של מפתחות SSH לחשבונות שירות

כדי לאפשר גישה לתכנות למאגר, אפשר להוסיף מפתח SSH לחשבון שירות.

  1. אם עדיין אין לכם חשבון שירות שבו אתם רוצים להשתמש, צרו חשבון שירות.
  2. בממשק האינטרנט של Secure Source Manager, לוחצים על התפריט אפשרויות נוספות.
  3. לוחצים על מפתחות SSH של חשבון שירות. נפתח הדף Service account SSH keys ומוצגת רשימה של כל המפתחות הקיימים שהוספתם.
  4. בדף מפתחות SSH של חשבון שירות, לוחצים על הוספת מפתח.
  5. בדף Add service account SSH key, מזינים את הערכים הבאים של המפתח:

    1. שם: שם תיאורי למפתח
    2. חשבון שירות: כתובת האימייל בחשבון השירות שרוצים להשתמש בו במפתח ה-SSH, בפורמט SA_NAME@PROJECT_ID.iam.gserviceaccount.com

      כאשר:

      • SA_NAME הוא השם של חשבון השירות.
      • PROJECT_ID הוא מזהה הפרויקט שבו נוצר חשבון השירות.
    3. מפתח ציבורי SSH: מפתח ה-SSH הציבורי. מידע על יצירת זוג מפתחות SSH זמין במאמר בנושא יצירת זוג מפתחות.

  6. אם חשבון השירות לא נמצא באותו פרויקט כמו המופע של Secure Source Manager, צריך להקצות לסוכן השירות של Secure Source Manager את אחד מהתפקידים או ההרשאות הבאים בחשבון השירות שרוצים להשתמש בו:

    • הרשאה iam.serviceAccounts.signJwt
    • התפקיד 'יצירת אסימונים בחשבון שירות' (roles/iam.serviceAccountTokenCreator)

    מריצים את הפקודה הבאה כדי להוסיף מדיניות IAM לחשבון השירות של Secure Source Manager, וכך להעניק לו את התפקיד Service Account Token Creator.

    gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT \
        --member="serviceAccount:service-INSTANCE_PROJECT_NUMBER@gcp-sa-sourcemanager.iam.gserviceaccount.com" \
        --role="roles/iam.serviceAccountTokenCreator"
    

    כאשר SERVICE_ACCOUNT הוא חשבון השירות שבו רוצים להשתמש ו-INSTANCE_PROJECT_NUMBER הוא מספר הפרויקט של מופע Secure Source Manager.

    הערך SERVICE_ACCOUNT צריך להיות בפורמט של מזהה מספרי של חשבון שירות או בפורמט של כתובת אימייל, למשל: 123456789876543212345 או my-iam-account@somedomain.com.

המאמרים הבאים