במסמך הזה מוסבר איך להגדיר זהות מנוהלת של עומס עבודה בשירות לקצה העורפי של מאזן עומסים. אחרי שמקצים זהות מנוהלת, מאזן העומסים והקצה העורפי שלו יכולים לבצע אימות הדדי באמצעות mTLS בקצה העורפי.
כדי להגדיר mTLS בשרת העורפי באמצעות זהות מנוהלת של עומס עבודה, צריך להגדיר מאגר זהויות של עומס עבודה.
אם אין לכם מאגר זהויות של עומסי עבודה מוגדר, אתם צריכים להגדיר מאגר זהויות של עומסי עבודה ואז לחבר את הזהות המנוהלת של עומס העבודה לשירות לקצה העורפי של מאזן העומסים.
מגדירים מאגר זהויות של עומסי עבודה.
- מגדירים מאגר של רשויות אישורים (CA) של Certificate Authority Service כדי להנפיק אישורי X.509 לזהויות מנוהלות של עומסי עבודה.
- מגדירים תחום מהימן על ידי יצירת מאגר זהויות של עומסי עבודה עם מרחב שמות, זהות מנוהלת, מדיניות אימות, משאב של הגדרת הנפקת אישורים מוטבעת ומשאב של הגדרת אמון מוטבעת.
- נותנים הרשאה לזהויות מנוהלות של עומסי עבודה לבקש אישורים ממאגר רשויות האישורים.
מצרפים את הזהות המנוהלת של עומס העבודה לשירות הקצה העורפי של מאזן העומסים.
בדוגמה הזו מוסבר איך להגדיר מאגר חדש של זהויות של עומסי עבודה, ולאחר מכן לצרף זהות מנוהלת של עומס עבודה לשירות העורפי של מאזן העומסים.
אם כבר יש לכם מאגר זהויות של עומסי עבודה, אתם יכולים לפעול לפי הגישה הבאה:
כדי להשתתף במאגר הזהויות של כוח העבודה, אפשר להוסיף מדיניות אימות חדשה למשאב של שירות הקצה העורפי של מאזן העומסים.
מצרפים את הזהות המנוהלת של עומס העבודה לשירות הקצה העורפי של מאזן העומסים.
לפני שמתחילים
יוצרים או בוחרים Google Cloud פרויקט.
תפקידים שנדרשים כדי לבחור או ליצור פרויקט
- Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
-
יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (יצירת פרויקטים) (
roles/resourcemanager.projectCreator), שכולל את ההרשאהresourcemanager.projects.create. איך מקצים תפקידים
-
יוצרים Google Cloud פרויקט:
gcloud projects create PROJECT_ID
מחליפים את
PROJECT_IDבשם של פרויקט Google Cloud שיוצרים. -
בוחרים את הפרויקט שיצרתם: Google Cloud
gcloud config set project PROJECT_ID
מחליפים את
PROJECT_IDבשם הפרויקט ב- Google Cloud .
קוראים את המסמך סקירה כללית על mTLS בשרת העורפי עם זהויות מנוהלות של עומסי עבודה.
מידע על הנפקת אישורים באמצעות Certificate Authority Service
מפעילים את ממשקי ה-API של IAM, Certificate Authority Service, Compute Engine, Certificate Manager ו-Network Security:
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (
roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאהserviceusage.services.enable. איך מקצים תפקידיםgcloud services enable iam.googleapis.com
privateca.googleapis.com compute.googleapis.com certificatemanager.googleapis.com networksecurity.googleapis.com מגדירים את Google Cloud CLI כך שישתמש בפרויקט שנוסף לרשימת ההיתרים לחיוב ולמכסות.
gcloud config set billing/quota_project PROJECT_ID
מחליפים את
PROJECT_IDבGoogle Cloud שם הפרויקט.יוצרים זהות מנוהלת עבור ה-backend. מידע נוסף זמין במאמר סקירה כללית על זהויות מנוהלות של עומסי עבודה.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות ליצירה של זהויות מנוהלות של עומסי עבודה ולהקצאה של אישורים מנוהלים של זהויות של עומסי עבודה, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט:
-
כדי ליצור ולהגדיר זהויות מנוהלות של עומסי עבודה:
- אדמין של מאגר זהויות של עומסי עבודה ב-IAM (
roles/iam.workloadIdentityPoolAdmin) - אדמין בחשבון שירות (
roles/iam.serviceAccountAdmin)
- אדמין של מאגר זהויות של עומסי עבודה ב-IAM (
-
כדי ליצור ולהגדיר מאגרי CA:
אדמין של שירות CA (
roles/privateca.admin) -
כדי ליצור משאבי איזון עומסים כמו
TargetHTTPSProxy: אדמין איזון עומסים ב-Compute (roles/compute.loadBalancerAdmin) -
כדי להשתמש במשאבים של Certificate Manager:
בעלים של Certificate Manager (
roles/certificatemanager.owner) -
כדי ליצור רכיבי אבטחה ורשת:
- אדמין ברשת Compute (
roles/compute.networkAdmin) - Security Admin (
roles/compute.securityAdmin)
- אדמין ברשת Compute (
-
כדי ליצור פרויקט (אופציונלי):
Project Creator (
roles/resourcemanager.projectCreator)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
הגדרת שירות CA להנפקת אישורים לזהויות מנוהלות של עומסי עבודה
אתם יכולים להשתמש במאגרי רשויות אישורים כדי להגדיר רשות אישורים בסיסית. מאגר רשויות האישורים מנפיק את אישורי X.509 לזהויות מנוהלות של עומסי עבודה.
יצירת מאגר של רשות אישורים (CA) עליונה
יוצרים את מאגר רשויות האישורים הבסיסיות ברמת Enterprise באמצעות הפקודה gcloud privateca pools create.
המסלול הזה מיועד להנפקת אישורים לטווח ארוך בכמויות קטנות.
gcloud privateca pools create ROOT_CA_POOL_ID \
--location=REGION \
--project=PROJECT_ID \
--tier=enterprise
מחליפים את מה שכתוב בשדות הבאים:
ROOT_CA_POOL_ID: מזהה ייחודי של מאגר אישורי ה-CA הבסיסיים
REGION: האזור שבו נמצא מאגר רשויות האישורים הבסיסיות
PROJECT_ID: מזהה הפרויקט
מידע נוסף על מאגרי CA זמין במאמר יצירת מאגר CA.
יצירת רשות אישורים (CA) עליונה
כדי ליצור רשות אישורים (CA) עליונה במאגר רשויות אישורים עליונות, משתמשים בפקודה gcloud privateca roots create.
כדי ליצור רשות אישורים (CA) בסיסית, מריצים את הפקודה הבאה:
gcloud privateca roots create ROOT_CA_ID \
--pool=ROOT_CA_POOL_ID \
--subject="CN=ROOT_CA_CN, O=ROOT_CA_ORGANIZATION" \
--key-algorithm="KEY_ALGORITHM" \
--location=REGION \
--project=PROJECT_ID \
--auto-enable
מחליפים את מה שכתוב בשדות הבאים:
-
ROOT_CA_ID: שם ייחודי ל-CA הבסיסי. השם של רשות האישורים יכול להיות באורך של עד 64 תווים, והוא חייב להכיל רק תווים אלפאנומריים באותיות קטנות וגדולות, קווים תחתונים או מקפים. השם של ה-CA חייב להיות ייחודי באזור. -
ROOT_CA_POOL_ID: מזהה המאגר של רשות האישורים (CA) הבסיסית. -
ROOT_CA_CN: השם הנפוץ של רשות הבסיס להנפקת אישורים. -
ROOT_CA_ORGANIZATION: הארגון של רשות האישורים הבסיסית. -
KEY_ALGORITHM: האלגוריתם שבו יש להשתמש ליצירת מפתח Cloud KMS. הדגל הזה הוא אופציונלי. אם לא תכללו את הדגל הזה, אלגוריתם המפתח יהיהrsa-pkcs1-4096-sha256כברירת מחדל. -
REGION: האזור שבו נמצא מאגר רשויות האישורים (CA) העליונות. -
PROJECT_ID: מזהה הפרויקט.
מידע נוסף על רשות אישורים (CA) בסיסית זמין במאמר יצירת רשות אישורים בסיסית.
הגדרת מאגר זהויות של עומסי עבודה
כשמשתמשים בזהויות מנוהלות של עומסי עבודה, Google Cloud יכולה לספק ולנהל באופן אוטומטי אישורי X.509 משירות רשות האישורים. זהויות של עומסי עבודה מוגדרות במאגר זהויות של עומסי עבודה, ומאורגנות בגבולות אדמיניסטרטיביים שנקראים מרחבי שמות.
יצירת מאגר זהויות של עומסי עבודה
כדי ליצור זהויות מנוהלות של עומסי עבודה, צריך ליצור מאגר במצב TRUST_DOMAIN. כדי ליצור מאגר זהויות של עומסי עבודה לזהויות מנוהלות של עומסי עבודה, משתמשים בפקודה gcloud iam workload-identity-pools create.
gcloud iam workload-identity-pools create WORKLOAD_IDENTITY_POOL_ID \
--location="global" \
--mode="TRUST_DOMAIN"
מחליפים את WORKLOAD_IDENTITY_POOL_ID במזהה הייחודי של המאגר. המזהה צריך להכיל בין 4 ל-32 תווים, רק תווים אלפאנומריים קטנים ומקפים, והוא חייב להתחיל ולהסתיים בתו אלפאנומרי. אחרי שיוצרים מאגר זהויות של עומסי עבודה, אי אפשר לשנות את המזהה שלו.
כדי לוודא שמאגר הזהויות של עומסי העבודה נוצר במצב TRUST_DOMAIN, משתמשים בפקודה gcloud iam workload-identity-pools describe.
gcloud iam workload-identity-pools describe WORKLOAD_IDENTITY_POOL_ID \
--location="global"
הפלט אמור להיראות כך:
mode: TRUST_DOMAIN name: projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/WORKLOAD_IDENTITY_POOL_ID state: ACTIVE
הפלט הזה כולל את הערכים הבאים:
-
PROJECT_NUMBER: מספר הפרויקט שלGoogle Cloud הפרויקט -
WORKLOAD_IDENTITY_POOL_ID: המזהה של מאגר הזהויות של עומסי העבודה
יצירת מרחב שמות
הפקודה gcloud iam workload-identity-pools namespaces create מאפשרת ליצור מרחב שמות במאגר זהויות של עומסי עבודה.
gcloud iam workload-identity-pools namespaces create NAMESPACE_ID \
--workload-identity-pool="WORKLOAD_IDENTITY_POOL_ID" \
--location="global"
מחליפים את מה שכתוב בשדות הבאים:
-
NAMESPACE_ID: המזהה הייחודי של מרחב השמות. המזהה צריך לכלול בין 2 ל-63 תווים, להכיל רק תווים אלפאנומריים באותיות קטנות ומקפים, ולהתחיל ולהסתיים בתו אלפאנומרי. אחרי שיוצרים מרחב שמות, אי אפשר לשנות את המזהה שלו. -
WORKLOAD_IDENTITY_POOL_ID: המזהה של מאגר הזהויות של עומסי עבודה שיצרתם קודם.
יצירת זהות מנוהלת של עומס עבודה
הפקודה gcloud iam workload-identity-pools managed-identities create מאפשרת ליצור זהות מנוהלת של עומס עבודה במרחב שמות של מאגר זהויות של עומס עבודה.
gcloud iam workload-identity-pools managed-identities create MANAGED_IDENTITY_ID \
--namespace="NAMESPACE_ID" \
--workload-identity-pool="WORKLOAD_IDENTITY_POOL_ID" \
--location="global"
מחליפים את מה שכתוב בשדות הבאים:
-
MANAGED_IDENTITY_ID: המזהה הייחודי של הזהות המנוהלת. המזהה צריך להכיל בין 2 ל-63 תווים, לכלול רק תווים אלפאנומריים קטנים ומקפים, ולהתחיל ולהסתיים בתו אלפאנומרי. אחרי שיוצרים זהות מנוהלת של עומס עבודה, אי אפשר לשנות את המזהה שלה. -
NAMESPACE_ID: מזהה מרחב השמות שיצרתם קודם. -
WORKLOAD_IDENTITY_POOL_ID: המזהה של מאגר הזהויות של כוח העבודה שיצרתם קודם.
המזהה של הזהות המנוהלת של עומס העבודה הוא מזהה SPIFFE, והפורמט שלו הוא:
spiffe://WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID
יצירת מדיניות אימות
בדוגמה הזו, מדיניות האימות מכילה כלל אימות שבודק אם שירות לקצה העורפי הוא חלק מפרויקט ספציפי. אם האימות של מדיניות האימות עובר בהצלחה, IAM מבקש אישור X.509 עבור הזהות המנוהלת מ-Certificate Authority Service.
כדי ליצור מדיניות אימות, מריצים את הפקודה הבאה כדי להוסיף כלל אימות.
gcloud iam workload-identity-pools managed-identities add-attestation-rule MANAGED_IDENTITY_ID \
--namespace=NAMESPACE_ID \
--workload-identity-pool=WORKLOAD_IDENTITY_POOL_ID \
--google-cloud-resource='//compute.googleapis.com/projects/PROJECT_NUMBER/type/BackendService/*' \
--location=global
מחליפים את מה שכתוב בשדות הבאים:
-
MANAGED_IDENTITY_ID: המזהה הייחודי של הזהות המנוהלת. המזהה צריך לכלול בין 2 ל-63 תווים, רק תווים אלפאנומריים באותיות קטנות ומקפים, ולהתחיל ולהסתיים בתו אלפאנומרי. אחרי שיוצרים זהות מנוהלת של עומס עבודה, אי אפשר לשנות את המזהה שלה. -
NAMESPACE_ID: המזהה של מרחב השמות שיצרתם קודם. -
WORKLOAD_IDENTITY_POOL_ID: המזהה של מאגר הזהויות של עומסי העבודה שיצרתם קודם. -
PROJECT_NUMBER: מספר הפרויקט של Google Cloud הפרויקט.
יצירת הגדרה להנפקת אישורים מוטבעים
כדי לקשר CA למאגר זהויות של עומסי עבודה, במאגר הזהויות של עומסי העבודה צריך להיות הגדרת הנפקת אישורים מוטמעת.
כדי להגדיר קובץ הגדרות להנפקת אישורים מוטמעים, יוצרים קובץ הגדרות בפורמט JSON (cic.json).
cat << EOF > cic.json
{
"inlineCertificateIssuanceConfig": {
"caPools": {
"REGION": "projects/PROJECT_NUMBER/locations/REGION/caPools/ROOT_CA_POOL_ID",
},
"lifetime": "CERTIFICATE_LIFETIME",
"rotationWindowPercentage": ROTATION_WINDOW_PERCENTAGE,
"keyAlgorithm": "ALGORITHM"
}
}
EOF
מחליפים את מה שכתוב בשדות הבאים:
REGION: האזור שבו נמצא רשות האישורים.
PROJECT_NUMBER: מספר הפרויקט. כדי לקבל את מספר הפרויקט מהפרויקט שצוין על ידי המשתנהPROJECT_ID, מריצים את הפקודה הבאה:gcloud projects describe PROJECT_ID --format="value(projectNumber)"
ROOT_CA_POOL_ID: מזהה המאגר של רשות האישורים (CA) הבסיסית.
CERTIFICATE_LIFETIME: משך החיים של האישורים של עומס העבודה שהונפקו על ידי מאגר ה-CA בשניות – לדוגמה: 86,400 שניות (ל-24 שעות). הערך שלCERTIFICATE_LIFETIMEצריך להיות בין 24 שעות ל-30 ימים. אם לא מציינים אתCERTIFICATE_LIFETIME, משך החיים של האישור הוא 24 שעות כברירת מחדל. הערךCERTIFICATE_LIFETIMEהוא אופציונלי.
ROTATION_WINDOW_PERCENTAGE: אחוז משך החיים של האישור שבו מתבצעת הפעלה של חידוש. הערך שלROTATION_WINDOW_PERCENTAGEצריך להיות בין 50 ל-80. ערך ברירת המחדל הוא 50. הערךROTATION_WINDOW_PERCENTAGEהוא אופציונלי.
ALGORITHM: אלגוריתם ההצפנה ששימש ליצירת המפתח הפרטי. הערכים התקפים שלALGORITHMהםECDSA_P256(ברירת מחדל),ECDSA_P384,RSA_2048,RSA_3072ו-RSA_4096.ALGORITHMהוא אופציונלי.
אחרי שיוצרים את קובץ התצורה של הנפקת האישורים בשורה, צריך לעדכן את מאגר הזהויות של עומס העבודה עם הגדרות הנפקת האישורים של רשות האישורים.
יצירת הגדרת אמון מוטמעת (אופציונלי)
כל עומסי העבודה בדומיין המהימן מקבלים אישורים ועוגני אמון שמאפשרים אימות כברירת מחדל בדומיין המהימן. אם רוצים שעומסי עבודה שנמצאים בדומיינים שונים של אמון יאומתו אחד מול השני, צריך להצהיר במפורש על יחסי האמון במאגר הזהויות של עומס העבודה. כדי לעשות את זה, יוצרים הגדרת אמון מוטמעת שמזהה ומקבלת אישורים מדומיינים אחרים של אמון.
קובץ ההגדרה של האמון בשורה מכיל קבוצה של ישויות עוגן אמינות שזהויות מנוהלות של עומסי עבודה משתמשות בהן כדי לאמת אישורים של עמיתים. קובץ הגדרות האמון ממפה את דומיין האמון של SPIFFE לאישורי CA.
כדי ליצור הגדרת אמון מוטמעת:
מורידים את האישורים של דומיין מהימן.
gcloud privateca pools get-ca-certs ROOT_CA_POOL_ID \ --output-file=CERTIFICATE_PATH \ --location=REGIONמחליפים את מה שכתוב בשדות הבאים:
-
ROOT_CA_POOL_ID: המזהה של מאגר רשויות האישורים הבסיסיות -
CERTIFICATE_PATH: הנתיב שבו יישמר האישור בקידוד PEM -
REGION: האזור של מאגר רשויות האישורים (CA) העליונות
-
יוצרים קובץ הגדרות בפורמט JSON (
tc.json) שמכיל את הגדרות האמון המוטמעות, עם אישורים בפורמט PEM שהורדתם בשלב הקודם.cat << EOF > tc.json { "inlineTrustConfig": { "additionalTrustBundles": { "TRUST_DOMAIN_NAME1": { "trustAnchors": [ { "pemCertificate": "-----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL1\n-----END CERTIFICATE-----" }, { "pemCertificate": "-----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL2\n-----END CERTIFICATE-----" } ] }, "TRUST_DOMAIN_NAME2": { "trustAnchors": [ { "pemCertificate": "-----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL3\n-----END CERTIFICATE-----" }, { "pemCertificate": "-----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL4\n-----END CERTIFICATE-----" } ] } } } } EOFמחליפים את מה שכתוב בשדות הבאים:
TRUST_DOMAIN_NAME: הדומיין המהימן יכול להיות כל דומיין מהימן (כמו example.com), כולל דומיין מהימן אחר (או אפילו אותו דומיין) של מאגר זהויות של עומסי עבודה.עבור דומיין אמון של מאגר זהויות של עומסי עבודה, שם דומיין האמון מעוצב באופן הבא:
WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog
בפורמט, מחליפים את מה שכתוב בשדות הבאים:
-
WORKLOAD_IDENTITY_POOL_ID: המזהה של מאגר הזהויות של עומסי העבודה -
PROJECT_NUMBER: מספר הפרויקט שמכיל את מאגר הזהויות של עומסי העבודה
-
CERTIFICATE_MATERIAL: אישור ה-CA בפורמט PEM שמהימן להנפקת אישורים בדומיין המהימן. אפשר להשתמש בפקודה הבאה כדי לקודד קובץ אישור בפורמט PEM למחרוזת בשורה אחת:cat trust-anchor.pem | sed 's/^[ ]*//g' | sed -z '$ s/\n$//' | tr '\n' $ | sed 's/\$/\\n/g'
אחרי שיוצרים את הגדרת האמון בשורה, צריך לעדכן את מאגר הזהויות של עומס העבודה בהגדרת האמון.
עדכון מאגר הזהויות של עומסי העבודה
כדי לקשר את רשות האישורים למאגר הזהויות של עומס העבודה, צריך לעדכן את מאגר הזהויות של עומס העבודה באמצעות הגדרת הנפקת האישורים של רשות האישורים באמצעות הדגל --inline-certificate-issuance-config-file. אם יצרתם הגדרת אמון מוטבעת, אתם צריכים לעדכן את מאגר הזהויות של עומסי עבודה בהגדרת האמון באמצעות הדגל --inline-trust-config-file.
gcloud iam workload-identity-pools update WORKLOAD_IDENTITY_POOL_ID \
--location="global" \
--inline-certificate-issuance-config-file=CIC_JSON_FILE_PATH \
--inline-trust-config-file=TC_JSON_FILE_PATH \
--project=PROJECT_ID
מחליפים את מה שכתוב בשדות הבאים:
WORKLOAD_IDENTITY_POOL_ID: המזהה של מאגר הזהויות של עומסי העבודה.
CIC_JSON_FILE_PATH: הנתיב לקובץ התצורה בפורמט JSON (cic.json) של הגדרת הנפקת האישורים בשורה שיצרתם קודם.
TC_JSON_FILE_PATH: הנתיב לקובץ ההגדרות בפורמט JSON (tc.json) של הגדרות האמון המוטמעות שיצרתם קודם. אם עומסי העבודה שלכם עוברים אימות בדומיינים שונים של אמון, אתם צריכים לציין את הקובץ הזה. אחרת, אפשר להשמיט את--inline-trust-config.
אימות העדכון של מאגר הזהויות של עומסי העבודה
כדי לוודא שמאגר הזהויות של עומסי עבודה עודכן עם הגדרת הנפקת האישורים והגדרת האמון, מריצים את הפקודה הבאה:
gcloud iam workload-identity-pools describe WORKLOAD_IDENTITY_POOL_ID \
--location="global" \
--project=PROJECT_ID
מחליפים את מה שכתוב בשדות הבאים:
WORKLOAD_IDENTITY_POOL_ID: המזהה של מאגר הזהויות של עומסי העבודה.
PROJECT_ID: מזהה הפרויקט
הפלט אמור להיראות כך:
inlineCertificateIssuanceConfig:
caPools:
REGION: projects/PROJECT_NUMBER/locations/REGION1/caPools/ROOT_CA_POOL_ID
keyAlgorithm: ALGORITHM
lifetime: CERTIFICATE_LIFETIME
rotationWindowPercentage: ROTATION_WINDOW_PERCENTAGE
inlineTrustConfig:
additionalTrustBundles:
TRUST_DOMAIN_NAME1:
trustAnchors:
- pemCertificate: |-
-----BEGIN CERTIFICATE-----
CERTIFICATE_MATERIAL1
-----END CERTIFICATE-----
- pemCertificate: |-
-----BEGIN CERTIFICATE-----
CERTIFICATE_MATERIAL2
-----END CERTIFICATE-----
TRUST_DOMAIN_NAME2:
trustAnchors:
- pemCertificate: |-
-----BEGIN CERTIFICATE-----
CERTIFICATE_MATERIAL3
-----END CERTIFICATE-----
- pemCertificate: |-
-----BEGIN CERTIFICATE-----
CERTIFICATE_MATERIAL4
-----END CERTIFICATE-----
mode: TRUST_DOMAIN
name: projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/WORKLOAD_IDENTITY_POOL_ID
state: ACTIVE
הפלט הזה כולל את הערכים הבאים:
-
PROJECT_NUMBER: מספר הפרויקט -
REGION: האזור שבו נמצא מאגר רשויות האישורים הבסיסיות -
ROOT_CA_POOL_ID: המזהה של מאגר רשויות האישורים הבסיסיות -
ALGORITHM: אלגוריתם ההצפנה ששימש ליצירת המפתח הפרטי -
CERTIFICATE_LIFETIME: משך החיים של האישורים של עומסי העבודה שהונפקו על ידי מאגר רשויות האישורים, בשניות -
ROTATION_WINDOW_PERCENTAGE: אחוז משך החיים של האישור שבו מתבצעת ההפעלה של החידוש. TRUST_DOMAIN_NAME: הדומיין המהימן יכול להיות כל דומיין מהימן (כמו example.com), כולל דומיין מהימן אחר (או אפילו אותו דומיין) של מאגר זהויות של עומסי עבודה.-
CERTIFICATE_MATERIAL: אישור CA בפורמט PEM שמהימן להנפקת אישורים בדומיין המהימן -
WORKLOAD_IDENTITY_POOL_ID: המזהה של מאגר הזהויות של עומסי העבודה
אם inlineCertificateIssuanceConfig או inlineTrustConfig לא מופיעים בפלט, צריך לוודא שהגדרתם את ה-CLI של gcloud בצורה נכונה כך שישתמש בפרויקט הנכון לחיוב ולמכסה.
יכול להיות שתצטרכו לעדכן לגרסה חדשה יותר של ה-CLI של gcloud.
איך מאשרים לזהויות מנוהלות של עומסי עבודה לבקש אישורים ממאגר ה-CA
אחרי שמקשרים את רשות האישורים למאגר הזהויות של עומסי העבודה, צריך לתת הרשאה לזהויות מנוהלות של עומסי עבודה לבקש אישורים ממאגר רשויות האישורים.
מקצים לדומיין המהימן את התפקיד 'שליחת בקשות לאישורי עומס עבודה של שירות CA' (
roles/privateca.workloadCertificateRequester). התפקיד הזה מאשר לדומיין האמון לבקש אישורים משרשרות האישורים של שירות רשות האישורים.gcloud privateca pools add-iam-policy-binding ROOT_CA_POOL_ID \ --location=REGION \ --role=roles/privateca.workloadCertificateRequester \ --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/name/locations/global/workloadIdentityPools/WORKLOAD_IDENTITY_POOL_ID" \ --project=PROJECT_IDמחליפים את מה שכתוב בשדות הבאים:
-
ROOT_CA_POOL_ID: המזהה של מאגר רשויות האישורים הבסיסיות -
REGION: האזור של מאגר רשויות האישורים (CA) העליונות
PROJECT_NUMBER: מספר הפרויקטכדי לקבל את
PROJECT_NUMBERמ-PROJECT_ID, מריצים את הפקודה הבאה:gcloud projects describe PROJECT_ID --format="value(projectNumber)"
WORKLOAD_IDENTITY_POOL_ID: המזהה של מאגר הזהויות של עומסי העבודה
PROJECT_ID: מזהה הפרויקט
-
מקצים לדומיין המהימן את התפקיד CA Service Pool Reader (
roles/privateca.poolReader). התפקיד הזה מאשר לדומיין המהימן לקבל את אישורי X.509 החתומים משרשראות האישורים של רשות האישורים.gcloud privateca pools add-iam-policy-binding ROOT_CA_POOL_ID \ --location=REGION \ --role=roles/privateca.poolReader \ --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/name/locations/global/workloadIdentityPools/WORKLOAD_IDENTITY_POOL_ID" \ --project=PROJECT_IDמחליפים את מה שכתוב בשדות הבאים:
-
ROOT_CA_POOL_ID: המזהה של מאגר רשויות האישורים הבסיסיות -
REGION: האזור של מאגר רשויות האישורים (CA) העליונות -
PROJECT_NUMBER: מספר הפרויקט -
WORKLOAD_IDENTITY_POOL_ID: המזהה של מאגר הזהויות של עומסי העבודה -
PROJECT_ID: מזהה הפרויקט
-
יצירת מאזן העומסים והקצאת הזהות המנוהלת לשירות לקצה העורפי
אפשר להקצות זהות מנוהלת רק כשיוצרים את שירות לקצה העורפי.
השלבים בקטע הזה רלוונטיים רק להקצאת זהות מנוהלת לשירות לקצה העורפי של מאזן העומסים. זהו חלק מהגדרת הקצה העורפי של מאזן העומסים.
כדי להגדיר מאזן עומסים גלובלי חיצוני של אפליקציות (ALB), פועלים לפי השלבים במאמר הגדרת מאזן עומסים גלובלי חיצוני של אפליקציות עם קבוצות של מכונות וירטואליות בתור קצה עורפי. בשלב שבו מגדירים את שירות הקצה העורפי של מאזן העומסים, צריך לבצע גם את הפעולות הבאות:
המסוף
נכנסים לדף Load balancing במסוף Google Cloud .
בקטע Backend configuration, מוסיפים את הפרטים הרלוונטיים ליצירת שירות לקצה העורפי.
מרחיבים את הקטע הגדרות מתקדמות.
בקטע Backend authentication (אימות בקצה העורפי), בוחרים באפשרות Managed Identity (זהות מנוהלת).
כדי להקצות זהות מנוהלת לשירות העורפי, בשדה Managed Identity, מזינים את הזהות המנוהלת של כוח העבודה שיצרתם קודם.
לוחצים על יצירה.
ממשיכים לבצע את השלבים שמפורטים במאמר הגדרת מאזן העומסים כדי לסיים את ההגדרה של מאזן העומסים.
gcloud
כדי להקצות זהות מנוהלת לשירות לקצה העורפי, מוסיפים את הדגל
--identityבזמן השימוש בפקודהgcloud beta compute backend-services create.gcloud beta compute backend-services create BACKEND_SERVICE_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=HTTPS \ --health-checks=HEALTH_CHECK_NAME \ --identity='//WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID' \ --globalמחליפים את מה שכתוב בשדות הבאים:
-
BACKEND_SERVICE_NAME: השם של שירות ה-Backend -
HEALTH_CHECK_NAME: השם של בדיקת התקינות -
WORKLOAD_IDENTITY_POOL_ID: מזהה מאגר הזהויות של עומסי העבודה -
PROJECT_NUMBER: מספר הפרויקט -
NAMESPACE_ID: מזהה מרחב השמות -
MANAGED_IDENTITY_ID: המזהה של הזהות המנוהלת
-
משאבים שנוצרו באופן אוטומטי
אחרי שמגדירים זהות מנוהלת בשירות לקצה העורפי של מאזן העומסים, המשאבים הבאים נוצרים אוטומטית על ידי זהות מנוהלת של עומס עבודה:
- הגדרת אימות לקצה העורפי: מצורפת לשירות הקצה העורפי של מאזן העומסים
- אישור זהות שמנוהל על ידי Certificate Manager: מצורף להגדרת האימות של ה-Backend
- הגדרת האמון של Certificate Manager: מצורפת להגדרת האימות של ה-Backend
החלקים הבאים מתייחסים לאימות ההגדרה כדי לבדוק אם המשאבים שנוצרו באופן אוטומטי הוגדרו.
אימות ההגדרות את ההגדרות
בודקים את ההגדרות כדי לראות אם המשאבים שנוצרו באופן אוטומטי הוגדרו.
למשאבים שנוצרו באופן אוטומטי יש קידומת mi, שמציינת שהמשאב נוצר על ידי זהות מנוהלת של עומס עבודה.
אימות היצירה של הגדרת האימות בעורף המערכת והזהות המנוהלת
כדי לוודא שיצרתם את הגדרת האימות של ה-backend ואת הזהות המנוהלת, משתמשים בפקודה gcloud beta compute backend-services describe כדי לתאר את שירות לקצה העורפי.
gcloud beta compute backend-services describe BACKEND_SERVICE_NAME --global
הפלט אמור להיראות כך:
affinityCookieTtlSec: 0 connectionDraining: drainingTimeoutSec: 0 creationTimestamp: '2025-11-06T02:15:43.680-08:00' description: '' enableCDN: false fingerprint: lTZwas8aylg= healthChecks: - https://www.googleapis.com/compute/beta/projects/PROJECT_ID/global/healthChecks/HEALTH_CHECK_NAME id: '719352032' kind: compute#backendService loadBalancingScheme: EXTERNAL_MANAGED name: BACKEND_SERVICE_NAME port: 80 portName: PORT_NAME protocol: HTTPS selfLink: https://www.googleapis.com/compute/beta/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE_NAME sessionAffinity: NONE timeoutSec: 30 tlsSettings: authenticationConfig: //networksecurity.googleapis.com/projects/PROJECT_ID/locations/global/backendAuthenticationConfigs/mi-bac-423b651f-d549-4a9f-a4f2-g2bcaa7108bd identity: //WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID
הפלט הזה כולל את הערכים הבאים:
-
PROJECT_ID: מזהה הפרויקט -
HEALTH_CHECK_NAME: השם של בדיקת התקינות -
BACKEND_SERVICE_NAME: השם של שירות הקצה העורפי PORT_NAME: שם היציאה-
REGION: האזור שבו נמצא מאגר רשויות האישורים הבסיסיות -
WORKLOAD_IDENTITY_POOL_ID: המזהה של מאגר הזהויות של עומסי העבודה -
PROJECT_NUMBER: מספר הפרויקט -
NAMESPACE_ID: מזהה מרחב השמות -
MANAGED_IDENTITY_ID: המזהה של הזהות המנוהלת
ההגדרה של אימות ה-backend נוצרת באופן אוטומטי ומצורפת לשדה backendService.tlsSettings.authenticationConfig.
הגדרת האימות של ה-backend
שמתחילה בתחילית mi נקראת MI_BACKEND_AUTHENTICATION_CONFIG_ID בקטע הבא.
זהות מנוהלת של עומס עבודה מצורפת גם לשדה backendService.tlsSettings.identity. הפורמט הוא:
//WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID
אימות היצירה של אישור הזהות המנוהלת של Certificate Manager והגדרת האמון של Certificate Manager
כדי לוודא שאישור הזהות המנוהלת של Certificate Manager והגדרת האמון של Certificate Manager מצורפים למשאב של הגדרת האימות של ה-Backend, משתמשים בפקודה gcloud network-security backend-authentication-configs describe.
gcloud network-security backend-authentication-configs describe MI_BACKEND_AUTHENTICATION_CONFIG_ID \
--location=global
הפלט אמור להיראות כך:
clientCertificate: projects/PROJECT_NUMBER/locations/global/certificates/mi-crt-181fa461-3b53-40fa-8515-507d47337c5d createTime: '2025-11-06T10:15:56.237734973Z' etag: xwyxl1VYVoh4QIwf3nhKhAVXgcuOqoN7xdqAiS8Esvs name: projects//locations/global/backendAuthenticationConfigs/mi-bac-477b381f-d349-4a8f-a6f2-f2bbaa7109bd trustConfig: projects/PROJECT_NUMBER/locations/global/trustConfigs/mi-tc-e4f05160-f20f-4109-aae3-4c1a68891742 updateTime: '2025-11-06T10:16:01.964275141Z'
המשאבים clientCertificate ו-trustConfig נוצרים באופן אוטומטי על ידי הזהות של עומס העבודה המנוהל ומצורפים למשאב ההגדרות של אימות ה-Backend.
המחרוזת clientCertificate שמתחילה בקידומת mi נקראת MI_CLIENT_CERTIFICATE_ID בקטע הבא.
המחרוזת trustConfig שמתחילה בקידומת mi נקראת MI_TRUST_CONFIG_ID בקטע הבא.
אימות האישור ב-Certificate Manager כאישור של זהות מנוהלת
כדי לראות את הפרטים של אישור הזהות המנוהלת של Certificate Manager, משתמשים בפקודה gcloud certificate-manager certificates describe.
gcloud certificate-manager certificates describe MI_CLIENT_CERTIFICATE_ID
הפלט אמור להיראות כך:
createTime: '2025-11-06T10:15:46.187892797Z' expireTime: '2025-11-07T22:55:47Z' extendedKeyUsage: clientAuth: true managedIdentity: identity: //WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID state: ACTIVE name: projects/PROJECT_ID/locations/global/certificates/mi-crt-181fa461-3b53-40fa-8515-507d47337c5d pemCertificate: -----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL\n-----END CERTIFICATE----- scope: CLIENT_AUTH updateTime: '2025-11-06T10:15:49.427339950Z' usedBy: - name: //networksecurity.googleapis.com/projects/PROJECT_NUMBER/locations/global/backendAuthenticationConfigs/mi-bac-477b381f-d349-4a8f-a6f2-f2bbaa7109bd
הפלט הזה כולל את הערכים הבאים:
-
WORKLOAD_IDENTITY_POOL_ID: המזהה של מאגר הזהויות של עומסי העבודה -
PROJECT_NUMBER: מספר הפרויקט -
NAMESPACE_ID: מזהה מרחב השמות -
MANAGED_IDENTITY_ID: המזהה של הזהות המנוהלת -
CERTIFICATE_MATERIAL: ה-X.509-SVID בפורמט PEM
לאישור של זהות מנוהלת ב-Certificate Manager יש מאפיין managedIdentity שמזהה אותו כאישור של זהות מנוהלת. משאב האישור של הזהות המנוהלת ב-Certificate Manager שומר את ה-X.509-SVID בפורמט בקידוד PEM.
ההיקף של אישור הזהות המנוהל של Certificate Manager הוא CLIENT_AUTH, מה שמציין שהאישור הזה משמש כאישור לקוח ב-mTLS של ה-Backend.
מוודאים שמזהה SPIFFE הוא חלק מ-SAN ב-X.509-SVID
ה-X.509-SVID מכיל את מזהה SPIFFE בקידוד URI בשדה SAN. מזהה ה-SPIFFE הזה תואם לזהות המנוהלת במאגר הזהויות של עומסי העבודה.
כדי להדפיס את האישור בפורמט שנוח לקריאה, מריצים את הפקודה הבאה:
echo -e \ "-----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL\n-----END CERTIFICATE-----" | openssl x509 -text -noout
הפלט אמור להיראות כך (גרסה מקוצרת):
Certificate:
Data:
Version: 3 (0x2)
Signature Algorithm: ecdsa-with-SHA256
Issuer: O = example.com, CN = Example CA
Validity
Not Before: Nov 6 10:15:48 2025 GMT
Not After : Nov 7 10:15:47 2025 GMT
Subject:
Subject Public Key Info:
Public Key Algorithm: id-ecPublicKey
Public-Key: (256 bit)
X509v3 extensions:
X509v3 Subject Alternative Name: critical
URI:spiffe://WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID
הפלט הזה כולל את הערכים הבאים:
-
WORKLOAD_IDENTITY_POOL_ID: המזהה של מאגר הזהויות של עומסי העבודה -
PROJECT_NUMBER: מספר הפרויקט -
NAMESPACE_ID: מזהה מרחב השמות -
MANAGED_IDENTITY_ID: המזהה של הזהות המנוהלת
מוודאים שהגדרת האמון של Certificate Manager מכילה את השדה spiffeTrustStores
הגדרת האמון של Certificate Manager מכילה שדה בשם spiffeTrustStores. השדה spiffeTrustStores מכיל את חבילת האמון שמשויכת לדומיין האמון של מאגר הזהויות של עומס העבודה (שמיוצג על ידי בפלט) וכל חבילות אמון נוספות שצוינו בשדה WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.googadditionalTrustBundles בהגדרת האמון המוטמעת של מאגר הזהויות של עומס העבודה.
כדי לראות את הפרטים של הגדרת האמון של Certificate Manager, משתמשים בפקודה gcloud certificate-manager trust-configs describe.
gcloud certificate-manager trust-configs describe MI_TRUST_CONFIG_ID
מחליפים את MI_TRUST_CONFIG_ID בתצורת האמון שנוצרה באופן אוטומטי על ידי הזהות המנוהלת.
בדוגמה הבאה של הפלט, המארח example.com הוא דומיין האמון הנוסף שאליו מורחב האמון.
createTime: '2025-11-06T10:15:50.048030758Z'
etag: kDoKfm5W6Il2HPvduKZWpuYpyrKrNVq4jqMEICE-6rQ
name: projects/PROJECT_ID/locations/global/trustConfigs/mi-tc-e4f05160-f20f-4109-aae3-4c1a68891742
spiffeTrustStores:
example.com:
trustAnchors:
- pemCertificate: -----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL1\n-----END CERTIFICATE-----
WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog:
trustAnchors:
- pemCertificate: -----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL2\n-----END CERTIFICATE-----
updateTime: '2025-11-07T08:25:15.760754841Z'
הפלט הזה כולל את הערכים הבאים:
-
PROJECT_ID: מזהה הפרויקט -
CERTIFICATE_MATERIAL: אישור CA בפורמט PEM שמהימן להנפקת אישורים בדומיין המהימן -
WORKLOAD_IDENTITY_POOL_ID: המזהה של מאגר הזהויות של עומסי העבודה -
PROJECT_NUMBER: מספר הפרויקט -
MANAGED_IDENTITY_ID: המזהה של הזהות המנוהלת
מידע נוסף על הגדרת אמון ב-Certificate Manager זמין במאמר הגדרת אמון ב-Certificate Manager.
המאמרים הבאים
- הגדרת אימות מנוהל של זהויות לעומסי עבודה ב-Compute Engine
- אימות של עומסי עבודה לעומסי עבודה אחרים באמצעות mTLS