חיבור למאגר Git של צד שלישי

במסמך הזה מוסבר איך לקשר מאגר מרוחק למאגר Dataform. אחרי שמקשרים את המאגרים, אפשר להעביר את השינויים שמבצעים בסביבת הפיתוח של Dataform למאגר Git המרוחק, ולמשוך אותם ממנו.

אפשר לקשר מאגר מרוחק באמצעות Developer Connect,‏ HTTPS או SSH.

בטבלה הבאה מפורטים ספקי Git הנתמכים ושיטות החיבור שזמינות למאגרים שלהם:

ספק Git שיטת החיבור
Azure DevOps Services SSH
Bitbucket ‫Developer Connect (מומלץ), SSH
GitHub ‫Developer Connect (מומלץ), SSH או HTTPS
GitLab ‫Developer Connect (מומלץ), SSH או HTTPS
Secure Source Manager (תצוגה מקדימה) Developer Connect

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

  1. אם הארגון או הפרויקט שלכם מגבילים מאגרי Git מרוחקים באמצעות dataform.restrictGitRemotesמדיניות הארגון, צריך לוודא שמאגר Git מרוחק נוסף לרשימת ההיתרים במדיניות לפני שיוצרים את מאגר Dataform שרוצים לקשר למאגר מרוחק. מידע נוסף זמין במאמר הגבלת מאגרים מרוחקים.
  2. בוחרים או יוצרים מאגר Dataform. תצטרכו את המאגר בהמשך כדי לשתף סוד עם סוכן השירות של Dataform שמוגדר כברירת מחדל.

  3. מוודאים שיש לכם את ההרשאות הנדרשות בספק Git ושהמאגר של Dataform נמצא באזור נתמך.

  4. מפעילים את Developer Connect API.

  5. אם אתם מקשרים את Developer Connect למאגר ב-Bitbucket, ודאו שלטוקן הגישה של המאשר יש גישת כתיבה למאגרים, כדי ש-Dataform יוכל לשלוח שינויים. מידע נוסף זמין במאמר בנושא יצירת אסימוני גישה.

  6. אם אתם מקשרים את Developer Connect למכונה של Secure Source Manager (תצוגה מקדימה), ודאו שיש לכם מכונה פעילה של Secure Source Manager והקצו לסוכן השירות של Developer Connect את התפקיד roles/securesourcemanager.developerConnectLinker בפרויקט של המכונה של Secure Source Manager. מידע נוסף זמין במאמר התחברות ל-Secure Source Manager.

דרישות ומגבלות בנוגע לקישוריות לרשת

לפני שמקשרים את מאגר Git מרוחק ל-Dataform, צריך לוודא שהגדרות הרשת עומדות בדרישות של שיטת הקישור שבחרתם.

חיבורים לרשת פרטית

ב-Dataform אין תמיכה בחיבורים ישירים לכתובות IP פרטיות (לדוגמה, 10.x.x.x,‏ 172.16.x.x-172.31.x.x או 192.168.x.x) של מארחי Git מקומיים או מאגרים ברשתות פרטיות באמצעות HTTPS או SSH. זה כולל גישה באמצעות ענן וירטואלי פרטי (VPC),‏ VPN או Cloud Interconnect.

כדי להתחבר למאגר ברשת פרטית, או אם מארח Git נמצא מאחורי חומת אש, צריך להתחבר באמצעות Developer Connect.

חיבורים לרשת ציבורית

כדי להתחבר למאגר Git מרוחק באמצעות HTTPS או SSH, למארח Git צריכה להיות כתובת IP ציבורית.

אם אתם מתחברים למאגר מרוחק מוגן עם כתובת IP ציבורית באמצעות HTTPS או SSH, אתם צריכים להוסיף את טווחי כתובות ה-IP ליציאה של Dataform הנדרשים לכללי חומת האש.

דרישות של VPC Service Controls

אם בפרויקט שלכם נעשה שימוש ב-VPC Service Controls, אתם צריכים להגדיר את dataform.restrictGitRemotes מדיניות הארגון כדי להתחבר לכל מאגר Git של צד שלישי. מידע נוסף זמין במאמר הגבלת מאגרים מרוחקים.

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

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

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

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

כדי לקשר מאגר מרוחק באמצעות Developer Connect, צריך להקצות את התפקידים Developer Connect Token Accessor‏ (roles/developerconnect.tokenAccessor) ו-Developer Connect Git Proxy User‏ (roles/developerconnect.gitProxyUser) לסוכן השירות שמוגדר כברירת מחדל ב-Dataform. מזהה סוכן השירות של Dataform שמוגדר כברירת מחדל הוא בפורמט הבא:

