הדף הזה רלוונטי ל-Apigee ול-Apigee Hybrid.
לעיון במסמכי התיעוד של
Apigee Edge
במאמר הזה מוסבר איך להגדיר ולפרוס proxy ל-API שמוגדר להשתמש באימות של Google.
מבוא
Apigee תומך בשימוש באסימוני OAuth של Google או באסימוני OpenID Connect לאימות מול שירותי Google כמו Cloud Logging ו-Secret Manager ושירותים בהתאמה אישית שפועלים במוצרים מסוימים של Google Cloud , כמו Cloud Functions ו-Cloud Run.
כדי להשתמש בתכונה הזו, צריך להגדיר את רכיב ה-XML <Authentication> באחד מההקשרים הבאים:
- כללי מדיניות של AssignMessage
- מדיניות ServiceCallout
- ExternalCallout policies
- הגדרות TargetEndpoint
אחרי שמבצעים כמה שלבי הגדרה בסיסיים (כפי שמתואר בנושא הזה), מערכת Apigee יוצרת את האסימון ומבצעת בשבילכם קריאות מאובטחות לשירותי Google ממוקדים או לשירותים מותאמים אישית שמתארחים בשרתים, בלי שתצטרכו להגדיר ידנית כותרות אימות או לשנות בקשה לשירות בדרך אחרת. מנקודת המבט של מפתח API, תהליך הקריאה לשירותי Google מתוך proxy ל-API שהוגדר כראוי מתבצע בצורה חלקה.
אפשרויות להגדרת proxy ל-API
בקטע הזה מוסבר איפה אפשר להשתמש ברכיב ה-XML <Authentication> כדי להפעיל אימות באמצעות אסימון OAuth של Google או OpenID Connect:
| אפשרות הגדרה | תיאור |
|---|---|
| AssignMessage policy | המדיניות AssignMessage מאפשרת להוסיף את הכותרות שנדרשות לאימות ב-Google ולהחדרת אסימונים. לפרטים נוספים ולדוגמאות לשימוש, אפשר לעיין במאמר בנושא מדיניות AssignMessage. |
| ServiceCallout policy | בעזרת המדיניות ServiceCallout אפשר להפעיל שירותים פנימיים או חיצוניים אחרים מתוך proxy ל-API. לדוגמה, ServiceCallout יכול לקרוא לשירותים חיצוניים של Google או לשירותים בהתאמה אישית שמתארחים בשרתים. לפרטים על השימוש ולדוגמאות, אפשר לעיין במאמר בנושא מדיניות ServiceCallout. |
| ExternalCallout policy | המדיניות ExternalCallout מאפשרת לשלוח בקשות gRPC לשרת gRPC כדי להטמיע התנהגות מותאמת אישית שלא נתמכת על ידי מדיניות Apigee. פרטים ודוגמאות לשימוש מופיעים במאמר בנושא מדיניות ExternalCallout. |
| TargetEndpoint | מציינים שירות Google או שירות בהתאמה אישית שמתארח כנקודת קצה של יעד proxy ל-API. פרטים ודוגמאות לשימוש מופיעים במאמר חומר עזר בנושא הגדרת שרת proxy של API. |
ההקשרים הנתמכים של אסימון אימות של Google
לרכיב <Authentication> יש שתי הגדרות של רכיבי משנה:
<GoogleAccessToken> או <GoogleIDToken>. בטבלה הבאה מוצגים ההקשרים שבהם הרכיבים האלה נתמכים:
| בשימוש ב | GoogleAccessToken | GoogleIDToken |
|---|---|---|
| מדיניות AssignMessage | נתמך | נתמך |
| מדיניות ServiceCallout | נתמך | נתמך |
| ExternalCallout policy | לא נתמך | נתמך |
| TargetEndpoint | נתמך | נתמך |
שלבי הפריסה
בקטע הזה מוסבר איך לפרוס proxy ל-API שמשתמש באימות של Google כדי לקרוא לשירותי Google ממוקדים או לשירותים מותאמים אישית שמתארחים ב-Google Cloud. אנחנו מסבירים את שלבי הפריסה של Apigee ושל Apigee Hybrid בנפרד.
פריסה ב-Apigee
בשלבים הבאים מוסבר איך לפרוס proxy ל-API ב-Apigee, כשהשרת מוגדר לבצע קריאות מאומתות לשירותי Google או לשירותים מותאמים אישית שמתארחים ב-Google. השלבים מבוססים על ההנחה שכבר יצרתם את ה-proxy, ושהוא כולל רכיב <Authentication> באחד מההקשרים הנתמכים שמופיעים ברשימה.
- יוצרים חשבון שירות של Google באותו פרויקט Google Cloud
שבו נוצר הארגון שלכם ב-Apigee. כשפורסים proxy ל-API שמוגדר להשתמש באימות של Google, צריך לספק את השם של חשבון השירות הזה. אסימוני ה-OAuth שנוצרים ייצגו את חשבון השירות.
אפשר ליצור את חשבון השירות במסוף Google Cloud או באמצעות הפקודה
gcloud. איך יוצרים ומנהלים חשבונות שירות - נותנים למשתמש שיבצע את הפריסה (הפורס) את ההרשאה
iam.serviceAccounts.actAsבחשבון השירות. מידע נוסף זמין במאמר מידע על הרשאות בחשבון שירות.gcloud iam service-accounts add-iam-policy-binding \ SA_NAME@PROJECT_ID.iam.gserviceaccount.com \ --member="MEMBER" \ --role="roles/iam.serviceAccountUser"
- PROJECT_ID: מזהה הפרויקט. המזהה זהה לשם הארגון.
- SA_NAME: השם שסיפקתם כשיוצרים את חשבון השירות.
- MEMBER: החבר שאליו רוצים להוסיף את הקישור. הפורמט צריך להיות
user|group|serviceAccount:emailאוdomain:domain. - נותנים לחשבון השירות את ההרשאות שנדרשות כדי לתקשר עם שירותי Google שהוגדרו כיעדים. לדוגמה, אם רוצים לקרוא לשירות Google Logging, חשבון השירות הזה צריך לכלול את ההרשאות הנדרשות כדי לתקשר עם השירות הזה. מידע נוסף זמין במאמר הסבר על תפקידים.
- לפני שמפעילים proxy ל-API שהוגדר לשימוש באימות של Google, צריך:
- השם של חשבון השירות שיצרתם קודם. לדוגמה:
SA_NAME@PROJECT_ID.iam.gserviceaccount.com - למשתמש שמבצע את הפריסה (הפורס), צריכה להיות הרשאת
iam.serviceAccounts.actAsבחשבון השירות, או שצריך להעניק לו אותה. מידע נוסף זמין במאמר הענקה, שינוי וביטול גישה למשאבים.
- השם של חשבון השירות שיצרתם קודם. לדוגמה:
- פורסים את ה-proxy ל-API שמכיל את הגדרות האימות של Google שהטמעתם. אפשר להשתמש בממשק המשתמש או ב-API של Apigee כדי לפרוס את ה-proxy. מידע נוסף זמין במאמר פריסת proxy ל-API.
- אם משתמשים בממשק המשתמש, תתבקשו לציין שם של חשבון שירות. משתמשים בשם של חשבון השירות של הפרוקסי שיצרתם בשלב 1. לדוגמה:
SA_NAME@PROJECT_ID.iam.gserviceaccount.com.
- אם אתם מעדיפים לפרוס את ה-proxy באמצעות Apigee deployment API, הנה דוגמה לפקודת cURL שבה תוכלו להשתמש. שימו לב שהפקודה כוללת שם של חשבון שירות כפרמטר של שאילתה. זה השם של חשבון השירות שיצרתם בשלב 1:
curl -H "Authorization: Bearer $TOKEN" \ "https://apigee.googleapis.com/v1/organizations/ORG_NAME/environments/ENV_NAME/apis/apiproxy/revisions/2/deployments?serviceAccount=SA_NAME@PROJECT_ID.iam.gserviceaccount.com" \ -H "Content-Type: application/json" -X POST
כאשר:
-
TOKEN: טוקן OAuth שצריך לקבל בתמורה לפרטי הכניסה שלכם ב-Google. פרטים נוספים זמינים במאמר בנושא קבלת אסימון גישה מסוג OAuth 2.0. -
ORG_NAME: שם הארגון שלכם ב-Apigee. -
ENV_NAME: השם של הסביבה שבה רוצים לפרוס את proxy ל-API. -
SA_NAME: השם שסיפקתם כשפתחתם את חשבון השירות. -
PROJECT_ID: מזהה הפרויקט ב- Google Cloud (זהה לשם הארגון).
-
- אם משתמשים בממשק המשתמש, תתבקשו לציין שם של חשבון שירות. משתמשים בשם של חשבון השירות של הפרוקסי שיצרתם בשלב 1. לדוגמה:
- בסיום הפריסה, בודקים את ה-proxy ל-API כדי לוודא ששירות Google מחזיר את התגובה הצפויה.
כאשר:
פריסה ב-Apigee Hybrid
בשלבים הבאים מוסבר איך לפרוס ב-Apigee Hybrid פרוקסי של API שהוגדר לבצע קריאות מאומתות לשירותי Google.
השלבים מבוססים על ההנחה שכבר יצרתם את ה-proxy, ושהוא כולל רכיב <Authentication> באחד מההקשרים הנתמכים שמופיעים ברשימה.
- יוצרים חשבון שירות ומפתח לרכיב runtime של Apigee hybrid באמצעות אחת מהשיטות הבאות:
- משתמשים בכלי
create-service-accountשמסופק עם Apigee hybrid כדי ליצור חשבון שירותapigee-runtime. הכלי יוצר את חשבון השירות ומחזיר מפתח של חשבון השירות. פרטים נוספים זמינים במאמר בנושא create-service-account. - יוצרים את חשבון השירות במסוף Google Cloud או באמצעות הפקודה
gcloud. איך יוצרים ומנהלים חשבונות שירות הוראות לאחזור המפתח של חשבון השירות מופיעות במאמר בנושא יצירה וניהול של מפתחות לחשבונות שירות.
- משתמשים בכלי
- פותחים את הקובץ
overrides.yamlומציינים את הנתיב לקובץ המפתח של חשבון השירות לכל סביבה שנדרשת בה יכולת אימות של Google:envs: - name: "ENVIRONMENT_NAME" serviceAccountPaths: runtime: "KEY_FILE_PATH"לדוגמה:
envs: - name: "test" serviceAccountPaths: runtime: "./service_accounts/my_runtime_sa.json" - מחילים את קובץ הביטולים על האשכול באמצעות
Helm:
helm upgrade ENV_NAME apigee-env/ \ --namespace APIGEE_NAMESPACE \ --set env=ENV_NAME \ --atomic \ -f overrides.yaml
- יוצרים חשבון שירות שני, שנקרא לו חשבון השירות proxy. חשבון השירות הזה צריך להיות באותו פרויקט ב- Google Cloudשבו השתמשתם כדי ליצור את הארגון שלכם ב-Apigee. כשפורסים proxy של API שמוגדר להשתמש באימות של Google, צריך לספק את כתובת האימייל של חשבון השירות הזה. אסימוני ה-OAuth שנוצרים ייצגו את חשבון השירות.
- נותנים למשתמש שיבצע את הפריסה (הפורס) את ההרשאה
iam.serviceAccounts.actAsבחשבון השירות. מידע נוסף זמין במאמר מידע על הרשאות בחשבון שירות.gcloud iam service-accounts add-iam-policy-binding \ SA_NAME@PROJECT_ID.iam.gserviceaccount.com \ --member="MEMBER" \ --role="roles/iam.serviceAccountUser"
- PROJECT_ID: מזהה הפרויקט. המזהה זהה לשם הארגון.
- SA_NAME: השם שציינתם כשיצרתם את חשבון השירות.
- MEMBER: החבר שאליו רוצים להוסיף את הקישור. הפורמט צריך להיות user|group|serviceAccount:email או domain:domain.
- נותנים לחשבון השירות של הפרוקסי את ההרשאות שנדרשות כדי לתקשר עם שירותי Google שהוגדרו כיעדים. לדוגמה, אם רוצים לקרוא לשירות Google Logging, חשבון השירות הזה צריך לכלול את ההרשאות הנדרשות כדי לתקשר עם השירות הזה. מידע נוסף זמין במאמר הסבר על תפקידים.
- מוודאים שלסביבת זמן הריצה יש אפשרות להתחזות לחשבון השירות של ה-proxy. כדי לספק את היכולת הזו, מעניקים לחשבון השירות של זמן הריצה את התפקיד
iam.serviceAccountTokenCreatorבחשבון השירות של ה-proxy. אפשר גם לקרוא את המאמר מידע על הרשאות של חשבון שירות. לדוגמה:gcloud iam service-accounts add-iam-policy-binding \ PROXY_SA_NAME@PROJECT_ID.iam.gserviceaccount.com \ --member=serviceAccount:RUNTIME_SA_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator
כאשר:
- PROJECT_ID: מזהה הפרויקט. המזהה זהה לשם הארגון. שימו לב שלא הייתם צריכים להשתמש בפרויקט שמשויך לארגון כדי ליצור את חשבון השירות של זמן הריצה. חשוב לוודא שמשתמשים במזהי הפרויקט הנכונים בפקודה הזו.
- PROXY_SA_NAME: המזהה של חשבון השירות של ה-proxy.
- RUNTIME_SA_NAME: המזהה של חשבון השירות של זמן הריצה.
- לפני שמפעילים proxy ל-API שהוגדר לשימוש באימות של Google, צריך:
- השם של חשבון השירות של הפרוקסי שיצרתם קודם. לדוגמה:
PROXY_SA_NAME@PROJECT_ID.iam.gserviceaccount.com - למשתמש שמבצע את הפריסה צריכה להיות כבר ההרשאה
iam.serviceAccounts.actAsבפרויקט Google Cloud שבו מוקצה ארגון Apigee, או שצריך להעניק לו את ההרשאה הזו. מידע נוסף זמין במאמר הענקה, שינוי וביטול גישה למשאבים.
- השם של חשבון השירות של הפרוקסי שיצרתם קודם. לדוגמה:
- פורסים את ה-proxy ל-API שמכיל את הגדרות האימות של Google שהטמעתם. אפשר להשתמש בממשק המשתמש או ב-API של Apigee כדי לפרוס את ה-proxy. מידע נוסף זמין במאמר פריסת proxy ל-API.
- אם משתמשים בממשק המשתמש, תתבקשו לציין שם של חשבון שירות. משתמשים בשם של חשבון השירות של הפרוקסי שיצרתם קודם. לדוגמה:
PROXY_SA_NAME@PROJECT_ID.iam.gserviceaccount.com.
- אם אתם מעדיפים לפרוס את ה-proxy באמצעות Apigee deployment API, הנה דוגמה לפקודת cURL שבה תוכלו להשתמש. שימו לב שהפקודה כוללת שם של חשבון שירות כפרמטר של שאילתה. זה השם של חשבון השירות של ה-proxy:
curl -H "Authorization: Bearer $TOKEN" \ "https://apigee.googleapis.com/v1/organizations/ORG_NAME/environments/ENV_NAME/apis/apiproxy/revisions/2/deployments?serviceAccount=PROXY_SA_NAME@PROJECT_ID.iam.gserviceaccount.com" \ -H "Content-Type: application/json" -X POST
כאשר:
-
TOKEN: טוקן OAuth שצריך לקבל בתמורה לפרטי הכניסה שלכם ב-Google. פרטים נוספים זמינים במאמר בנושא קבלת אסימון גישה מסוג OAuth 2.0. -
ORG_NAME: שם הארגון שלכם ב-Apigee. -
ENV_NAME: השם של הסביבה שבה רוצים לפרוס את proxy ל-API. -
PROXY_SA_NAME: השם של חשבון השירות של הפרוקסי. -
PROJECT_ID: מזהה הפרויקט ב- Google Cloud (זהה לשם הארגון).
-
- אם משתמשים בממשק המשתמש, תתבקשו לציין שם של חשבון שירות. משתמשים בשם של חשבון השירות של הפרוקסי שיצרתם קודם. לדוגמה:
- בסיום הפריסה, בודקים את ה-proxy ל-API כדי לוודא ששירות Google מחזיר את התגובה הצפויה.
כאשר:
מידע על הרשאות של חשבון שירות
כדי להגדיר proxy ל-API לשימוש באימות של Google, צריך ליצור חשבון שירות כמו שמתואר בטבלה הבאה. אפשר גם לקרוא את המאמר בנושא יצירה וניהול של חשבונות שירות.
| חשבון שירות | חובה עבור | תיאור |
|---|---|---|
| בשם אחרים | Apigee ו-Apigee Hybrid | יש לו הרשאות שנדרשות ל-proxy ל-API כדי לבצע קריאות מאומתות לשירותי Google שהוגדרו כיעד.
|
| זמן ריצה | Apigee Hybrid בלבד | מאפשר לסביבת זמן הריצה של Apigee ליצור טוקנים לאימות בשירותי Google שנדרשים על ידי proxy ל-API. חשבון השירות הזה "מתחזה" לחשבון השירות הספציפי של ה-proxy כדי לבצע קריאות מאומתות בשמו.
|