במאמר הזה מוסבר איך לפתור שגיאות נפוצות שקשורות לאימות עומסי עבודה לעומסי עבודה אחרים באמצעות mTLS.
מידע נוסף זמין במאמר פתרון בעיות באיחוד שירותי אימות הזהות של עומסי עבודה.
לפני שמתחילים
-
אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות.
אימות הוא תהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי API ולשירותים של Google Cloud . כדי להריץ קוד או דוגמאות מסביבת פיתוח מקומית, אפשר לבצע אימות ל-Compute Engine באחת מהדרכים הבאות:
-
התקינו את ה-CLI של Google Cloud. אחר כך, אתחלו את ה-CLI של Google Cloud באמצעות הפקודה הבאה:
gcloud initאם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
- הגדרת אזור ותחום כברירת מחדל
-
ספריית פרטי הכניסה שנוצרה לא קיימת
אם מופיעה השגיאה /var/run/secrets/workload-spiffe-credentials
directory doesn't exist (הספרייה לא קיימת), צריך לבצע את הפעולות הבאות:
כדי לוודא שמופעלות זהויות מנוהלות של עומסי עבודה, צריך להשתמש באחד מהממשקים הבאים כדי לוודא שמופעלת האפשרות לאימות מעומס עבודה לעומס עבודה במופע של Compute:
המסוף
נכנסים לדף VM instances במסוף Google Cloud .
בעמודה Name (שם) בדף VM instances (מופעים של מכונות וירטואליות), לוחצים על שם המופע כדי לראות פרטים נוספים על המופע.
בקטע אבטחה וגישה בדף פרטים, מוודאים שהערך של 'אישורים של זהויות עומס עבודה' הוא 'מופעל'.
gcloud
כדי לראות אם התכונה 'זהויות מנוהלות לעומסי עבודה' מופעלת עבור מופע של מחשוב, משתמשים בפקודה
gcloud alpha compute instances describe.gcloud alpha compute instances describe INSTANCE_NAME \ --zone=ZONE \ --format="table(name,zone,identityCertificate)"מחליפים את מה שכתוב בשדות הבאים:
INSTANCE_NAME: השם של המכונה.
ZONE: האזור שבו נמצאת המכונה.
REST
כדי לראות את הפרטים של מכונת חישוב, שולחים בקשת
GETאל ה-methodinstances.get. אפשר להוסיף פרמטר$fieldsשל שאילתה לבקשה כדי להגביל את הפלט רק לשדות שמעניינים אתכם.GET https://compute.googleapis.com/compute/alpha/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME$fields=name,identityCertificate,identity
מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט שבו נמצא המופע
ZONE: האזור שבו נמצאת המכונה
INSTANCE_NAME: השם של המכונה
בודקים את ערכי המופעים של
identityCertificateו-identity.אם הנכס
identityCertificateמוגדר לערךfalse, אז מופע המחשוב הזה לא תומך בתכונה הזו.כדי לפתור את הבעיה הזו, צריך ליצור מופע חדש שתומך באימות מעומס עבודה לעומס עבודה. פרטים נוספים זמינים במאמר בנושא הפעלת זהויות מנוהלות של עומסי עבודה במכונות וירטואליות קיימות.
מוודאים שהמכונה הווירטואלית מריצה מערכת הפעלה אורחת עם Compute Engine guest agent מגרסה 20231103.01 ואילך. כדי לראות את הפלט של היציאה הטורית ולקבוע את הגרסה הנוכחית של סוכן האורח ב-Compute Engine, משתמשים ב-gcloud CLI:
gcloud compute instances get-serial-port-output INSTANCE_NAME | grep "GCE Agent Started"מחליפים את INSTANCE_NAME בשם של מכונת ה-Compute.
הוראות לעדכון סוכן האורח של Compute Engine מפורטות במאמר בנושא עדכון סביבת האורח.
בודקים את יומני השירות כדי לוודא שהטיימר של
gce-workload-cert-refresh.timersystemd הצליח לאחזר את פרטי הכניסה של עומס העבודה ואת חבילת האישורים.# View timer logs to see when the gce-workload-cert-refresh.timer last ran journalctl -u gce-workload-cert-refresh.timer # View service logs from gce-workload-cert-refresh.service journalctl -u gce-workload-cert-refresh.service
ספריית פרטי הכניסה שנוצרה מכילה רק את הקובץ config_status
יכול להיות שהספרייה של פרטי הכניסה שנוצרו, /var/run/secrets/workload-spiffe-credentials, תכיל רק את config_status, מסיבות שונות. כדי לפתור את הבעיה, פועלים לפי השלבים הבאים.
בודקים את התוכן של הקובץ
config_statusכדי לוודא שהתכונה 'זהויות של עומסי עבודה מנוהלים' מופעלת. אם התכונה לא מופעלת באמצעות הערכים המתאימים, קובץ היומן מכיל את הודעת השגיאהworkload certificate feature not enabled.כדי לפתור את הבעיה, צריך ליצור מופע חדש של Compute שתומך באימות מעומס עבודה לעומס עבודה, באמצעות אחת מהשיטות הבאות:
בודקים את התוכן של קובץ
config_statusכדי לוודא שאין שגיאות בגלל ערכי מאפיינים חסרים או הגדרה לא תקינה של הנפקת האישור או של הגדרת האמון. אם יש שגיאות כאלה, צריך לעדכן את ערכי ההגדרה לפי השלבים שמפורטים במאמר עדכון ההגדרה של הנפקת אישורים ושל אמון.מוודאים שההרשאות הנכונות ניתנו לזהויות המנוהלות של עומסי העבודה במאגר הזהויות של עומסי העבודה, כדי לגשת למאגרי CA משניים. משתמשים בפקודה הבאה:
gcloud privateca pools get-iam-policy SUBORDINATE_CA_POOL_ID \ --location=SUBORDINATE_CA_POOL_REGION
מחליפים את מה שכתוב בשדות הבאים:
- SUBORDINATE_CA_POOL_ID: המזהה של מאגר ה-CA המשני.
- SUBORDINATE_CA_POOL_REGION: האזור של מאגר CA המשני.
הפלט של הפקודה הזו צריך לכלול את הפרטים הבאים:
bindings: - members: - principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/name/locations/global/workloadIdentityPools/POOL_ID/* - role: roles/privateca.poolReader - members: - principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/name/locations/global/workloadIdentityPools/POOL_ID/* role: roles/privateca.workloadCertificateRequesterבדוגמה הקודמת:
- PROJECT_NUMBER הוא מספר הפרויקט.
- POOL_ID הוא המזהה של מאגר הזהויות של עומסי העבודה.
אם הפלט לא דומה לדוגמה שלמעלה, צריך להעניק את ההרשאות הנדרשות כמו שמתואר במאמר איך מאשרים לזהויות מנוהלות של עומסי עבודה לבקש אישורים ממאגר רשות האישורים.
אם קובץ
config_statusלא מכיל הודעות שגיאה, צריך לבדוק את הערך שלiam.googleapis.com/workload-identityבקובץ.הערך צריך להיות זהה לערך הבא:spiffe://POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID
בדוגמה הקודמת:
- PROJECT_NUMBER הוא מספר הפרויקט שמכיל את מאגר הזהויות של עומסי העבודה המנוהל.
- POOL_ID הוא המזהה של מאגר הזהויות של עומסי העבודה.
- NAMESPACE_ID הוא המזהה של מרחב השמות במאגר הזהויות של עומסי העבודה.
- MANAGED_IDENTITY_ID הוא המזהה של הזהות המנוהלת של עומס העבודה.
אם הערך של
iam.googleapis.com/workload-identityשגוי, צריך ליצור מכונת חישוב חדשה עם הערך הנכון, כי אפשר לעדכן את ערך הזהות המנוהלת רק במהלך יצירת המכונה.אם בקובץ
config_statusאין הודעות שגיאה, צריך לוודא שהגדרת האמון מכילה רשומה תקינה עבור דומיין האמון של SPIFFEPOOL_ID.global.PROJECT_NUMBER.workload.id.goog, שמתאים לדומיין האמון של SPIFFE בזהות המנוהלת שהוקצתה למופע המחשוב. מידע נוסף מופיע במאמר הגדרת הרשאות השיתוף.אם הקובץ
config_statusמכיל הודעות שגיאה עם קוד השגיאהINTERNAL_ERROR, צריך לפנות ל-Cloud Customer Care או לאיש הקשר Google Cloud עם הודעת השגיאה.