service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com

חיבור מאגר מרוחק באמצעות Developer Connect

Developer Connect מפשט את השילוב של ספקי Git חיצוניים עם מאגרי Dataform. הוא מספק ממשק מודרך שמבטל את הצורך בניהול ידני של סודות.

באמצעות Developer Connect, אתם יכולים להתחבר למאגרים מרוחקים ברשתות באירוח פרטי, כמו סביבות מקומיות או עננים וירטואליים פרטיים (VPC), בלי לחשוף אותם לאינטרנט הציבורי.

הכנה לחיבורים לרשת פרטית

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

  • מרחב השמות ושם השירות של Service Directory שמפנה למארח ה-Git הפנימי.
  • אישור של רשות אישורים בפורמט PEM (בגודל מקסימלי של 10KB), אם המארח משתמש ברשות אישורים פרטית או בחתימה עצמית.
  • אימות שאישור ה-SSL של מארח ה-Git כולל שם חלופי של בעלים (SAN) שתואם ל-URI של המארח.

למידע נוסף על הגדרת חיבורים לרשתות באירוח פרטי:

יצירת חיבור חדש ב-Developer Connect

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

Bitbucket

  1. נכנסים לדף Dataform במסוף Google Cloud .

    כניסה ל-Dataform

  2. בוחרים את המאגר.

  3. עוברים אל Settings ולוחצים על Connect with Git.

  4. בחלונית Link to remote repository, בקטע Remote Git repository protocol, בוחרים באפשרות Developer Connect.

  5. בתפריט לבחירת מאגרים, לוחצים על קישור מאגר חדש.

  6. בחלונית Link Git repositories via Developer Connect, לוחצים על Create new connection.

  7. בוחרים באפשרות Bitbucket כספק.

  8. מציינים את אזור החיבור ואת שם החיבור.

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

  10. לוחצים על המשך, בוחרים את המאגרים המרוחקים לקשר ולוחצים על קישור.

  11. ב-Dataform, בוחרים את המאגר המרוחק ואת ההסתעפות שמוגדרת כברירת מחדל.

  12. כדי להשלים את ההגדרה, לוחצים על קישור.

GitHub

  1. נכנסים לדף Dataform במסוף Google Cloud .

    כניסה ל-Dataform

  2. בוחרים את המאגר.

  3. עוברים אל Settings ולוחצים על Connect with Git.

  4. בחלונית Link to remote repository, בקטע Remote Git repository protocol, בוחרים באפשרות Developer Connect.

  5. בתפריט לבחירת מאגרים, לוחצים על קישור מאגר חדש.

  6. בחלונית Link Git repositories via Developer Connect, לוחצים על Create new connection.

  7. בוחרים באפשרות GitHub בתור הספק.

  8. מציינים את אזור החיבור ואת שם החיבור.

  9. כדי להפעיל את תהליך האימות של OAuth, לוחצים על Continue ואז מבצעים את הפעולות הבאות:

    1. לוחצים על הבנתי, אפשר להמשיך.
    2. בוחרים באפשרות Install the GitHub App on another GitHub account ופועלים לפי ההנחיות כדי לאשר את הגישה לחשבון GitHub ולמאגרים ספציפיים.
    3. בוחרים את החשבון שבו רוצים להתקין את אפליקציית Dataform GitHub.
    4. בקטע Repository access, בוחרים אם לתת גישה לכל המאגרים או רק למאגרים נבחרים.
    5. לוחצים על Save.
  10. בוחרים את המאגרים המרוחקים לקישור ולוחצים על קישור.

  11. ב-Dataform, בוחרים את המאגר המרוחק ואת ענף ברירת המחדל.

  12. כדי להשלים את ההגדרה, לוחצים על קישור.

GitLab

  1. נכנסים לדף Dataform במסוף Google Cloud .

    מעבר אל Dataform

  2. בוחרים את המאגר.

  3. עוברים אל Settings ולוחצים על Connect with Git.

  4. בחלונית Link to remote repository, בקטע Remote Git repository protocol, בוחרים באפשרות Developer Connect.

  5. בתפריט לבחירת מאגרים, לוחצים על קישור מאגר חדש.

  6. בחלונית Link Git repositories via Developer Connect (קישור מאגרי Git באמצעות Developer Connect), בוחרים באפשרות Create new connection (יצירת חיבור חדש).

  7. בוחרים באפשרות GitLab בתור הספק.

  8. מציינים את אזור החיבור ואת שם החיבור.

  9. מזינים את טוקן הגישה ל-API ואת טוקן הגישה לקריאה של ה-API. למידע על איך לעשות זאת, ראה יצירת טוקני גישה.

  10. לוחצים על Continue, בוחרים את המאגרים המרוחקים שרוצים לקשר ולוחצים על Link.

  11. ב-Dataform, בוחרים את המאגר המרוחק ואת ההסתעפות שמוגדרת כברירת מחדל.

  12. כדי להשלים את ההגדרה, לוחצים על קישור.

