האימות ב-Artifact Registry שונה בהעלאה ובהורדה של מודולי Go ארוזים. כשיוצרים חבילה של מודול Go ומעלים אותו ל-Artifact Registry, ה-CLI של gcloud מחפש פרטי כניסה בסביבה שלכם כדי להגדיר אימות, לפי הסדר הבא, אלא אם מעבירים את הדגל --json_key כדי להשתמש במפתח של חשבון שירות.
Application Default Credentials (ADC), אסטרטגיה שמחפשת פרטי כניסה בסדר הבא:
פרטי הכניסה מוגדרים במשתנה הסביבה
GOOGLE_APPLICATION_CREDENTIALS.פרטי הכניסה שחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine, Google Kubernetes Engine, Cloud Run, App Engine או בפונקציות של Cloud Run מספק.
פרטי כניסה שסופקו על ידי Google Cloud CLI, כולל פרטי כניסה של משתמשים מהפקודה
gcloud auth application-default login.
המשתנה GOOGLE_APPLICATION_CREDENTIALS הופך את החשבון לאימות למפורש, וכך קל יותר לפתור בעיות. אם לא משתמשים במשתנה, צריך לוודא שלחשבונות ש-ADC עשוי להשתמש בהם יש את ההרשאות הנדרשות. לדוגמה, לחשבון השירות שמוגדר כברירת מחדל למכונות וירטואליות ב-Compute Engine, לצמתים ב-Google Kubernetes Engine ולעדכונים ב-Cloud Run יש גישת קריאה בלבד למאגרים. אם אתם מתכוונים להעלות נתונים מהסביבות האלה באמצעות חשבון השירות שמוגדר כברירת מחדל, אתם צריכים לשנות את ההרשאות.
כשמורידים מודולים של Go שנארזו כדי להשתמש בהם כתלות מ-Artifact Registry, קובץ ה-binary של Go משתמש בפרטי הכניסה בקובץ netrc כדי לבצע אימות מול Artifact Registry. כדי לפשט את תהליך האימות, אפשר להשתמש בכלי העזר לאימות של Go כדי לרענן את האסימונים בקובץ netrc לצורך אימות ב-Artifact Registry.
אפשר להגדיר את המיקום של קובץ netrc באמצעות משתנה הסביבה netrc.
אם המשתנה NETRC לא מוגדר, הפקודה go תקרא $HOME/.netrc בפלטפורמות דמויות UNIX או %USERPROFILE%\_netrc ב-Windows.
כשמשתמשים בפרטי כניסה בקובץ netrc, Artifact Registry תומך בשיטות האימות הבאות:
- פרטי כניסה לטווח קצר (מומלץ)
- משתמשים בכלי העזר לפרטי כניסה של Go ב-Artifact Registry כדי לעדכן את טוקני האימות בקובץ netrc באמצעות פרטי הכניסה בסביבה, או מוסיפים ידנית את פרטי הכניסה שלכם ב-Artifact Registry לקובץ netrc.
- שימוש במפתח של חשבון שירות
- משתמשים באפשרות הזו כשאי אפשר להשתמש בפרטי כניסה בסביבה שלכם לאימות. אתם יכולים להשתמש בכלי העזר של Go לניהול פרטי כניסה ב-Artifact Registry כדי להוסיף את המפתח הלא מוצפן של חשבון השירות לקובץ netrc, או להוסיף אותו לקובץ באופן ידני.
לפני שמתחילים
- Install Go 1.15 or later.
מתקינים את התוסף package-go-module ל-CLI של gcloud:
gcloud components install package-go-module
הגדרת סביבת Go
מנחים את Go להוריד מודולים מ-Artifact Registry, משרת ה-proxy הציבורי של מודולי Go, ואז מהמקור, לפי הסדר הזה:
export GOPROXY=https://LOCATION-go.pkg.dev/PROJECT/REPOSITORY,https://proxy.golang.org,direct
מחליפים את מה שכתוב בשדות הבאים:
- LOCATION הוא המיקום האזורי או המיקום במספר אזורים של המאגר.
- PROJECT הוא Google Cloud מזהה הפרויקט.
- REPOSITORY הוא שם המאגר שבו מאוחסנת החבילה.
להחריג את המודול שלכם מבדיקה באמצעות מסד הנתונים הציבורי של סכומי הביקורת:
export GONOSUMDB=MODULE_PATH_REGEX
מחליפים את MODULE_PATH_REGEX בנתיב המודול או בביטוי רגולרי אם רוצים להחריג כמה מודולים.
לדוגמה, כדי להחריג את המודול
example.com/fooמבדיקה באמצעות מסד הנתונים הציבורי של סכומי הבדיקה, מריצים את הפקודה הבאה:export GONOSUMDB=example.com/foo
הפקודה הבאה מוציאה מכלל הבדיקה באמצעות מסד הנתונים הציבורי של סכומי הביקורת את כל המודולים שנתיבי המודולים שלהם מתחילים ב-
example.com:export GONOSUMDB=example.com/*
הוספת פרטי כניסה של Artifact Registry לקובץ netrc
מריצים את הפקודה הבאה כדי להוסיף את פרטי הכניסה שלכם ל-Artifact Registry לקובץ netrc באמצעות כלי העזר של Go לפרטי כניסה:
GOPROXY=proxy.golang.org \ go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.4.0 \ add-locations --locations=LOCATION \ --json_key=PATH_TO_JSON_KEYכאשר:
- LOCATION הוא המיקום האזורי או המיקום במספר אזורים של המאגר. כדי להוסיף כמה מיקומים, מזינים אותם כרשימה מופרדת באמצעות פסיקים.
PATH_TO_JSON_KEY אופציונלי. הנתיב למפתח של חשבון השירות.
הכלי לעזרה בהוספת פרטי כניסה של Go מוסיף הגדרות לקובץ netrc לצורך אימות ב-Artifact Registry. אם מעבירים את האפשרות
--json_key, המפתח מתווסף לקובץ netrc לאימות סיסמה.
אם אתם משתמשים בפרטי כניסה לטווח קצר לאימות ב-Artifact Registry, תצטרכו לרענן את אסימון ה-OAuth על ידי הפעלת הפקודה הבאה לפני השימוש במודול כתלות:
GOPROXY=proxy.golang.org \ go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.4.0 refresh
אימות באמצעות מפתח של חשבון שירות
משתמשים בגישה הזו כשנדרש אימות באמצעות שם משתמש וסיסמה.
מפתחות של חשבונות שירות הם פרטי כניסה לטווח ארוך. כדי להגביל את הגישה למאגרי הקוד, אפשר להיעזר בהנחיות הבאות:
- מומלץ להשתמש בחשבון שירות ייעודי לאינטראקציה עם מאגרי מידע.
- מקצים את התפקיד ב-Artifact Registry עם ההרשאות המינימליות שנדרשות לחשבון השירות. לדוגמה, אפשר להקצות את התפקיד Artifact Registry Reader לחשבון שירות שמוריד רק ארטיפקטים.
- אם קבוצות בארגון שלכם צריכות רמות גישה שונות למאגרי מידע ספציפיים, צריך להעניק גישה ברמת מאגר המידע ולא ברמת הפרויקט.
- חשוב לפעול לפי השיטות המומלצות לניהול פרטי כניסה.
כדי להגדיר אימות:
יוצרים חשבון שירות שיפעל בשם האפליקציה, או בוחרים חשבון שירות קיים שמשמש לאוטומציה.
כדי להגדיר אימות באמצעות Artifact Registry, תצטרכו את המיקום של קובץ המפתח של חשבון השירות. בחשבונות קיימים, אפשר לראות את המפתחות וליצור מפתחות חדשים בדף 'חשבונות שירות'.
מקצים לחשבון השירות את התפקיד המתאים ב-Artifact Registry כדי לספק גישה למאגר.
מריצים את הפקודה הבאה כדי להוסיף את פרטי הכניסה של חשבון השירות לקובץ netrc באמצעות הכלי לעזרה בפרטי הכניסה של Go:
GOPROXY=proxy.golang.org \ go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.4.0 \ add-locations --locations=LOCATION \ --json_key=PATH_TO_JSON_KEYכאשר:
- LOCATION הוא המיקום האזורי או המיקום במספר אזורים של המאגר. כדי להוסיף כמה מיקומים, מזינים אותם כרשימה מופרדת באמצעות פסיקים.
PATH_TO_JSON_KEY הוא הנתיב אל קובץ המפתח של חשבון השירות בפורמט JSON.
הכלי לעזרה בפרטי הכניסה של Go מוסיף את מפתח חשבון השירות לקובץ netrc לאימות סיסמה.
אפשר גם להוסיף ידנית את המפתח של חשבון השירות לקובץ netrc בפורמט הבא:
machine LOCATION.pkg.dev
login _json_key_base64
password KEY
מחליפים את מה שכתוב בשדות הבאים:
- LOCATION עם המיקום האזורי או המיקום במספר אזורים של המאגר.
- KEY במפתח בקידוד Base64 בקובץ המפתח של חשבון השירות.
הוספת כלי העזר לפרטי כניסה של Go אל GONOPROXY
לפני שמשתמשים בכלי העזר לאישורי גישה של Go, צריך להוסיף אותו לרשימה GONOPROXY כדי לחייב את Go להוריד אותו ישירות מ-GitHub. אם יש מודולים אחרים שאתם רוצים להוריד ישירות מהמקור, אתם יכולים להוסיף אותם לרשימה שמופרדת באמצעות פסיקים, כמו בדוגמה הבאה:
export GONOPROXY=MODULE_PATH1, MODULE_PATH2
כאשר MODULE_PATH1 ו-MODULE_PATH2 הם נתיבי מודולים של מודולים שצריך להוריד מהמקור.
כדי להוסיף את כלי העזר לפרטי הכניסה של Go לרשימת GONOPROXY ולהריץ אותו כדי להגדיר את פרטי הכניסה:
מוסיפים את כלי העזר לפרטי כניסה של Go אל
GONOPROXYexport GONOPROXY=github.com/GoogleCloudPlatform/artifact-registry-go-tools
מריצים את הפקודה הבאה כדי להוסיף את פרטי הכניסה של Artifact Registry לקובץ netrc באמצעות כלי חבילת המודולים של Go:
GOPROXY=proxy.golang.org \ go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.4.0 \ add-locations --locations=LOCATION \ [--json_key=path/to/service/account/key.json]כאשר LOCATION הוא המיקום האזורי או במספר אזורים של המאגר. כדי להוסיף כמה מיקומים, מזינים אותם כרשימה מופרדת בפסיקים.
הכלי לעזרה בהוספת פרטי כניסה של Go מוסיף הגדרות לקובץ netrc לצורך אימות ב-Artifact Registry. אם מעבירים את האפשרות
--json_key, המפתח מתווסף לקובץ netrc לצורך אימות סיסמה.
המאמרים הבאים
- כדאי לנסות את המדריך למתחילים.
- ניהול מודולים של Go