הדף הזה רלוונטי ל-Apigee ול-Apigee Hybrid.
לעיון במסמכי התיעוד של
Apigee Edge
במאמר הזה מוסבר איך להגדיר ולפרוס proxy ל-API שמוגדר להשתמש באימות של Google.
מבוא
Apigee תומך בשימוש באסימוני Google OAuth או באסימוני OpenID Connect כדי לבצע אימות מול שירותי Google כמו Cloud Logging ו-Secret Manager, ומול שירותים בהתאמה אישית שפועלים במוצרים מסוימים של Google Cloud, כמו Cloud Functions ו-Cloud Run. Google Cloud
כדי להשתמש בתכונה הזו, צריך להגדיר את רכיב ה-XML <Authentication> באחד מההקשרים הבאים:
- כללי מדיניות של AssignMessage
- מדיניות ServiceCallout
- ExternalCallout policies
- הגדרות TargetEndpoint
אחרי שמבצעים כמה שלבי הגדרה בסיסיים (כפי שמתואר בנושא הזה), Apigee מבצע את יצירת האסימון ומבצע קריאות מאובטחות לשירותי Google ממוקדים או לשירותים מותאמים אישית שמתארחים בשבילכם, בלי שתצטרכו להגדיר ידנית כותרות אימות או לשנות בקשה לשירות בדרך אחרת. מנקודת המבט של מפתח API, תהליך הקריאה לשירותי Google מתוך proxy ל-API שהוגדר כראוי מתבצע בצורה חלקה.
אפשרויות להגדרת proxy ל-API
בקטע הזה מוסבר איפה אפשר להשתמש ברכיב <Authentication> XML כדי להפעיל אימות באמצעות אסימון 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, כששרת ה-proxy מוגדר לבצע קריאות מאומתות לשירותי Google או לשירותים מותאמים אישית שמתארחים ב-Google Cloud. בשלבים האלה מניחים שכבר יצרתם את ה-proxy, ושכללתם בו רכיב <Authentication> באחד מההקשרים הנתמכים שמופיעים ברשימה.
- יוצרים חשבון שירות של Google באותו פרויקט Google Cloud
שבו נוצר הארגון שלכם ב-Apigee. אפשר ליצור את חשבון השירות במסוף Google Cloud או באמצעות Google Cloud CLI. ראו יצירה וניהול של חשבונות שירות.
כשפורסים 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"עם:
- SA_NAME: השם שציינתם כשייצרתם את חשבון השירות.
- PROJECT_ID: מזהה הפרויקט. המזהה זהה לשם הארגון.
- MEMBER: החבר שאליו רוצים להוסיף את הקישור. הפורמט צריך להיות
user|group|serviceAccount:emailאוdomain:domain.
- מוודאים שלחשבון השירות של Apigee יש אפשרות להתחזות לחשבון השירות של ה-proxy. כדי לספק את היכולת הזו, צריך להעניק לחשבון השירות של Apigee את התפקיד
iam.serviceAccountTokenCreatorבחשבון השירות של ה-proxy. מידע נוסף זמין במאמר מידע על הרשאות של חשבון שירות.כדי להגדיר את חשבון השירות עם התפקיד הזה באמצעות ה-CLI של gcloud:
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \ --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com" \ --role="roles/iam.serviceAccountTokenCreator"עם:
- SERVICE_ACCOUNT_EMAIL: כתובת האימייל של חשבון השירות.
- PROJECT_NUMBER: מספר הפרויקט ב- Google Cloud .
- נותנים לחשבון השירות את ההרשאות שנדרשות כדי לתקשר עם שירותי Google שהוגדרו כיעדים. לדוגמה, אם רוצים לקרוא לשירות Google Logging, חשבון השירות הזה צריך לכלול את ההרשאות הנדרשות כדי לתקשר עם השירות הזה. מידע נוסף זמין במאמר הסבר על תפקידים.
- לפני שמפעילים proxy ל-API שמוגדר להשתמש באימות של Google, צריך:
- השם של חשבון השירות שיצרתם קודם. לדוגמה:
SA_NAME@PROJECT_ID.iam.gserviceaccount.com - כמשתמש שמבצע את הפריסה (הפורס), צריכה להיות לכם כבר ההרשאה
iam.serviceAccounts.actAsבחשבון השירות, או שצריך להעניק לכם אותה, כמו שצוין בשלב 2.
- השם של חשבון השירות שיצרתם קודם. לדוגמה:
- פורסים את ה-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. לדוגמה:
- בסיום ה-Deployment (פריסה), בודקים את ה-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 או באמצעות ה-CLI של 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 (זהה לשם הארגון).
-
- אם משתמשים בממשק המשתמש, תתבקשו לספק שם של חשבון שירות. משתמשים בשם של חשבון השירות של הפרוקסי שיצרתם קודם. לדוגמה:
- בסיום ה-Deployment (פריסה), בודקים את ה-proxy ל-API כדי לוודא ששירות Google מחזיר את התגובה הצפויה.
כאשר:
מידע על הרשאות של חשבון שירות
כדי להגדיר proxy ל-API לשימוש באימות של Google, צריך ליצור חשבון שירות כמו שמתואר בטבלה הבאה. אפשר גם לקרוא את המאמר בנושא יצירה וניהול של חשבונות שירות.
| חשבון שירות | חובה עבור | תיאור |
|---|---|---|
| בשם אחרים | Apigee ו-Apigee Hybrid | יש לו הרשאות שנדרשות ל-proxy ל-API כדי לבצע קריאות מאומתות לשירותי Google שהוגדרו כיעדים.
|
| זמן ריצה | Apigee Hybrid בלבד | מאפשרת לסביבת זמן הריצה של Apigee ליצור אסימונים לאימות בשירותי Google שנדרשים על ידי proxy ל-API. חשבון השירות הזה "מתחזה" לחשבון השירות הספציפי ל-proxy כדי לבצע קריאות מאומתות בשמו.
|