Secure Source Manager

  1. נכנסים לדף Dataform במסוף Google Cloud .

    מעבר אל Dataform

  2. בוחרים את המאגר.

  3. עוברים אל Settings ולוחצים על Connect with Git.

  4. בחלונית Link to remote repository, בקטע Remote Git repository protocol, בוחרים באפשרות Developer Connect.

  5. בתפריט לבחירת מאגרים, לוחצים על קישור מאגר חדש.

  6. בחלונית Link Git repositories via Developer Connect (קישור מאגרי Git באמצעות Developer Connect), בוחרים באפשרות Create new connection (יצירת חיבור חדש).

  7. בוחרים באפשרות Secure Source Manager בתור הספק.

  8. מציינים את אזור החיבור ואת שם החיבור. האזור של החיבור צריך להיות זהה לאזור של מופע Secure Source Manager.

  9. ברשימה Instance, בוחרים את מופע Secure Source Manager.

  10. מוודאים ששרת ה-proxy של Developer Connect מופעל. שרת ה-proxy מופעל כברירת מחדל בקטע Show more, והוא נדרש כדי ש-Dataform יוכל לגשת למאגרים של Secure Source Manager.

  11. לוחצים על המשך, בוחרים את המאגרים המרוחקים לקשר ולוחצים על קישור.

  12. ב-Dataform, בוחרים את המאגר המרוחק ואת ההסתעפות שמוגדרת כברירת מחדל.

  13. כדי להשלים את ההגדרה, לוחצים על קישור.

שימוש בחיבור קיים של Developer Connect

כדי לקשר מאגר מרוחק לחיבור קיים של Developer Connect:

  1. נכנסים לדף Dataform במסוף Google Cloud .

    מעבר אל Dataform

  2. בוחרים את המאגר.

  3. עוברים אל הגדרות ולוחצים על Connect with Git (קישור ל-Git).

  4. בחלונית Link to remote repository, בקטע Remote Git repository protocol, בוחרים באפשרות Developer Connect.

  5. בתפריט לבחירת המאגר, בוחרים מאגר שמקושר באמצעות חיבור קיים של Developer Connect.

  6. ב-Dataform, בוחרים את המאגר המרוחק ואת ענף ברירת המחדל.

  7. כדי להשלים את ההגדרה, לוחצים על קישור.

חיבור מאגר מרוחק באמצעות SSH

כדי לחבר מאגר מרוחק באמצעות SSH, צריך ליצור מפתח SSH וסוד ב-Secret Manager. מפתח ה-SSH מורכב ממפתח SSH ציבורי וממפתח SSH פרטי. אתם צריכים לשתף את מפתח ה-SSH הציבורי עם ספק ה-Git, וליצור סוד ב-Secret Manager עם מפתח ה-SSH הפרטי. אחר כך משתפים את הסוד עם סוכן השירות של Dataform שמוגדר כברירת מחדל.

‫Dataform משתמש בסוד עם מפתח SSH פרטי כדי להיכנס לספק Git שלכם ולבצע שינויים בשם המפתחים. ‫Dataform מבצעת את השמירות האלה באמצעות כתובת האימייל של המפתח Google Cloud , כדי שתוכלו לדעת מי ביצע כל שמירה.

