אבטחת שירותים לקצה העורפי
בנוסף לאימות בקשות של משתמשי קצה לשער שנפרס, חשוב לאבטח את הגישה בין 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 ופונקציות ברקע.
- כברירת מחדל, פונקציות HTTP דורשות אימות. אתם יכולים להגדיר 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.updateclientauthconfig.clients.createclientauthconfig.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.