שימוש ב-Git לניהול קוד מקור

מנהל מקורות מאובטח תומך בכל הפקודות של לקוח Git SCM, ויש בו בקשות משיכה ומעקב אחרי בעיות. יש תמיכה ב-HTTPS ובאימות SSH.

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

כדי לקבל את ההרשאות שדרושות לשימוש ב-Git כדי ליצור אינטראקציה עם מאגר Secure Source Manager, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:

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

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

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

התקנת Git ו-Google Cloud CLI

  1. מתקינים את Git.

  2. אם מוצגת בקשה Choose a credential helper (בחירת כלי עזר לפרטי כניסה) בתהליך ההתקנה של Git, בוחרים באפשרות None (Do not use a credential helper) (ללא כלי עזר לפרטי כניסה).

  3. מתקינים את ה-CLI של gcloud.

  4. כדי להשתמש ב-Git עם HTTPS, צריך להשתמש בגרסה 395.0.0 ומעלה של ה-CLI של gcloud. כדי לבדוק את הגרסה של ה-CLI של gcloud, מריצים את הפקודה הבאה:

    gcloud --version
    
  5. כדי לעדכן את ה-CLI של gcloud, מריצים את הפקודה הבאה.

    gcloud components update
    
  6. אחרי העדכון, מריצים את הפקודה gcloud init כדי לאתחל את ה-CLI של gcloud.

    מידע נוסף זמין במאמרי עזרה בנושא עדכון רכיבים בתיעוד של ה-CLI של gcloud.

הגדרת פרטי הכניסה

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

מריצים את הפקודה הבאה כדי להוסיף את כלי העזר לאימות של Secure Source Manager להגדרת ה-Git הגלובלית:

Linux

git config --global credential.'https://*.*.sourcemanager.dev'.helper gcloud.sh

יכול להיות שגרסאות קודמות של Git לא תומכות בתווים כלליים. כדי להוסיף את כלי העזר לאימות בלי תווים כלליים, מריצים את הפקודה הבאה:

git config --global credential.'https://INSTANCE_ID-PROJECT_NUMBER-git.LOCATION.sourcemanager.dev'.helper gcloud.sh

מחליפים את מה שכתוב בשדות הבאים:

  • INSTANCE_ID בשם של מופע Secure Source Manager.
  • PROJECT_NUMBER במספר הפרויקט. במאמר זיהוי פרויקטים מוסבר איך למצוא את מספר הפרויקט.
  • LOCATION עם האזור של המכונה. מידע נוסף על אזורים זמין במאמר מיקומים.

Windows

git config --global credential.https://*.*.sourcemanager.dev.helper gcloud.cmd

יכול להיות שגרסאות קודמות של Git לא תומכות בתווים כלליים. כדי להוסיף את כלי העזר לאימות בלי תווים כלליים, מריצים את הפקודה הבאה:

git config --global credential.https://INSTANCE_ID-PROJECT_NUMBER-git.LOCATION.sourcemanager.dev.helper gcloud.cmd

מחליפים את מה שכתוב בשדות הבאים:

  • INSTANCE_ID בשם של מופע Secure Source Manager.
  • PROJECT_NUMBER במספר הפרויקט. במאמר זיהוי פרויקטים מוסבר איך למצוא את מספר הפרויקט.
  • LOCATION עם האזור של המכונה. מידע נוסף על אזורים זמין במאמר מיקומים.

עוזר האימות משתמש ב-CLI של gcloud כדי לאחזר את פרטי הכניסה שלכםGoogle Cloud כשמשתמשים בפקודות Git עם Secure Source Manager.

כדי לבצע אימות מחדש אחרי ההגדרה הראשונית של פרטי הכניסה, מריצים ב-CLI של gcloud את הפקודה הבאה:

gcloud auth login

אימות ממכונה וירטואלית ב-Compute Engine באמצעות חשבון שירות

אתם יכולים לבצע אימות ממכונה וירטואלית (VM) ב-Compute Engine באמצעות חשבון שירות שמקושר אליה.

הגדרת המכונה הווירטואלית וחשבון השירות