כדי לקשר מאגר מרוחק למאגר ב-Dataform באמצעות SSH:

  1. בספק Git, מבצעים אחת מהפעולות הבאות:

    Azure DevOps Services

    1. ב-Azure DevOps Services, יוצרים מפתח SSH פרטי.
    2. מעלים את מפתח ה-SSH הציבורי למאגר שלכם ב-Azure DevOps Services.

    Bitbucket

    1. ב-Bitbucket, יוצרים מפתח SSH פרטי.
    2. מעלים את המפתח הציבורי של SSH למאגר Bitbucket.

    GitHub

    1. ב-GitHub, יוצרים מפתח SSH פרטי.
    2. מעלים את מפתח ה-SSH הציבורי של GitHub למאגר שלכם ב-GitHub.

    GitLab

    1. ב-GitLab, יוצרים מפתח SSH פרטי.
    2. מעלים את מפתח ה-SSH הציבורי של GitLab למאגר GitLab.
  2. ב-Secret Manager, יוצרים סוד ומגדירים את מפתח ה-SSH הפרטי כערך הסוד.

    1. נותנים לסוכן השירות שמוגדר כברירת מחדל ב-Dataform גישה לסוד.

      סוכן השירות שמוגדר כברירת מחדל ב-Dataform הוא בפורמט הבא:

      service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
      
    2. מקצים לחשבון השירות את התפקיד roles/secretmanager.secretAccessor.

  3. נכנסים לדף Dataform במסוף Google Cloud .

    כניסה ל-Dataform

  4. בוחרים את מאגר Dataform שרוצים לקשר למאגר המרוחק.

  5. בדף המאגר, לוחצים על Settings > Connect with Git.

  6. בחלונית Link to remote repository, בשדה Remote Git repository URL, מזינים את כתובת ה-URL של מאגר Git מרוחק, שמסתיימת ב-.git.

    כתובת ה-URL של מאגר Git המרוחק צריכה להיות באחד מהפורמטים הבאים:

    • כתובת URL אבסולוטית: ssh://git@{host_name}[:{port}]/{repository_path}, port היא אופציונלית.
    • כתובת URL שדומה ל-SCP: ‏ git@{host_name}:{repository_path}.
  7. בשדה Default remote branch name, מזינים את השם של ענף הפיתוח הראשי של מאגר Git המרוחק.

  8. בתפריט הנפתח Secret, בוחרים את הסוד למאגר Git המרוחק.

  9. בשדה ערך המפתח הציבורי של המארח ב-SSH, מזינים את המפתח הציבורי של המארח של ספק Git.

    Azure DevOps Services

    1. כדי לאחזר את המפתח הציבורי של המארח של Azure DevOps Services, מריצים את הפקודה הבאה במסוף:

      ssh-keyscan -t rsa ssh.dev.azure.com
      
    2. מעתיקים את אחד מהמפתחות שנוצרו, בלי ssh.dev.azure.com בתחילת השורה. הערך שמעתיקים צריך להיות בפורמט הבא:

      ALGORITHM BASE64_KEY_VALUE
      

      לדוגמה:

      ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7Hr1oTWqNqOlzGJOfGJ4NakVyIzf1rXYd4d7wo6jBlkLvCA4odBlL0mDUyZ0/QUfTTqeu+tm22gOsv+VrVTMk6vwRU75gY/y9ut5Mb3bR5BV58dKXyq9A9UeB5Cakehn5Zgm6x1mKoVyf+FFn26iYqXJRgzIZZcZ5V6hrE0Qg39kZm4az48o0AUbf6Sp4SLdvnuMa2sVNwHBboS7EJkm57XQPVU3/QpyNLHbWDdzwtrlS+ez30S3AdYhLKEOxAG8weOnyrtLJAUen9mTkol8oII1edf7mWWbWVf0nBmly21+nZcmCTISQBtdcyPaEno7fFQMDD26/s0lfKob4Kw8H
      

      מוודאים שהמפתח הזה עדיין מעודכן ב-Azure DevOps Services.

    Bitbucket

    1. כדי לאחזר את מפתח המארח הציבורי של Bitbucket, מריצים את הפקודה הבאה בטרמינל:

      curl https://bitbucket.org/site/ssh
      
    2. הפקודה מחזירה רשימה של מפתחות מארח ציבוריים. בוחרים אחד מהמפתחות ברשימה ומעתיקים אותו, בלי bitbucket.org בתחילת השורה. הערך שמעתיקים צריך להיות בפורמט הבא:

      ALGORITHM BASE64_KEY_VALUE
      

      לדוגמה:

      ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIazEu89wgQZ4bqs3d63QSMzYVa0MuJ2e2gKTKqu+UUO
      

      מוודאים שהמפתח הזה עדיין מעודכן ב-Bitbucket.

    GitHub

    1. כדי לאחזר את מפתח המארח הציבורי של GitHub, אפשר לעיין בטביעות האצבע של מפתחות ה-SSH של GitHub.
    2. הדף מכיל רשימה של מפתחות מארח ציבוריים. בוחרים אחת מהן ומעתיקים אותה, בלי github.com מתחילת השורה. הערך שמעתיקים צריך להיות בפורמט הבא:

      ALGORITHM BASE64_KEY_VALUE
      

      לדוגמה:

      ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl
      

      מוודאים שהמפתח הזה עדיין מעודכן ב-GitHub.

    GitLab

    1. כדי לאחזר את המפתח הציבורי של המארח ב-GitLab, עיינו ברשומות SSH known_hosts.
    2. הדף מכיל רשימה של מפתחות מארח ציבוריים. בוחרים אחת מהן ומעתיקים אותה, בלי gitlab.com מתחילת השורה. הערך שמעתיקים צריך להיות בפורמט הבא:

      ALGORITHM BASE64_KEY_VALUE
      

      לדוגמה:

      ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAfuCHKVTjquxvt6CM6tdG4SLp1Btn/nOeHHE5UOzRdf
      

      צריך לוודא שהמפתח הזה עדיין מעודכן ב-GitLab.

  10. לוחצים על קישור.

