אבטחת שירותים לקצה העורפי

בנוסף לאימות בקשות של משתמשי קצה לשער שנפרס, חשוב לאבטח את הגישה בין API Gateway לבין שירותי הקצה העורפי. כדי למנוע גישה ציבורית לשירותים המנוהלים בקצה העורפי (Cloud Run, פונקציות Cloud Run, ‏App Engine וכו'), אתם יכולים:

  • מתן גישה מאומתת בלבד לשירות לקצה העורפי.
  • הענקת ההרשאות הנדרשות לחשבון השירות שמשויך להגדרת ה-API של השער, כדי שלשער תהיה הרשאה להפעיל את הקצה העורפי.

בדף הזה מוסבר איך לאבטח את שירות הקצה העורפי, ומתוארים התפקידים וההרשאות שנדרשים לחשבון השירות של השער כדי לגשת לשירותים האלה.

Cloud Run

כברירת מחדל, כל השירותים שמנוהלים במלואם ב-Cloud Run נפרסים באופן פרטי, כלומר אי אפשר לגשת אליהם בלי לספק פרטי כניסה לאימות בבקשה.

שירותי Cloud Run מאובטחים באמצעות IAM. כברירת מחדל, אפשר לקרוא לשירותי Cloud Run מכל תפקיד שכולל את ההרשאה run.routes.invoke.

אפשר להגדיר את IAM בשירותי Cloud Run (מנוהלים באופן מלא) כדי לתת גישה למשתמשים נוספים.

ב-API Gateway, הגישה לשירותי Cloud Run מופעלת על ידי מתן התפקידים וההרשאות המתאימים לחשבון השירות של השער: התפקיד roles/run.invoker או תפקיד שמכיל את ההרשאה run.routes.invoke.

אתם יכולים לשלוט בגישה של שער לשירות ספציפי באמצעות IAM ברמת השירות, או לכל השירותים בפרויקט באמצעות IAM ברמת הפרויקט.

אם בקשה של שער לשירות Cloud Run נדחית, ודאו שלחשבון השירות של השער הוקצה התפקיד roles/run.invoker, ושלחשבון השירות של השער יש את ההרשאה run.routes.invoke. מידע נוסף על התפקידים וההרשאות של המפעילים זמין בחומר העזר בנושא IAM ב-Cloud Run.

פונקציות Cloud Run

בשירותים לקצה העורפי של פונקציות Cloud Run, משתמשים בניהול זהויות והרשאות גישה (IAM) כדי לשלוט ביכולת להציג, ליצור, לעדכן ולמחוק פונקציות. כדי לאכוף אימות של מבצעי קריאות לשירותי פונקציות Cloud Run, כמו API Gateway, צריך להקצות תפקידים ב-IAM.

הקצאת תפקידים והרשאות באמצעות IAM מאפשרת לשלוט בשתי קבוצות של פעולות:

  • פעולות של מפתחים: יצירה, עדכון ומחיקה של פונקציות, וגם ניהול הגישה לפונקציות.
  • הפעלת פונקציה: גורמת להרצה של פונקציה.

הענקת היכולת להפעיל פונקציה שונה עבור פונקציות HTTP ופונקציות ברקע.

כדי לאפשר ל-API Gateway לשלוח קריאות לשירות לקצה העורפי של פונקציות Cloud Run, צריך להקצות לחשבון השירות של השער את התפקיד roles/cloudfunctions.invoker או כל תפקיד שכולל את ההרשאה cloudfunctions.functions.invoke.

אתם יכולים לשלוט בגישה של השער לפונקציה ספציפית באמצעות IAM ברמת השירות, או לכל הפונקציות בפרויקט באמצעות IAM ברמת הפרויקט.

אם הבקשות של השער לשירות פונקציות Cloud Run נדחות, צריך לוודא שלחשבון השירות של השער הוקצה התפקיד roles/cloudfunctions.invoker, ושלחשבון השירות של השער יש את ההרשאה cloudfunctions.functions.invoke. מידע נוסף על תפקידים והרשאות של גורמים מפעילים זמין בחומר העזר בנושא IAM ב-Cloud Functions.

App Engine

כדי לאבטח את האפליקציה ב-App Engine, צריך להשתמש בשרת proxy לאימות זהויות (IAP) כדי לוודא שהבקשות מאומתות.

פועלים לפי השלבים להפעלת IAP בפרויקט שבו פרוס שירות הקצה העורפי של App Engine. הפעלת IAP תבטיח שהגישה לאפליקציית הקצה העורפי של App Engine מאובטחת.

כדי לאפשר ל-API Gateway לשלוח קריאה לשירות לקצה העורפי של App Engine, פועלים לפי השלבים שמפורטים במאמר הגדרת גישה ל-IAP כדי להקצות לחשבון השירות שמשויך לשער את התפקיד IAP-secured Web App User. בנוסף, צריך להקצות לחשבון השירות תפקיד שכולל את ההרשאות הבאות:

  • appengine.applications.update
  • clientauthconfig.clients.create
  • clientauthconfig.clients.getWithSecret

ממשקי API Google Cloud אחרים

Google Cloud ממשקי API כמו aiplatform.googleapis.com או bigquery.googleapis.com דורשים טוקן גישה ודוחים את הטוקן של המזהה ש-API Gateway שולח לקצוות עורפיים אחרים. היכולת של שער לקרוא לממשקי ה-API האלה תלויה במצב הסטרימינג שלו:

  • שערים לסטרימינג: שער עם effectiveStreamingMode של EFFECTIVE_STREAMING_MODE_ENABLED מאמת באמצעות אסימון גישה לחשבון השירות של השער לכל קצה עורפי שהמארח שלו מסתיים ב-.googleapis.com או ב-.vertexai.goog. לטוקן הגישה יש רק את ההיקף https://www.googleapis.com/auth/cloud-platform, ולכן השער לא יכול לקרוא לשיטות API שדורשות היקף OAuth אחר.

    רכיבי backend אחרים באותו שער עדיין מקבלים טוקן של מזהה. אם מוגדר בקצה העורפי disable_auth (OpenAPI 2.0) או disableAuth (OpenAPI 3.x), הוא לא מקבל טוקן. לשדות jwt_audience (OpenAPI 2.0) ו-jwtAudience (OpenAPI 3.x) אין השפעה על הקצוות העורפיים האלה.

    מקצים לחשבון השירות של השער את התפקיד ב-IAM שנדרש ל-API היעד, כמו התפקיד "משתמש בפלטפורמת הסוכנים" (roles/aiplatform.user) ב-Gemini Enterprise Agent Platform‏ (aiplatform.googleapis.com). שער סטרימינג שעדיין לא שולח טוקני גישה יתחיל לעשות את זה בפעם הבאה ש-API Gateway יפיץ עדכון לשער. כדי להחליף אותו מיד, צריך לעדכן אותו להגדרת API חדשה.

  • שערים אחרים: שער עם effectiveStreamingMode של EFFECTIVE_STREAMING_MODE_DISABLED לא תומך בקריאה לממשקי API של Google Cloud, והקריאות עלולות להיכשל עם קוד התגובה 401.