במדריך הזה מוסבר איך להשתמש באיחוד שירותי אימות הזהות של עומסי עבודה כדי לאפשר לעומסי עבודה של מכונות וירטואליות ב-AWS וב-Azure לבצע אימות ב- Google Cloud בלי מפתח של חשבון שירות.
אם אתם משתמשים ב-Amazon Elastic Kubernetes Service (Amazon EKS) או ב-Azure Kubernetes Service (AKS), תוכלו לקרוא את המאמר הגדרת איחוד שירותי אימות הזהות של עומסי עבודה באמצעות Kubernetes כדי ללמוד איך להגדיר איחוד שירותי אימות הזהות של עומסי עבודה עבור האשכולות שלכם. בדף הזה מוסבר רק איך להגדיר איחוד שירותי אימות הזהות של עומסי עבודה למכונות וירטואליות ב-AWS וב-Azure.
באמצעות איחוד שירותי אימות הזהות של עומסי עבודה, עומסי עבודה שפועלים ב-AWS EC2 ובמכונות וירטואליות של Azure יכולים להחליף את פרטי הכניסה הספציפיים לסביבה באסימונים שלGoogle Cloud Security Token Service לטווח קצר.
פרטי כניסה ספציפיים לסביבה כוללים:
- מכונות AWS EC2 שיכולות להשתמש בפרופילים של מכונות כדי לבקש פרטי כניסה זמניים
- מכונות וירטואליות של Azure יכולות להשתמש בזהויות מנוהלות כדי לקבל אסימוני גישה של Azure.
באמצעות הגדרה של איחוד שירותי אימות הזהות של עומסי עבודה, תוכלו לאפשר לעומסי העבודה האלה להחליף את פרטי הכניסה שספציפיים לסביבה בפרטי כניסה שלGoogle Cloud לטווח קצר. עומסי העבודה יכולים להשתמש בפרטי הכניסה לטווח קצר כדי לגשת ל- Google Cloud APIs.
לפני שמתחילים
מגדירים אימות.
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Python
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של Python שבדף הזה, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.
התקינו את ה-CLI של Google Cloud.
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
למידע נוסף, ראו הגדרת ADC לסביבת פיתוח מקומית במאמרי העזרה בנושא אימות Google Cloud .
הכנה של ספק הזהויות החיצוני
צריך לבצע את השלבים האלה פעם אחת לכל דייר (tenant) ב-Microsoft Entra ID ולכל חשבון AWS.
AWS
לא צריך לשנות את ההגדרות האישיות בחשבון AWS שלכם.
אחרי שמגדירים מאגר זהויות של עומסי עבודה שחשבון AWS שלכם יוכנס אליו, אפשר להרשות למשתמשי AWS ולתפקידי AWS להשתמש בפרטי כניסה מאובטחים ל-AWS שהם קבועים או זמניים כדי לקבל פרטי כניסה לטווח קצר. Google Cloud
Azure
אתם צריכים ליצור אפליקציה חדשה ל-Microsoft Entra ID בדייר (tenant) Microsoft Entra ID ולהגדיר אותה באופן שמאפשר להשתמש בה לאיחוד שירותי אימות הזהות של עומסי עבודה.
אחרי שמגדירים מאגר זהויות של עומסי עבודה שהאפליקציה שלכם תוכנס אליו, חשבונות של משתמשים וישויות מורשות ב-Azure יוכלו לבקש טוקני גישה לאפליקציה ולהחליף את טוקני הגישה בפרטי כניסה ל- Google Cloud טווח קצר.
כדי ליצור את האפליקציה:
מגדירים לאפליקציה URI של מזהה אפליקציה. אפשר להשתמש ב-URI של מזהה האפליקציה שמוגדר כברירת מחדל (
APPID) או לציין URI מותאם אישית.יהיה צורך ב-URI של מזהה האפליקציה בהמשך, כשמגדירים את ספק מאגר הזהויות של עומסי העבודה.
כדי לאפשר לאפליקציה לקבל אסימוני גישה לאפליקציה ל-Microsoft Entra ID, אפשר להשתמש בזהויות מנוהלות:
יוצרים זהות מנוהלת. חשוב לזכור את מזהה האובייקט של הזהות המנוהלת. תצטרכו אותה מאוחר יותר כדי להגדיר התחזות.
מקצים את הזהות המנוהלת למכונה וירטואלית או למשאב אחר שהאפליקציה פועלת בו.
הגדרת איחוד שירותי אימות הזהות של עומסי עבודה
צריך לבצע את ההוראות האלה פעם אחת לכל חשבון AWS או לכל דייר (tenant) ב-Microsoft Entra ID. לאחר מכן תוכלו להשתמש באותו מאגר ובאותו ספק זהויות של כוח עבודה בכמה עומסי עבודה ובכמה פרויקטים של Google Cloud .
כדי להתחיל בהגדרה של איחוד שירותי אימות הזהות של עומסי עבודה, מבצעים את הפעולות הבאות:
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
עדיף להשתמש בפרויקט ייעודי לניהול ספקים ומאגרי זהויות של עומסי עבודה.Roles required to select or create a project
Verify that billing is enabled for your Google Cloud project.
Enable the IAM, Resource Manager, Service Account Credentials, and Security Token Service APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.הגדרת מיפוי של מאפיין ותנאי
פרטי הכניסה הספציפיים לסביבה של עומס העבודה ב-AWS או ב-Azure מכילים כמה מאפיינים, ואתם צריכים להחליט באיזה מאפיין להשתמש בתור מזהה הנושא (
google.subject) ב- Google Cloud.Google Cloud משתמש במזהה הנושא ביומני הביקורת של Cloud ובמזהים של חשבונות המשתמשים כדי לזהות באופן ייחודי משתמש או תפקיד ב-AWS או ב-Azure.
אפשר גם למפות מאפיינים נוספים (אופציונלי). לאחר מכן תוכלו להפנות למאפיינים האלה כשמקצים גישה למשאבים.
AWS
במיפוי המאפיינים תוכלו להשתמש בשדות התגובה של
GetCallerIdentityבתור מאפייני מקור. בשדות האלה נכללים:-
account: מספר החשבון ב-AWS. -
arn: שם ה-AWS ARN של הישות החיצונית. -
userid: המזהה הייחודי של הישות ששלחה קריאה.
אם האפליקציה פועלת במכונה של Amazon Elastic Compute Cloud (EC2) עם תפקיד מחובר, אתם יכולים להשתמש במיפוי המאפיינים הזה:
google.subject=assertion.arn attribute.account=assertion.account attribute.aws_role=assertion.arn.extract('assumed-role/{role}/') attribute.aws_ec2_instance=assertion.arn.extract('assumed-role/{role_and_session}').extract('/{session}')המיפוי גורם לביצוע של הפעולות הבאות:
- שימוש ב-ARN בתור מזהה נושא – לדוגמה:
"arn:aws:sts::000000000000:assumed-role/ec2-my-role/i-00000000000000000 - הצגה של המאפיין המותאם אישית
accountוהקצאה של מספר חשבון AWS למאפיין הזה - הצגה של המאפיין המותאם אישית
aws_roleוהקצאה של שם התפקיד ב-AWS למאפיין הזה – לדוגמה:ec2-my-role - הצגה של המאפיין המותאם אישית
aws_ec2_instanceוהקצאה של מזהה מכונת EC2 למאפיין הזה – לדוגמה:i-00000000000000000
בעזרת המיפוי הזה אפשר לתת הרשאת גישה אל:
מכונת EC2 ספציפית:
principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.aws_ec2_instance/EC2_INSTANCE_ID
כל המשתמשים והמכונות בתפקיד מסוים:
principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.aws_role/ROLE_NAME
Azure
כשממפים את המאפיינים, אפשר להשתמש בהצהרות שמוטמעות באסימוני גישה ב-Azure, כולל הצרות מותאמות אישית, כמו מאפייני מקור. ברוב המקרים, כדאי להשתמש בהצהרה
subבתור מזהה נושא:google.subject=assertion.sub
אם טענת
subחורגת ממגבלת 127 התווים שלgoogle.subject, מומלץ להשתמש בפונקציהextractכדי ליצור מזהה נושא – לדוגמה:google.subject=assertion.sub.extract('/eid1/c/pub/t/{sub_claim}')לאסימון גישה שהונפק לזהות מנוהלת, ההצהרה
subמכילה את מזהה האובייקט של הזהות המנוהלת. אם משתמשים בהצהרה אחרת, חשוב לוודא שההצהרה ייחודית ושאי אפשר להקצות אותה מחדש.אם אתם לא בטוחים לאיזו רשימת הצהרות אתם יכולים להפנות:
מתחברים למכונה וירטואלית של Azure שהוקצתה לה זהות מנוהלת.
משיגים אסימון גישה מ-Azure Instance Metadata Service (IMDS):
Bash
curl \ "http://169.254.169.254/metadata/identity/oauth2/token?resource=APP_ID_URI&api-version=2018-02-01" \ -H "Metadata: true" | jq -r .access_token
בפקודה הזו נעשה שימוש בכלי
jq. כברירת מחדל, הכליjqזמין ב-Cloud Shell.PowerShell
$SubjectTokenType = "urn:ietf:params:oauth:token-type:jwt" $SubjectToken = (Invoke-RestMethod ` -Uri "http://169.254.169.254/metadata/identity/oauth2/token?resource=APP_ID_URI&api-version=2018-02-01" ` -Headers @{Metadata="true"}).access_token Write-Host $SubjectTokenמחליפים את
APP_ID_URIב-URI של מזהה האפליקציה שהגדרתם לאיחוד שירותי אימות הזהויות של עומסי עבודה.בדפדפן אינטרנט, נכנסים אל
https://jwt.ms/ומדביקים את אסימון הגישה בשדה.לוחצים על הצהרות כדי להציג את רשימת ההצהרות שמוטמעות באסימון הגישה.
בזהויות של שירות, בדרך כלל לא צריך ליצור מיפוי של
google.groupsאו של כל מאפיין מותאם אישית אחר.אפשר גם להגדיר תנאי למאפיין. תנאים למאפיינים הם ביטויים ב-CEL שאפשר לבדוק בהם טענת נכוֹנוּת (assertion) ומאפייני יעד. אם בפרטי כניסה מסוימים הערך של התנאי למאפיין הוא
true, הפרטים האלה מאושרים. אחרת, פרטי הכניסה נדחים.AWS
אפשר להשתמש בתנאי למאפיין כדי להגביל את המשתמשים והתפקידים ב-IAM שיוכלו להשתמש באיחוד שירותי אימות הזהות של עומסי עבודה כדי לקבל אסימונים לטווח קצר Google Cloud.
לדוגמה, בעזרת התנאי הבא אפשר להגביל גישה לתפקידי AWS ולדחות מזהי IAM אחרים:
assertion.arn.startsWith('arn:aws:sts::AWS_ACCOUNT_ID:assumed-role/')Azure
אפשר להשתמש בתנאי למאפיין כדי להגביל את המשתמשים ואת חשבונות השירות שיכולים להשתמש באיחוד שירותי אימות הזהות של עומסי עבודה כדי לקבל אסימונים לטווח קצר Google Cloud. לחלופין, אתם יכולים להגדיר שהאפליקציה ל-Microsoft Entra ID תשתמש בהקצאות תפקידים באפליקציות.
יצירה של מאגר וספק זהויות של כוח עבודה
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות להגדרה של איחוד זהויות של עומסי עבודה, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט:
-
אדמין במאגר זהויות של עומסי עבודה (
roles/iam.workloadIdentityPoolAdmin) -
אדמין בחשבון שירות (
roles/iam.serviceAccountAdmin)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
לחלופין, התפקיד הבסיסי ב-IAM 'בעלים' (roles/owner) כולל גם הרשאות להגדרה של איחוד זהויות. בסביבת ייצור לא מומלץ להקצות תפקידים בסיסיים, אבל אפשר להעניק אותם בסביבת פיתוח או בסביבת בדיקה.סיימתם לאסוף את כל המידע שצריך כדי ליצור מאגר וספק זהויות של כוח עבודה:
המסוף
נכנסים לדף New workload provider and pool במסוף Google Cloud .
בקטע Create an identity pool, מזינים את הפרטים האלה:
- Name: השם של המאגר. השם משמש גם כמזהה המאגר. אי אפשר לשנות את מזהה המאגר בשלב מאוחר יותר.
- Description: טקסט שמתאר את המטרה של המאגר.
לוחצים על Continue.
מגדירים את הספק:
AWS
מגדירים את הגדרות הספק האלה:
- Select a provider: בוחרים את הספק AWS.
- Provider name: השם של הספק. השם משמש גם בתור מזהה הספק. אי אפשר לשנות את מזהה הספק בשלב מאוחר יותר.
Azure
מגדירים את הגדרות הספק האלה:
- Select a provider:בוחרים את הספק OpenID Connect (OIDC).
- Provider name: השם של הספק. השם משמש גם כמזהה הספק. אי אפשר לשנות את מזהה הספק בשלב מאוחר יותר.
- Issuer URL:
https://sts.windows.net/TENANT_ID. מחליפים אתTENANT_IDבמזהה הדייר (GUID) של הדייר ב-Microsoft Entra ID. - Allowed audiences: ה-URI של מזהה האפליקציה שהשתמשתם בו כשרשמתם את האפליקציה ב-Microsoft Entra ID.
לוחצים על Continue.
בקטע Configure provider attributes , מוסיפים את מיפויי המאפיינים שציינתם קודם.
בקטע Attribute conditions, מזינים את התנאי למאפיין שציינתם קודם. אם אין לכם תנאי למאפיין, משאירים את השדה ריק.
לוחצים על Save כדי ליצור את המאגר ואת ספק הזהויות של כוח העבודה.
gcloud
יוצרים מאגר זהויות חדש של כוח עבודה:
gcloud iam workload-identity-pools create POOL_ID \ --location="global" \ --description="DESCRIPTION" \ --display-name="DISPLAY_NAME"מחליפים את מה שכתוב בשדות הבאים:
-
POOL_ID: המזהה הייחודי של המאגר. -
DISPLAY_NAME: שם המאגר. -
DESCRIPTION: תיאור המאגר. התיאור הזה מוצג כשמעניקים גישה לזהויות במאגר.
-
מוסיפים ספק למאגר הזהויות של כוח העבודה:
AWS
כדי ליצור את המאגר והספק של הזהויות של כוח העבודה ל-AWS:
gcloud iam workload-identity-pools providers create-aws PROVIDER_ID \ --location="global" \ --workload-identity-pool="POOL_ID" \ --account-id="ACCOUNT_ID" \ --attribute-mapping="MAPPINGS" \ --attribute-condition="CONDITIONS"
מחליפים את מה שכתוב בשדות הבאים:
-
PROVIDER_ID: המזהה הייחודי של הספק. -
POOL_ID: מזהה המאגר. -
ACCOUNT_ID: מספר שמורכב מ-12 ספרות שמזהה את חשבון AWS שלכם. -
MAPPINGS: רשימה מופרדת בפסיקים של מיפויי מאפיינים שציינתם קודם. -
CONDITIONS: התנאי למאפיין שציינתם קודם. אם אין לכם תנאי למאפיין, אפשר להסיר את הפרמטר.
דוגמה:
gcloud iam workload-identity-pools providers create-aws example-provider \ --location="global" \ --workload-identity-pool="pool-1" \ --account-id="123456789000" \ --attribute-mapping="google.subject=assertion.arn"
Azure
כדי ליצור את המאגר והספק של הזהויות של כוח העבודה ל-Azure:
gcloud iam workload-identity-pools providers create-oidc PROVIDER_ID \ --location="global" \ --workload-identity-pool="POOL_ID" \ --issuer-uri="ISSUER_URI" \ --allowed-audiences="APPLICATION_ID_URI" \ --attribute-mapping="MAPPINGS" \ --attribute-condition="CONDITIONS"מחליפים את מה שכתוב בשדות הבאים:
-
PROVIDER_ID: המזהה הייחודי של הספק. -
POOL_ID: מזהה המאגר. -
ISSUER_URI: מזהה הדייר (GUID) של הדייר ב-Microsoft Entra ID, שלפעמים מופיע בפורמטhttps://sts.windows.net/TENANT_ID. ה-URI של המנפיק יכול להשתנות, וכדי למצוא את ה-URI של המנפיק, אפשר לנפות באגים ב-JWT באמצעות JWT.io. -
APPLICATION_ID_URI: ה-URI של מזהה האפליקציה שהשתמשתם בו כשרשמתם את האפליקציה ב-Microsoft Entra ID. -
MAPPINGS: רשימה מופרדת בפסיקים של מיפויי המאפיינים שציינתם קודם. -
CONDITIONS: (אופציונלי) התנאי למאפיין שציינתם קודם.
דוגמה:
gcloud iam workload-identity-pools providers create-oidc example-provider \ --location="global" \ --workload-identity-pool="pool-1" \ --issuer-uri="https://sts.windows.net/00000000-1111-2222-3333-444444444444" \ --allowed-audiences="api://my-app" \ --attribute-mapping="google.subject=assertion.sub,google.groups=assertion.groups"
-
אימות של עומסי עבודה
צריך לבצע את ההוראות האלה פעם אחת לכל עומס עבודה.
מתן הרשאה לעומס העבודה החיצוני לגשת למשאבי Google Cloud
כדי להעניק לעומס העבודה גישה למשאבים של Google Cloud , מומלץ להעניק לישות הראשית גישה ישירה למשאבים. במקרה הזה, הגורם המרכזי הוא המשתמש המאוחד. יש Google Cloud מוצרים עם מגבלות של Google Cloud API. אם עומס העבודה קורא לנקודת קצה ל-API שיש לה מגבלה, אפשר במקום זאת להשתמש בהתחזות לחשבון שירות. במקרה הזה, חשבון המשתמש הואGoogle Cloud חשבון השירות, שמשמש כזהות. מעניקים גישה לחשבון השירות במשאב.
גישה ישירה למשאבים
אפשר להעניק גישה לזהות מאוחדת ישירות למשאבים באמצעות מסוף Google Cloud או ה-CLI של gcloud.
המסוף
כדי להשתמש במסוף Google Cloud כדי להקצות תפקידי IAM ישירות למשאב, צריך לעבור לדף של המשאב ואז להקצות את התפקיד. בדוגמה הבאה מוצגות ההוראות למעבר לדף Cloud Storage ולהענקת התפקיד 'צפייה באובייקט אחסון' (
roles/storage.objectViewer) לזהות מאוחדת ישירות בקטגוריה של Cloud Storage.- במסוף Google Cloud , נכנסים לדף Buckets של Cloud Storage.
ברשימת הקטגוריות, לוחצים על שם הקטגוריה שבה רוצים להעניק את התפקיד.
לוחצים על הכרטיסייה Permissions בחלק העליון של הדף.
לוחצים על הלחצן add_boxGrant access.
מופיעה תיבת הדו-שיח Add principals.
בשדה New principals, מזינים את הזהות (או הזהויות) שצריכה גישה לקטגוריה.
לפי נושא
principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECTמחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_NUMBER: מספר הפרויקט -
POOL_ID: המזהה של מאגר הזהויות של עומסי העבודה -
SUBJECT: הנושא האישי שמופה מה-IdP, לדוגמה:administrator@example.com
לפי קבוצה
principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUPמחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_NUMBER: מספר הפרויקט -
WORKLOAD_POOL_ID: המזהה של מאגר הזהויות של עומסי העבודה -
GROUP: הקבוצה שממופה מה-IdP (לדוגמה:administrator-group@example.com)
לפי תכונה
principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUEמחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_NUMBER: מספר הפרויקט -
WORKLOAD_POOL_ID: המזהה של מאגר הזהויות של עומסי העבודה -
ATTRIBUTE_NAME: אחד מהמאפיינים שמופו מה-IdP -
ATTRIBUTE_VALUE: הערך של המאפיין
-
בוחרים תפקיד (או תפקידים) בתפריט הנפתח Select a rol. התפקידים שבחרתם יופיעו בחלונית עם תיאור קצר של ההרשאות שהם מעניקים.
לוחצים על Save.
gcloud
כדי להשתמש ב-CLI של gcloud כדי להקצות תפקידי IAM למשאב בפרויקט, מבצעים את הפעולות הבאות:
מקבלים את מספר הפרויקט שבו מוגדר המשאב.
gcloud projects describe $(gcloud config get-value core/project) --format=value\(projectNumber\)
נותנים גישה למשאב.
כדי להשתמש ב-CLI של gcloud כדי להעניק את התפקיד Storage Object Viewer (
roles/storage.objectViewer) לזהויות חיצוניות שעומדות בקריטריונים מסוימים, מריצים את הפקודה הבאה.לפי נושא
gcloud storage buckets add-iam-policy-binding BUCKET_ID \ --role=roles/storage.objectViewer \ --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT"לפי קבוצה
gcloud storage buckets add-iam-policy-binding BUCKET_ID \ --role=roles/storage.objectViewer \ --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP"לפי תכונה
gcloud storage buckets add-iam-policy-binding BUCKET_ID \ --role=roles/storage.objectViewer \ --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE"מחליפים את מה שכתוב בשדות הבאים:
-
BUCKET_ID: הקטגוריה שרוצים לתת לה גישה -
PROJECT_NUMBER: מספר הפרויקט שמכיל את מאגר הזהויות של עומסי העבודה. -
POOL_ID: מזהה מאגר הזהויות של עומסי העבודה -
SUBJECT: הערך הצפוי של המאפיין שמיפיתם ל-google.subject -
GROUP: הערך הצפוי של המאפיין שמיפיתם ל-google.groups -
ATTRIBUTE_NAME: השם של המאפיין בהתאמה אישית במיפוי המאפיינים שלכם -
ATTRIBUTE_VALUE: הערך של המאפיין בהתאמה אישית במיפוי המאפיינים
אפשר להקצות תפקידים לכל Google Cloud משאב שתומך במדיניות הרשאות של IAM.
-
התחזות לחשבון שירות
כדי ליצור חשבון שירות לעומס העבודה החיצוני, צריך לבצע את הפעולות הבאות:
Enable the IAM, Security Token Service, and Service Account Credentials APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.יצירת חשבון שירות שמייצג את עומס העבודה. מומלץ להשתמש בחשבון שירות ייעודי לכל עומס עבודה. חשבון השירות לא חייב להיות באותו פרויקט כמו מאגר הזהויות של עומסי העבודה, אבל אתם צריכים להפנות לפרויקט שמכיל את חשבון השירות.
הענקת גישה לחשבון השירות למשאבים שאליהם רוצים שלזהויות חיצוניות תהיה גישה.
כדי לאפשר לזהות המאוחדת להתחזות לחשבון השירות, מבצעים את הפעולות הבאות:
המסוף
כדי להשתמש במסוף Google Cloud כדי להעניק תפקידי IAM לזהות מאוחדת עם חשבון שירות, מבצעים את הפעולות הבאות:
חשבון שירות באותו פרויקט
כדי לתת גישה באמצעות התחזות לחשבון שירות שנמצא באותו פרויקט, מבצעים את הפעולות הבאות:
עוברים לדף Workload Identity Pools.
בוחרים באפשרות הענקת גישה.
בתיבת הדו-שיח Grant access to service account, בוחרים באפשרות Grant access using Service Account impersonation.
ברשימה Service accounts, בוחרים את חשבון השירות שאליו הזהויות החיצוניות יתחזו, ומבצעים את הפעולות הבאות:
כדי לבחור אילו זהויות מהמאגר יכולות להתחזות לחשבון השירות, מבצעים את אחת מהפעולות הבאות:
כדי לאפשר רק לזהויות ספציפיות ממאגר הזהויות של עומסי העבודה להתחזות לחשבון השירות, בוחרים באפשרות Only identities matching the filter.
ברשימה שם מאפיין, בוחרים את המאפיין שרוצים לסנן לפיו.
בשדה ערך מאפיין, מזינים את הערך הצפוי של המאפיין; לדוגמה, אם משתמשים במיפוי מאפיין
google.subject=assertion.sub, מגדירים את שם מאפיין להיותsubjectואת ערך מאפיין לערך של ההצהרהsubבאסימונים שהונפקו על ידי ספק הזהויות החיצוני.
כדי לשמור את ההגדרות האישיות, לוחצים על Save ואז על Dismiss.
חשבון שירות בפרויקט אחר
כדי לתת גישה באמצעות התחזות לחשבון שירות בחשבון שירות בפרויקט אחר, מבצעים את הפעולות הבאות:
עוברים לדף Service Accounts.
בוחרים את חשבון השירות שרוצים להתחזות אליו.
לוחצים על ניהול הגישה.
לוחצים על Add principal.
בשדה New principal, מזינים אחד ממזהי הגורמים המורשים הבאים של הזהויות במאגר שיתחזו לחשבון השירות.
לפי נושא
principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECTמחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_NUMBER: מספר הפרויקט -
POOL_ID: המזהה של מאגר הזהויות של עומסי העבודה -
SUBJECT: הנושא האישי שמופה מה-IdP, לדוגמה:administrator@example.com
לפי קבוצה
principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUPמחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_NUMBER: מספר הפרויקט -
WORKLOAD_POOL_ID: המזהה של מאגר הזהויות של עומסי העבודה -
GROUP: הקבוצה שממופה מה-IdP (לדוגמה:administrator-group@example.com)
לפי תכונה
principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUEמחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_NUMBER: מספר הפרויקט -
WORKLOAD_POOL_ID: המזהה של מאגר הזהויות של עומסי העבודה -
ATTRIBUTE_NAME: אחד מהמאפיינים שמופו מה-IdP -
ATTRIBUTE_VALUE: הערך של המאפיין
לפי בריכה
principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/*מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_NUMBER: מספר הפרויקט -
WORKLOAD_POOL_ID: המזהה של מאגר הזהויות של עומסי העבודה
-
ברשימת התפקידים Select a role (בחירת תפקיד), בוחרים את התפקיד Workload Identity User (משתמש ב-Workload Identity) (
roles/iam.workloadIdentityUser).כדי לשמור את ההגדרות, לוחצים על שמירה.
gcloud
כדי להקצות את התפקיד Workload Identity User (
roles/iam.workloadIdentityUser) לישות מורשית מאוחדת או לקבוצת ישויות מורשות, מריצים את הפקודה הבאה. מידע נוסף על מזהי ישויות מורשות של איחוד שירותי אימות הזהות של עומסי עבודה זמין במאמר סוגי חשבון משתמש.לפי נושא
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \ --role=roles/iam.workloadIdentityUser \ --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT"לפי קבוצה
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \ --role=roles/iam.workloadIdentityUser \ --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP"לפי תכונה
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \ --role=roles/iam.workloadIdentityUser \ --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE"מחליפים את מה שכתוב בשדות הבאים:
SERVICE_ACCOUNT_EMAIL: כתובת האימייל של חשבון השירות-
PROJECT_NUMBER: מספר הפרויקט שמכיל את מאגר הזהויות של עומסי העבודה. -
POOL_ID: מזהה מאגר הזהויות של עומסי העבודה -
SUBJECT: הערך הצפוי של המאפיין שמיפיתם ל-google.subject -
GROUP: הערך הצפוי של המאפיין שמיפיתם ל-google.groups -
ATTRIBUTE_NAME: השם של המאפיין בהתאמה אישית במיפוי המאפיינים שלכם -
ATTRIBUTE_VALUE: הערך של המאפיין בהתאמה אישית במיפוי המאפיינים
הורדה או יצירה של הגדרות אישיות של פרטי הכניסה
ספריות הלקוח ב-Cloud, ה-CLI של gcloud ו-Terraform יכולים להשיג פרטי כניסה חיצוניים באופן אוטומטי, ולהשתמש בהם כדי להתחזות לחשבון שירות. כדי לאפשר לספריות ולכלים להשלים את התהליך הזה, צריך לספק קובץ תצורה של פרטי הכניסה. הקובץ יגדיר את הפרטים הבאים:
- המקור שממנו משיגים פרטי כניסה חיצוניים
- מאגר וספק הזהויות של כוח עבודה שבהם צריך להשתמש
- חשבון השירות שצריך להתחזות אליו
כדי ליצור קובץ תצורה של פרטי הכניסה:
המסוף
כדי להוריד קובץ תצורה של פרטי הכניסה במסוף Google Cloud :
במסוף Google Cloud , עוברים לדף Workload Identity Pools.
מאתרים את מאגר הזהויות של עומסי עבודה עבור ה-IdP שרוצים להשתמש בו ולוחצים עליו.
אם בחרתם להשתמש בגישה ישירה למשאבים, צריך לבצע את הפעולות הבאות:
לוחצים על הענקת גישה.
בוחרים באפשרות Grant access using federated identities (הענקת גישה באמצעות זהויות מאוחדות) (מומלץ).
לוחצים על הורדה.
בהמשך התהליך הזה מופיעות הוראות להמשך הגדרת האפליקציה.
אם בחרתם להשתמש בהתחזות לחשבון שירות, צריך לבצע את הפעולות הבאות:
בוחרים באפשרות Connected service accounts.
מאתרים את חשבון השירות שרוצים להשתמש בו ולוחצים על Download.
בהמשך התהליך הזה מופיעות הוראות להמשך הגדרת האפליקציה.
בתיבת הדו-שיח Configure your application, בוחרים את הספק שמכיל את הזהויות החיצוניות.
מוסיפים את ההגדרות האלה:
AWS
אין דרישות נוספות שצריך להוסיף.
Azure
Application ID URL: ה-URI של מזהה האפליקציה באפליקציית Azure
בוחרים באפשרות Download config כדי להוריד את קובץ פרטי הכניסה, ואז לוחצים על Dismiss.
אם רוצים להשתמש בנקודות הקצה האזוריות של Security Token Service – לדוגמה,
https://sts.us-central1.rep.googleapis.com– אפשר לעיין במאמר שימוש בנקודות קצה אזוריות של Security Token Service לשיפור המהימנות.gcloud
כדי ליצור קובץ תצורה של פרטי הכניסה באמצעות
gcloud iam workload-identity-pools create-cred-config:AWS
כדי ליצור קובץ תצורה של פרטי הכניסה שמאפשר לספרייה לקבל אסימון גישה מהמטא-נתונים של מכונת EC2:
gcloud iam workload-identity-pools create-cred-config \ projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID \ --service-account=SERVICE_ACCOUNT_EMAIL \ --service-account-token-lifetime-seconds=SERVICE_ACCOUNT_TOKEN_LIFETIME \ --aws \ --sts-location=REGION \ --output-file=FILEPATH.jsonמחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_NUMBER: מספר הפרויקט שמכיל את מאגר הזהויות של עומסי העבודה -
POOL_ID: המזהה של מאגר הזהויות של כוח העבודה. PROVIDER_ID: המזהה של ספק מאגר הזהויות של עומסי העבודה.-
SERVICE_ACCOUNT_EMAIL: אם אתם משתמשים בהתחזות לחשבון שירות, מחליפים את כתובת האימייל של חשבון השירות. אם לא משתמשים בהתחזות לחשבון שירות, לא צריך לציין את הדגל הזה. -
SERVICE_ACCOUNT_TOKEN_LIFETIME: אם אתם משתמשים בהתחזות לחשבון שירות, צריך להחליף את הערך הזה במשך החיים של אסימון הגישה לחשבון השירות בשניות. אם לא ציינתם ערך, הגדרת ברירת המחדל היא שעה אחת. אם לא משתמשים בהתחזות לחשבון שירות, לא צריך לציין את הדגל הזה. כדי לציין משך חיים ארוך יותר משעה אחת, צריך להגדיר את אילוץ המדיניות הארגונית constraints/iam.allowServiceAccountCredentialLifetimeExtension. FILEPATH: הקובץ שבו שומרים את התצורה.-
Region: אופציונלי. מציינים את האזור של נקודות הקצה האזוריות של Security Token Service, אם הן זמינות.
אם משתמשים ב-AWS IMDSv2, צריך להוסיף את הדגל
--enable-imdsv2לפקודהgcloud iam workload-identity-pools create-cred-config:gcloud iam workload-identity-pools create-cred-config \ projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID \ --service-account=SERVICE_ACCOUNT_EMAIL \ --aws \ --enable-imdsv2 \ --sts-location=REGION \ --output-file=FILEPATH.jsonאם אין אפשרות להשתמש בשרת המטא-נתונים של AWS, אפשר לספק את פרטי הכניסה המאובטחים ל-AWS באמצעות משתני הסביבה ב-AWS:
AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_REGIONאוAWS_DEFAULT_REGIONAWS_SESSION_TOKEN(אופציונלי)
ב-CLI ובספריות של gcloud נעשה שימוש במשתני הסביבה ב-AWS כששרת המטא-נתונים של AWS לא זמין.
Azure
כדי ליצור קובץ תצורה של פרטי הכניסה שמאפשר לספרייה לקבל אסימון גישה מ-Azure Instance Metadata Service (IMDS):
gcloud iam workload-identity-pools create-cred-config \ projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID \ --service-account=SERVICE_ACCOUNT_EMAIL \ --service-account-token-lifetime-seconds=SERVICE_ACCOUNT_TOKEN_LIFETIME \ --azure \ --app-id-uri APPLICATION_ID_URI \ --sts-location=REGION \ --output-file=FILEPATH.jsonמחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_NUMBER: מספר הפרויקט שמכיל את מאגר זהויות של עומסי עבודה. -
POOL_ID: המזהה של מאגר הזהויות של כוח העבודה. PROVIDER_ID: המזהה של ספק מאגר הזהויות של עומסי העבודה.-
SERVICE_ACCOUNT_EMAIL: אם אתם משתמשים בהתחזות לחשבון שירות, מחליפים את כתובת האימייל של חשבון השירות. אם לא משתמשים בהתחזות לחשבון שירות, לא צריך לציין את הדגל הזה. -
APPLICATION_ID_URI: ה-URI של מזהה האפליקציה באפליקציית Azure. -
SERVICE_ACCOUNT_TOKEN_LIFETIME: אם משתמשים בהתחזות לחשבון שירות,משך החיים של אסימון הגישה לחשבון השירות בשניות. אם לא ציינתם ערך, הגדרת ברירת המחדל היא שעה אחת. אם לא משתמשים בהתחזות לחשבון שירות, לא צריך להוסיף את הדגל הזה. כדי לציין משך חיים ארוך יותר משעה אחת, צריך להגדיר את אילוץ המדיניות הארגונית constraints/iam.allowServiceAccountCredentialLifetimeExtension. FILEPATH: הקובץ שבו שומרים את התצורה.-
Region: אופציונלי. מציינים את האזור של נקודות הקצה האזוריות של Security Token Service, אם הן זמינות.
שימוש בהגדרות פרטי הכניסה כדי לקבל גישה אל Google Cloud
כדי לאפשר לכלים ולספריות הלקוח להשתמש בהגדרות האישיות של פרטי הכניסה בסביבה שלכם ב-AWS או ב-Azure:
מאתחלים את משתנה הסביבה
GOOGLE_APPLICATION_CREDENTIALSומפנים אותו לקובץ התצורה של פרטי הכניסה:Bash
כאשרexport GOOGLE_APPLICATION_CREDENTIALS=`pwd`/FILEPATH.json
FILEPATHהוא הנתיב היחסי לקובץ התצורה של פרטי הכניסה.PowerShell
כאשר$env:GOOGLE_APPLICATION_CREDENTIALS = Resolve-Path 'FILEPATH.json'
FILEPATHהוא הנתיב היחסי לקובץ התצורה של פרטי הכניסה.משתמשים בספריית לקוח או בכלי שתומכים באיחוד שירותי אימות הזהות של עומסי עבודה, ויכולים למצוא פרטי כניסה באופן אוטומטי:
C++
ספריות הלקוח של C++Google Cloud תומכות באיחוד שירותי אימות הזהות של עומסי עבודה החל מגרסה v2.6.0. כדי להשתמש באיחוד שירותי אימות הזהות של עומסי עבודה, צריך ליצור את ספריות הלקוח ב-gRPC בגרסה 1.36.0 ואילך.
Go
ספריות לקוח ל-Go תומכות באיחוד שירותי אימות הזהות של עומסי עבודה אם נעשה בהן שימוש במודול
golang.org/x/oauth2בגרסה v0.0.0-20210218202405-ba52d332ba99 ואילך.כדי לבדוק באיזו גרסה של המודול הזה נעשה שימוש בספריית הלקוח, מפעילים את הפקודות האלה:
cd $GOPATH/src/cloud.google.com/go go list -m golang.org/x/oauth2Java
ספריות לקוח של Java תומכות באיחוד שירותי אימות הזהות של עומסי עבודה אם הן משתמשות בארטיפקט
com.google.auth:google-auth-library-oauth2-httpבגרסה 0.24.0 ואילך.כדי לבדוק באיזו גרסה של הארטיפקט הזה נעשה שימוש בספריית הלקוח, בספרייה של האפליקציה מפעילים את פקודת Maven הזאת:
mvn dependency:list -DincludeArtifactIds=google-auth-library-oauth2-httpNode.js
ספריות לקוח של Node.js תומכות באיחוד שירותי אימות הזהות של עומסי עבודה אם הן משתמשות בגרסה 7.0.2 ואילך של חבילת
google-auth-library.כדי לבדוק באיזו גרסה של החבילה הזאת נעשה שימוש בספריית הלקוח, בספרייה של האפליקציה מפעילים את פקודת Maven הזאת:
npm list google-auth-libraryכשיוצרים אובייקט
GoogleAuth, אפשר לציין מזהה פרויקט או לאפשר ל-GoogleAuthלאתר את מזהה הפרויקט באופן אוטומטי. כדי לאתר את מזהה הפרויקט באופן אוטומטי, צריך להקצות לחשבון השירות בקובץ התצורה את התפקיד דפדפן (roles/browser) או תפקיד עם הרשאות דומות בפרויקט. לפרטים נוספים, ראוREADMEלחבילתgoogle-auth-library.Python
ספריות לקוח של Python תומכות באיחוד זהויות של עומסי עבודה אם הן משתמשות בגרסה 1.27.0 ואילך של חבילת
google-auth.כדי לבדוק באיזו גרסה של החבילה הזאת נעשה שימוש בספריית הלקוח, בסביבה שהחבילה מותקנת בה מפעילים את הפקודה:
pip show google-authכדי לציין מזהה פרויקט ללקוח האימות, תוכלו להגדיר את משתנה הסביבה
GOOGLE_CLOUD_PROJECTאו לאפשר ללקוח למצוא את מזהה הפרויקט באופן אוטומטי. כדי לאתר את מזהה הפרויקט באופן אוטומטי, צריך להקצות לחשבון השירות בקובץ התצורה את התפקיד דפדפן (roles/browser) או תפקיד עם הרשאות דומות בפרויקט. לפרטים נוספים, ראו מדריך למשתמש לחבילתgoogle-auth.gcloud
כדי לבצע אימות באמצעות איחוד שירותי אימות הזהות של עומסי עבודה, משתמשים בפקודה
gcloud auth login:gcloud auth login --cred-file=FILEPATH.json
מחליפים את
FILEPATHבנתיב לקובץ התצורה של פרטי הכניסה.ב-CLI של gcloud יש תמיכה באיחוד שירותי אימות הזהות של עומסי עבודה ב-CLI של gcloud בגרסה 363.0.0 ואילך.
Terraform
יש תמיכה באיחוד שירותי אימות הזהות של עומסי עבודה אם משתמשים בספקGoogle Cloud בגרסה 3.61.0 ואילך:
terraform { required_providers { google = { source = "hashicorp/google" version = "~> 3.61.0" } } }BQ
כדי לבצע אימות באמצעות איחוד שירותי אימות הזהויות של עומסי עבודה, משתמשים בפקודה
gcloud auth login:gcloud auth login --cred-file=FILEPATH.json
מחליפים את
FILEPATHבנתיב לקובץ התצורה של פרטי הכניסה.ב-bq, יש תמיכה באיחוד שירותי אימות הזהויות של עומסי עבודה ב-CLI של gcloud בגרסה 390.0.0 ואילך.
אם אתם לא יכולים להשתמש בספריית לקוח שיש בה תמיכה באיחוד זהויות של עומסי עבודה, תוכלו לאמת באופן פרוגרמטי באמצעות ה-API בארכיטקטורת REST.
תרחישים מתקדמים
אימות של עומס עבודה באמצעות API ל-REST
אם אתם לא יכולים להשתמש בספריות הלקוח, כדי לאפשר לעומס עבודה חיצוני לקבל אסימון גישה לטווח קצר באמצעות ה-API ל-REST פועלים לפי ההוראות שכאן:
מקבלים פרטי כניסה מ-IdP החיצוני:
AWS
יוצרים מסמך JSON שמכיל מידע שבדרך כלל כלול בבקשה שנשלחת לנקודת הקצה
GetCallerIdentity()ב-AWS, כולל חתימת בקשה תקינה.איחוד שירותי אימות הזהות של עומסי עבודה מתייחס למסמך ה-JSON הזה בתור אסימון
GetCallerIdentity. האסימון מאפשר לאיחוד שירותי אימות הזהות של עומסי עבודה לאמת את הזהות בלי לחשוף את מפתח הגישה הסודי ל-AWS.דוגמה לאסימון
GetCallerIdentity:{ "url": "https://sts.amazonaws.com?Action=GetCallerIdentity&Version=2011-06-15", "method": "POST", "headers": [ { "key": "Authorization", "value" : "AWS4-HMAC-SHA256 Credential=AKIASOZTBDV4D7ABCDEDF/20200228/us-east-1/sts/aws4_request, SignedHeaders=host;x-amz-date,Signature=abcedefdfedfd" }, { "key": "host", "value": "sts.amazonaws.com" }, { "key": "x-amz-date", "value": "20200228T225005Z" }, { "key": "x-goog-cloud-target-resource", "value": "//iam.googleapis.com/projects/12345678/locations/global/workloadIdentityPools/my-pool/providers/my-aws-provider" }, { "key": "x-amz-security-token", "value": "GizFWJTqYX...xJ55YoJ8E9HNU=" } ] }באסימון נכללים השדות הבאים:
-
url: כתובת ה-URL של נקודת הקצה ב-AWS STS ל-GetCallerIdentity()עם גוף הבקשה הרגיל שלGetCallerIdentity()שמצורף כפרמטרים של שאילתה. לדוגמה,https://sts.amazonaws.com?Action=GetCallerIdentity&Version=2011-06-15. מומלץ להשתמש בנקודות קצה אזוריות של STS ולתכנן תשתית אמינה לעומסי העבודה. מידע נוסף זמין במאמר נקודות קצה אזוריות של AWS STS. method: ה-method של בקשת ה-HTTP:POSTheaders: הכותרות של בקשות ה-HTTP. הן חייבות לכלול:Authorization: חתימת הבקשהhost: שם המארח בשדהurl. למשל,sts.amazonaws.com-
x-amz-date: השעה שבה תשלחו את הבקשה, בפורמט ISO 8601 Basic. בדרך כלל, הערך הזה מוגדר לשעה הנוכחית, והוא משמש למניעה של התקפות שליחה מחדש -
x-goog-cloud-target-resource: שם המשאב המלא של ספק הזהויות, בלי קידומתhttps:לדוגמה://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID
x-amz-security-token: אסימון לסשן חובה רק אם אתם משתמשים בפרטי כניסה מאובטחים זמניים.
בדוגמה שכאן נוצר אסימון
GetCallerIdentityבקידודי תווים שמתאימים לכתובות URL. צריך לחלץ את האסימון בקידודי התווים שמתאימים לכתובות URL לשימוש במועד מאוחר יותר. לעיונכם, נוצר גם אסימון קריא לאנשים:מאתחלים את המשתנים הבאים:
Bash
SUBJECT_TOKEN_TYPE="urn:ietf:params:aws:token-type:aws4_request" SUBJECT_TOKEN=TOKEN
PowerShell
$SubjectTokenType = "urn:ietf:params:aws:token-type:aws4_request" $SubjectToken = "TOKEN"
TOKENהוא האסימון בקידודי התווים שמתאימים לכתובות URL GetCallerIdentityשנוצר על ידי הסקריפט.Azure
מתחברים למכונה וירטואלית של Azure שהוקצתה לה זהות מנוהלת ומקבלים טוקן גישה מ-Azure Instance Metadata Service (IMDS):
Bash
SUBJECT_TOKEN_TYPE="urn:ietf:params:oauth:token-type:jwt" SUBJECT_TOKEN=$(curl \ "http://169.254.169.254/metadata/identity/oauth2/token?resource=APP_ID_URI&api-version=2018-02-01" \ -H "Metadata: true" | jq -r .access_token) echo $SUBJECT_TOKEN
בפקודה הזו נעשה שימוש בכלי
jq. כברירת מחדל, הכליjqזמין ב-Cloud Shell.PowerShell
$SubjectTokenType = "urn:ietf:params:oauth:token-type:jwt" $SubjectToken = (Invoke-RestMethod ` -Uri "http://169.254.169.254/metadata/identity/oauth2/token?resource=APP_ID_URI&api-version=2018-02-01" ` -Headers @{Metadata="true"}).access_token Write-Host $SubjectToken
APP_ID_URIהוא URI של מזהה האפליקציה שהגדרתם לאיחוד שירותי אימות הזהות של עומסי עבודה.-
משתמשים בSecurity Token Service API כדי להחליף את פרטי הכניסה באסימון גישה לטווח קצר:
Bash
STS_TOKEN=$(curl https://sts.googleapis.com/v1/token \ --data-urlencode "audience=//iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID" \ --data-urlencode "grant_type=urn:ietf:params:oauth:grant-type:token-exchange" \ --data-urlencode "requested_token_type=urn:ietf:params:oauth:token-type:access_token" \ --data-urlencode "scope=https://www.googleapis.com/auth/cloud-platform" \ --data-urlencode "subject_token_type=$SUBJECT_TOKEN_TYPE" \ --data-urlencode "subject_token=$SUBJECT_TOKEN" | jq -r .access_token) echo $STS_TOKENPowerShell
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12 $StsToken = (Invoke-RestMethod ` -Method POST ` -Uri "https://sts.googleapis.com/v1/token" ` -ContentType "application/json" ` -Body (@{ "audience" = "//iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID" "grantType" = "urn:ietf:params:oauth:grant-type:token-exchange" "requestedTokenType" = "urn:ietf:params:oauth:token-type:access_token" "scope" = "https://www.googleapis.com/auth/cloud-platform" "subjectTokenType" = $SubjectTokenType "subjectToken" = $SubjectToken } | ConvertTo-Json)).access_token Write-Host $StsTokenמחליפים את הערכים הבאים:
PROJECT_NUMBER: מספר הפרויקט שמכיל את מאגר הזהויות של כוח העבודהPOOL_ID: מזהה של מאגר הזהויות של כוח העבודהPROVIDER_ID: מזהה ספק של מאגר הזהויות של כוח העבודה
כדי להשתמש בנקודות קצה אזוריות של Security Token Service, מחליפים את
https://sts.googleapis.com/v1/tokenבערכים הבאים:https://sts.REGION.rep.googleapis.com/v1/token
מחליפים את
REGIONבGoogle Cloud מיקום, לדוגמה,us-central1אוeurope-west4.אם אתם משתמשים בהתחזות לחשבון שירות, אתם צריכים להשתמש באסימון מ-Security Token Service כדי להפעיל את ה-method
generateAccessTokenמ-IAM Service Account Credentials API בשביל לקבל אסימון גישה.
אסימונים לשירותי Cloud Run
כשניגשים לשירות של Cloud Run, צריך להשתמש באסימון מזהה.
Bash
TOKEN=$(curl -0 -X POST https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/SERVICE_ACCOUNT_EMAIL:generateIdToken \ -H "Content-Type: text/json; charset=utf-8" \ -H "Authorization: Bearer $STS_TOKEN" \ -d @- <<EOF | jq -r .token { "audience": "SERVICE_URL" } EOF ) echo $TOKENPowerShell
$Token = (Invoke-RestMethod ` -Method POST ` -Uri "https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/SERVICE_ACCOUNT_EMAIL:generateIdToken" ` -Headers @{ "Authorization" = "Bearer $StsToken" } ` -ContentType "application/json" ` -Body (@{ "audience" = "SERVICE_URL" } | ConvertTo-Json)).token Write-Host $Tokenמחליפים את מה שכתוב בשדות הבאים:
-
SERVICE_ACCOUNT_EMAIL: כתובת האימייל של חשבון השירות. -
SERVICE_URL: כתובת ה-URL של השירות – לדוגמה,https://my-service-12345-us-central1.run.app. אפשר גם להגדיר אותו לנקודת קצה של שירות בהתאמה אישית. מידע נוסף מופיע במאמר בנושא הסבר על קהלים בהתאמה אישית.
טוקנים לפלטפורמות אחרות
כשניגשים לשירות אחר, צריך להשתמש באסימון גישה.
Bash
TOKEN=$(curl -0 -X POST https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/SERVICE_ACCOUNT_EMAIL:generateAccessToken \ -H "Content-Type: text/json; charset=utf-8" \ -H "Authorization: Bearer $STS_TOKEN" \ -d @- <<EOF | jq -r .accessToken { "scope": [ "https://www.googleapis.com/auth/cloud-platform" ] } EOF ) echo $TOKENPowerShell
$Token = (Invoke-RestMethod ` -Method POST ` -Uri "https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/SERVICE_ACCOUNT_EMAIL:generateAccessToken" ` -Headers @{ "Authorization" = "Bearer $StsToken" } ` -ContentType "application/json" ` -Body (@{ "scope" = , "https://www.googleapis.com/auth/cloud-platform" } | ConvertTo-Json)).accessToken Write-Host $Tokenמחליפים את מה שכתוב בשדות הבאים:
-
SERVICE_ACCOUNT_EMAIL: כתובת האימייל של חשבון השירות.
המאמרים הבאים
- מידע נוסף על איחוד זהויות של עומסי עבודה
- שיטות מומלצות לשימוש באיחוד שירותי אימות הזהות של עומסי עבודה
- איך אפשר לבצע ניהול ספקים ומאגרים של זהויות של עומסי עבודה
אלא אם צוין אחרת, התוכן של דף זה הוא ברישיון Creative Commons Attribution 4.0 ודוגמאות הקוד הן ברישיון Apache 2.0. לפרטים, ניתן לעיין במדיניות האתר Google Developers. Java הוא סימן מסחרי רשום של חברת Oracle ו/או של השותפים העצמאיים שלה.
עדכון אחרון: 2026-03-04 (שעון UTC).
[[["התוכן קל להבנה","easyToUnderstand","thumb-up"],["התוכן עזר לי לפתור בעיה","solvedMyProblem","thumb-up"],["סיבה אחרת","otherUp","thumb-up"]],[["התוכן קשה להבנה","hardToUnderstand","thumb-down"],["שגיאות בקוד לדוגמה או במידע","incorrectInformationOrSampleCode","thumb-down"],["חסרים לי פרטים או דוגמאות","missingTheInformationSamplesINeed","thumb-down"],["בעיה בתרגום","translationIssue","thumb-down"],["סיבה אחרת","otherDown","thumb-down"]],["עדכון אחרון: 2026-03-04 (שעון UTC)."],[],[]]