חיבור למאגר מרוחק באמצעות HTTPS

כדי לקשר מאגר מרוחק דרך HTTPS, צריך ליצור סוד ב-Secret Manager עם אסימון גישה אישי, ולשתף את הסוד עם סוכן השירות של Dataform שמוגדר כברירת מחדל.

לאחר מכן, Dataform משתמש באסימון הגישה כדי להיכנס לספק Git ולבצע שינויים בשם המפתחים. ‫Dataform מבצע את פעולות השמירה האלה באמצעות כתובת האימייל של המפתח ב- Google Cloud , כדי שתוכלו לדעת מי ביצע כל פעולת שמירה.

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

  1. בספק Git, מבצעים את הפעולות הבאות:

    GitHub

    1. ב-GitHub, יוצרים אסימון גישה אישי עם הרשאות מפורטות או אסימון גישה אישי קלאסי.

      • כדי ליצור אסימון גישה אישי מפורט ב-GitHub, מבצעים את הפעולות הבאות:
      1. בוחרים את המאגרים שרוצים לתת להם גישה ולוחצים על המאגר שאליו רוצים להתחבר.

      2. הענקת הרשאת קריאה וכתיבה לתוכן המאגר.

      3. מגדירים את זמן התפוגה של האסימון בהתאם לצרכים שלכם.

      • כדי להשתמש באסימון גישה אישי קלאסי של GitHub:
      1. נותנים ל-Dataform את ההרשאה repo.

      2. מגדירים זמן תפוגה של אסימון שמתאים לצרכים שלכם.

    2. אם בארגון שלכם משתמשים בכניסה יחידה (SSO) ב-SAML, צריך לאשר את האסימון.

    GitLab

    1. ב-GitLab, יוצרים אסימון גישה אישי של GitLab.

    2. נותנים לטוקן את השם dataform.

      השם של טוקן הגישה האישי של GitLab חייב להיות dataform.

    3. נותנים ל-Dataform את ההרשאות api,‏ read_repository ו-write_repository.

    4. מגדירים זמן תפוגה של אסימון שמתאים לצרכים שלכם.

  2. ב-Secret Manager, יוצרים סוד שמכיל את אסימון הגישה האישי של המאגר המרוחק.

  3. נותנים לסוכן השירות של Dataform שמוגדר כברירת מחדל גישה לסוד.

    סוכן השירות שמוגדר כברירת מחדל ב-Dataform הוא בפורמט הבא:

    service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
    
    1. מקצים לסוכן השירות את התפקיד roles/secretmanager.secretAccessor.
  4. נכנסים לדף Dataform במסוף Google Cloud .

    מעבר אל Dataform

  5. בוחרים את המאגר ב-Dataform שרוצים לקשר למאגר המרוחק.

  6. בדף המאגר, לוחצים על Settings > Connect with Git.

  7. בחלונית Link to remote repository, בשדה Remote Git repository URL, מזינים את כתובת ה-URL של מאגר Git מרוחק, שמסתיימת ב-.git.

    כתובת ה-URL של מאגר Git המרוחק לא יכולה להכיל שמות משתמשים או סיסמאות.

  8. בשדה Default remote branch name (שם ברירת המחדל של הענף המרוחק), מזינים את השם של ענף הפיתוח הראשי של מאגר ה-Git המרוחק.

  9. בתפריט הנפתח Secret, בוחרים את הסוד של מאגר Git המרוחק.

  10. לוחצים על קישור.

עריכת החיבור למאגר המרוחק

כדי לערוך חיבור בין מאגר Dataform לבין מאגר Git מרוחק, פועלים לפי השלבים הבאים:

  1. נכנסים לדף Dataform במסוף Google Cloud .

    כניסה ל-Dataform

  2. לוחצים על המאגר שרוצים לערוך.

  3. בדף המאגר, לוחצים על הגדרות > עריכת חיבור Git.

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

  5. לוחצים על עדכון.

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