כאן מתוארות חלק מהבעיות הנפוצות שאתם עשויים להיתקל בהן במהלך השימוש ב-Application Default Credentials.
אם אתם צריכים מידע נוסף, תוכלו להיעזר בהסבר על השימוש ב-Application Default Credentials, כולל המיקום של פרטי הכניסה.
פרטי הכניסה של המשתמש לא תקינים
אם הבקשה ל-API מחזירה הודעת שגיאה שלפיה ה-API לא תומך בפרטי הכניסה של המשתמש, או שה-API לא מופעל בפרויקט או שלא הוגדר פרויקט לצורכי מכסה, כדאי לעיין במידע הבא.
יש שני סוגים של Google Cloud ממשקי API:
ממשקי API שמבוססים על משאבים: הממשקים האלה משתמשים בפרויקט שמשויך למשאבים שאליהם מתבצעת הגישה, לצורכי חיוב ומכסה.
ממשקי API שמבוססים על לקוחות: הממשקים האלה משתמשים בפרויקט שמשויך ללקוח שבאמצעותו מתבצעת הגישה למשאבים, לצורכי חיוב ומכסה.
כשמספקים פרטי כניסה של משתמש כדי לבצע אימות לממשק API שמבוסס על לקוח, צריך לציין את הפרויקט שבו ישמשו לצורכי חיוב ומכסה. הפרויקט הזה נקרא פרויקט המכסה.
יש כמה דרכים לציין פרויקט למכסה, כולל האפשרויות הבאות:
מעדכנים את קובץ ה-ADC כדי להשתמש בפרויקט אחר כפרויקט המכסה:
gcloud auth application-default set-quota-project YOUR_PROJECT
אם אתם משתמשים ב-CLI של gcloud כדי לבצע קריאה ל-API, אתם יכולים להגדיר את פרויקט המכסה בהגדרות של ה-CLI של gcloud:
gcloud config set billing/quota_project YOUR_PROJECT
כשקוראים ישירות ל-API ל-REST או ל-RPC, השתמשו בכותרת ה-HTTP
x-goog-user-projectבכל בקשה כדי לציין את פרויקט המכסה. לפרטים נוספים תוכלו לקרוא את המאמר הגדרה של פרויקט לצורכי מכסה בבקשת REST.
כדי להשתמש בפרויקט לחיוב צריך ב-IAM את ההרשאה serviceusage.services.use. ההרשאה serviceusage.services.use כלולה בתפקיד 'צרכן השימוש בשירות' ב-IAM. אם אין לכם אף פרויקט שכולל את ההרשאה serviceusage.services.use, תוכלו לבקש מאדמין האבטחה או מהבעלים של הפרויקט להקצות לפרויקט את התפקיד 'צרכן השימוש בשירות'.
מידע נוסף על פרויקטים של מכסות זמין במאמר סקירה כללית על פרויקטים של מכסות. במאמר הגדרת פרויקט לצורכי מכסה מוסברות דרכים נוספות להגדרת פרויקט לצורכי מכסה.
פרטי כניסה שגויים
אם נראה שפרטי הכניסה לא מעניקים לכם את הגישה שאתם מצפים לה, או שהם לא נמצאים, כדאי לבדוק את הדברים הבאים:
אם אתם משתמשים ב-CLI של gcloud כדי לגשת אל Google Cloud בסביבה מקומית, ודאו שאתם מבינים באילו פרטי כניסה אתם משתמשים. כשמשתמשים ב-CLI של gcloud, צריך להשתמש בפרטי הכניסה שסיפקתם ל-CLI של gcloud באמצעות הפקודה
gcloud auth login. אתם לא אמורים להשתמש בפרטי הכניסה שסיפקתם ל-ADC. מידע נוסף על שתי קבוצות פרטי הכניסה האלה זמין במאמר הגדרת אימות ב-CLI של gcloud והגדרת ADC.רק אם משתמשים במפתחות של חשבונות שירות או בקובץ JSON אחר ל-ADC, חשוב לוודא שמשתנה הסביבה
GOOGLE_APPLICATION_CREDENTIALSמוגדר. פרטי הכניסה שמוגדרים במשתנה הסביבה מקבלים עדיפות על פני פרטי כניסה אחרים, כולל איחוד זהויות של עומסי עבודה ל-GKE.מוודאים שחשבון המשתמש שמעביר את הבקשה כולל את התפקידים הנדרשים ב-IAM. אם משתמשים בפרטי כניסה של משתמש, צריך להקצות את התפקידים לכתובת האימייל שמשויכת לחשבון המשתמש. אם משתמשים בחשבון שירות, צריך להקצות את התפקידים הנדרשים לחשבון השירות.
אם בקשת ה-API כוללת מפתח API, מפתח ה-API מקבל עדיפות על פני כל ההגדרות ב-ADC. אם משתנה הסביבה
GOOGLE_APPLICATION_CREDENTIALSמוגדר, ואתם משתמשים במפתח API, ממשק ה-API עשוי להחזיר אזהרה על כך שהמערכת מתעלמת מאישורי הכניסה שמוגדרים ב-ADC. כדי להפסיק את האזהרה, תצטרכו לבטל את ההגדרה של משתנה הסביבהGOOGLE_APPLICATION_CREDENTIALS.
הסוג של פרטי הכניסה לא מזוהה
אם לבקשת ה-API מוחזרת הודעת שגיאה שכוללת את הטקסט Error creating credential
from JSON. Unrecognized credential type, צריך לוודא שאתם משתמשים בפרטי כניסה תקינים. אי אפשר להעביר את פרטי הכניסה ל-ADC באמצעות קובצי Client-ID.
שגיאה שמוחזרת לפרטי כניסה מקומיים מהתחזות לחשבון שירות
לא כל ספריות האימות תומכות בפרטי כניסה מקובץ ADC מקומי שנוצר באמצעות התחזות לחשבון שירות. אם הקריאה מחזירה שגיאה דומה ל-Neither metadata server or valid service
account credentials are found, אי אפשר להשתמש בפרטי כניסה מקומיים עם התחזות למשימה הזו.
כדי להימנע מהשגיאה הזו, צריך ליצור את קובץ ה-ADC מפרטי הכניסה של המשתמש או להריץ את הקוד בסביבה שבה שרת המטא-נתונים זמין (למשל Compute Engine).
פרויקט לא ידוע 764086051850 שנעשה בו שימוש בבקשה
הפרויקט 764086051850 הוא הפרויקט שבו נעשה שימוש ב-CLI של gcloud. אם אתם רואים שגיאות אימות שמתייחסות לפרויקט הזה, סימן שאתם מנסים להשתמש ב-API שמבוסס על לקוחות ולא הגדרתם את הפרויקט ואת הפרויקט לצורכי מכסה בתצורה שלכם.
מידע נוסף זמין במאמר פרטי הכניסה של משתמשים לא תקינים.
הגישה נחסמת כשמשתמשים בהיקפי הרשאות
כשמנסים ליצור קובץ ADC מקומי ומוחזרת שגיאה דומה ל-This app
is blocked או ל-Access blocked: Authorization Error, יכול להיות שאתם מנסים להשתמש בהיקפים שלא נתמכים על ידי פקודת ההגדרה של ADC כברירת מחדל. בדרך כלל הבעיה הזו נגרמת בגלל הוספת היקפי הרשאות לאפליקציות מחוץ ל- Google Cloud, כמו Google Drive.
כברירת מחדל, אסימוני הגישה שנוצרים מקובץ מקומי ל-ADC שנוצר עם פרטי כניסה של משתמש כוללים את
היקף הגישה https://www.googleapis.com/auth/cloud-platform בכל הענן.
כדי לציין הרשאות באופן מפורש, משתמשים בדגל
--scopes עם הפקודה gcloud auth application-default login.
כדי להוסיף היקפי הרשאות לשירותים מחוץ ל- Google Cloud, כמו Google Drive, אפשר לבצע אחת מהפעולות הבאות:
-
אימות OAuth:
יצירת מזהה לקוח OAuth.
מזינים את מזהה הלקוח לפקודה
gcloud auth application-default loginבאמצעות הדגל--client-id-file, ומציינים את ההיקפים באמצעות הדגל--scopes. -
אימות של חשבון שירות: יוצרים חשבון שירות.
מתחזים לחשבון השירות על ידי הזנת כתובת האימייל שלו לפקודה
gcloud auth application-default loginעם הדגל--impersonate-service-account, ומציינים את היקפי הגישה באמצעות הדגל--scopes.