אבטחת שירותים לקצה העורפי
בנוסף לאימות בקשות של משתמשי קצה לשער שנפרס, חשוב לאבטח את הגישה בין API Gateway לבין שירותי ה-Backend. כדי למנוע גישה ציבורית לשירותים מנוהלים של ה-Backend (Cloud Run, פונקציות Cloud Run, App Engine וכו'), אפשר:
- מאפשרים רק גישה מאומתת לשירות לקצה העורפי.
- הענקת ההרשאות הנדרשות לחשבון השירות שמשויך להגדרת ה-API של השער, כדי שהשער יקבל הרשאה להפעיל את ה-Backend.
בדף הזה מתוארים השלבים הנדרשים כדי לאבטח את שירות לקצה העורפי, וגם התפקידים וההרשאות שחשבון השירות של שער ה-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. מידע נוסף על תפקידים והרשאות של משתמשים ששולחים בקשות להפעלה ב-Cloud Run
פונקציות Cloud Run
בשירותי קצה עורפיים של פונקציות Cloud Run, נעשה שימוש בניהול זהויות והרשאות גישה (IAM) כדי לשלוט ביכולת לצפות בפונקציות, ליצור, לעדכן ולמחוק אותן. IAM אוכף אימות של מבצעי קריאות לשירותי פונקציות של Cloud Run, כמו API Gateway, על ידי הענקת תפקידים.
הענקת תפקידים והרשאות באמצעות 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. מידע נוסף על הרשאות ותפקידים של משתמשים שמפעילים פונקציות ב-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
API Gateway לא תומך בהעברת בקשות (proxying) ל-API אחרים Google Cloud . המשמעות היא שהגדרות API שמפנות לעורף קצה אחד או יותר עם *.googleapis.com (למשל bigquery.googleapis.com) יגרמו לכך שהקריאות ייכשלו עם קוד תגובה 401.
API Gateway מבצע אימות לקצה העורפי באמצעות אסימון מזהה, בעוד שממשקי API אחרים Google Cloud דורשים אסימון גישה. אין פתרונות עקיפים מובנים בשלב הזה.