אם אתם משתמשים בחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine, אתם צריכים ליצור את המכונה הווירטואלית עם היקפי ההרשאות הנדרשים של OAuth:

gcloud compute instances create VM_NAME \
    --project=PROJECT_ID \
    --zone=ZONE \
    --scopes=openid,https://www.googleapis.com/auth/userinfo.profile,https://www.googleapis.com/auth/userinfo.email,https://www.googleapis.com/auth/cloud-platform

מחליפים את מה שכתוב בשדות הבאים:

  • VM_NAME: השם של המכונה הווירטואלית.
  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
  • ZONE: האזור של המכונה הווירטואלית.

אם משתמשים בחשבון שירות בהתאמה אישית, צריך ליצור את חשבון השירות ואז ליצור את המכונה הווירטואלית.

  1. יוצרים חשבון שירות:

    gcloud iam service-accounts create SA_NAME --project=PROJECT_ID
    

    מחליפים את הערך SA_NAME בשם שרוצים לתת לחשבון השירות.

  2. נותנים הרשאה להשתמש בחשבון השירות. כדי ליצור מכונה וירטואלית עם חשבון שירות, צריך את התפקיד משתמש בחשבון שירות (roles/iam.serviceAccountUser) בחשבון השירות. הקצאת התפקיד הזה לחשבון המשתמש שיוצר את המכונה הווירטואלית:

    gcloud iam service-accounts add-iam-policy-binding SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
        --member="user:USER_EMAIL" \
        --role="roles/iam.serviceAccountUser"
    

    מחליפים את USER_EMAIL בכתובת האימייל של המשתמש שיוצר את ה-VM.

  3. יוצרים את המכונה הווירטואלית:

    gcloud compute instances create VM_NAME \
        --project=PROJECT_ID \
        --zone=ZONE \
        --scopes=openid,https://www.googleapis.com/auth/userinfo.profile,https://www.googleapis.com/auth/userinfo.email,https://www.googleapis.com/auth/cloud-platform \
        --service-account=SA_NAME@PROJECT_ID.iam.gserviceaccount.com
    

הקצאת תפקידי IAM לחשבון השירות

מעניקים לחשבון השירות גישה למאגר ולמופע של Secure Source Manager:

  1. הענקת גישה למופע:

    SA_EMAIL=$(gcloud compute instances describe VM_NAME --project=PROJECT_ID --zone=ZONE --format="get(serviceAccounts[0].email)")
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:$SA_EMAIL" \
        --role=roles/securesourcemanager.instanceAccessor
    
  2. הענקת גישת קריאה למאגר.

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

    gcloud ssm repos add-iam-policy-binding REPOSITORY_ID \
        --instance=INSTANCE_ID \
        --location=LOCATION \
        --member="serviceAccount:$SA_EMAIL" \
        --role=roles/securesourcemanager.repoReader
    

    מחליפים את מה שכתוב בשדות הבאים:

    • REPOSITORY_ID: מזהה המאגר.
    • INSTANCE_ID: מזהה המופע של Secure Source Manager.
    • LOCATION: האזור של מופע Secure Source Manager.

    כדי להעניק הרשאת כתיבה, משתמשים בתפקיד roles/securesourcemanager.repoWriter.

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

יכולות לחלוף כמה דקות עד שההרשאות ב-IAM יופצו.

הגדרת Git במכונה הווירטואלית

  1. מתחברים למכונה הווירטואלית באמצעות SSH:

    gcloud compute ssh VM_NAME --project=PROJECT_ID --zone=ZONE
    
  2. במכונה הווירטואלית, מתקינים את Git:

    sudo apt-get install git
    
  3. ב-VM, מגדירים את כלי העזר לפרטי הכניסה של Git כמו שמתואר במאמר בנושא הגדרת פרטי הכניסה. לדוגמה, ב-Linux:

    git config --global credential.'https://*.*.sourcemanager.dev'.helper gcloud.sh
    

אחרי שמגדירים את כלי העזר לפרטי הכניסה, Git משתמש בפרטי הכניסה שמוגדרים כברירת מחדל באפליקציה מחשבון השירות של המכונה הווירטואלית כדי לבצע אימות ל-Secure Source Manager. עכשיו אפשר לשכפל מאגר. כדי לבצע אימות באמצעות Application Default Credentials, צריך להשתמש בכתובת ה-URL של המאגר ב-HTTPS.

יצירת הגדרת כניסה למאגר זהויות של כוח העבודה

אין צורך להשלים את הסעיף הזה אלא אם אתם משתמשים בשירות המשולב לזיהוי עובדים כדי לבצע אימות ל-Secure Source Manager באמצעות ספק זהויות של צד שלישי.

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

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

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

שכפול מאגר

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

git clone REPOSITORY_URL

כאשר REPOSITORY_URL היא כתובת ה-URL של HTTPS או SSH שמוצגת בחלק העליון של דף המאגר שרוצים לשכפל.

שכפול באמצעות Developer Connect

אם קישרתם את מאגר Secure Source Manager ב-Developer Connect, תוכלו לשכפל מאגרים באמצעות פרוקסי Git של Developer Connect. שיבוט באמצעות Developer Connect משתמש ב-IAM כדי לאמת את הגישה למאגר ולהעניק הרשאה לגישה.

לפני שמתחילים

  1. פועלים לפי ההוראות כדי ליצור חיבור למאגר Secure Source Manager ב-Developer Connect.
  2. מוודאים שפרוקסי Git מופעל בחיבור Developer Connect. הוראות להפעלת שרת proxy של Git זמינות במאמר הגדרה ושימוש בשרת proxy של Developer Connect.
  3. צריך להעניק לישויות (principals) שצריכות לשכפל באמצעות ה-URI של ה-proxy את התפקיד roles/developerconnect.gitProxyReader במשאב GitRepositoryLink ב-Developer Connect. במאמר בקרת גישה ל-Developer Connect באמצעות IAM מוסבר איך מקצים תפקידים.

הגדרת פרטי כניסה ל-Developer Connect

מריצים את הפקודה הבאה כדי להוסיף את כלי העזר לאימות של Developer Connect להגדרות Git הגלובליות:

Linux

git config --global credential.'https://*.developerconnect.dev'.helper gcloud.sh

Windows

git config --global credential.https://*.developerconnect.dev.helper gcloud.cmd

שכפול באמצעות ה-URI של ה-proxy

כדי לשכפל מאגר באמצעות ה-URI של ה-proxy של Developer Connect, מריצים את הפקודה הבאה:

git clone https://REGION-git.developerconnect.dev/v1/projects/PROJECT_ID/locations/REGION/connections/CONNECTION_ID/gitRepositoryLinks/LINK_ID

מחליפים את מה שכתוב בשדות הבאים:

  • REGION: האזור של משאבי Developer Connect.
  • PROJECT_ID: מזהה הפרויקט של משאבי Developer Connect.
  • CONNECTION_ID: המזהה של החיבור שלכם ל-Developer Connect.
  • LINK_ID: המזהה של משאב GitRepositoryLink Developer Connect.

הוראות לצפייה בפרטי המשאב GitRepositoryLink מופיעות במאמר gcloud developer-connect connections git-repository-links. אפשר להשתמש בפקודות המשנה list או describe כדי לראות את פרטי הקישור.

העברת מאגר קיים אל Secure Source Manager

כדי לבצע פעולת push למאגר, צריך קודם ליצור מאגר Secure Source Manager שישמש כמאגר מרוחק.

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

  1. כדי להגדיר את מאגר Secure Source Manager כמאגר מרוחק, מריצים את הפקודה הבאה:

    git remote add origin REPOSITORY_URL
    

    REPOSITORY_URL היא כתובת ה-URL של HTTPS או SSH שמוצגת בחלק העליון של דף המאגר.

  2. כדי לבצע push למאגר, מריצים את הפקודה הבאה:

    git push -u origin main
    

מידע נוסף על ניהול קוד מקור ב-Git זמין במאמרי העזרה של Git.

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