שימוש ב-VPC Service Controls עם Apigee ו-Apigee Hybrid

הדף הזה רלוונטי ל-Apigee ול-Apigee Hybrid.

לעיון במסמכי התיעוד של Apigee Edge

‫Apigee משתלב עם VPC Service Controls, שמאפשרים לכם לבודד משאבים בפרויקטים שלכם ב-Google Cloud. כך אפשר למנוע דליפות או חילוץ של נתונים.

בקטע הזה מוסבר איך להשתמש ב-VPC Service Controls עם Apigee.

סקירה כללית

‫VPC Service Controls מגדיר גבול גזרה לשירות שמשמש כגבול בין פרויקט לבין שירותים אחרים. אזורי אבטחה הם שיטה ברמת הארגון להגנה על שירותי Google Cloud בפרויקטים שלכם, כדי לצמצם את הסיכון לזליגת נתונים.

בנוסף, באמצעות VPC Service Controls אפשר לוודא שללקוחות ב-perimeter שיש להם גישה פרטית למשאבים לא תהיה גישה למשאבים לא מורשים מחוץ ל-perimeter.

סקירה מפורטת של היתרונות של גבולות גזרה לשירות זמינה במאמר סקירה כללית על VPC Service Controls.

כשמשתמשים ב-VPC Service Controls, חשוב לשים לב לדברים הבאים:

  • גם פרויקט Google Cloud וגם זמן הריצה המשויך אליו כלולים ב-service perimeter של VPC של הפרויקט.
  • אפשר להגביל את האינטראקציה בין שירותים בתוך perimeter באמצעות התכונה VPC network accessible services.

גם Apigee וגם Apigee Hybrid משולבים עם VPC Service Controls. רשימה מלאה של מוצרים שמשולבים עם VPC Service Controls זמינה במאמר מוצרים נתמכים.

ההשפעה על הקישוריות לאינטרנט

כש-VPC Service Controls מופעל, הגישה לאינטרנט מושבתת: סביבת זמן הריצה של Apigee לא תתקשר יותר עם אף יעד באינטרנט הציבורי. כדי להפנות תנועה ל-VPC, צריך ליצור מסלולים מותאמים אישית. איך מייבאים ומייצאים נתיבים מותאמים אישית

הגדרת VPC Service Controls עם Apigee

התהליך הכללי להגדרת VPC Service Controls עם Apigee הוא כדלקמן:

  1. מפעילים את VPC Service Controls.
  2. יוצרים גבול גזרה חדש לשירות.
  3. מגדירים את גבולות הגזרה לשירות.

השלבים האלה מפורטים בהמשך.

כדי להגדיר את VPC Service Controls עם Apigee:

  1. מפעילים את VPC Service Controls לחיבור לרשת השכנה מהרשת שלכם אל Apigee על ידי הרצת הפקודה הבאה:

    gcloud services vpc-peerings enable-vpc-service-controls \
      --network=SHARED_VPC_NETWORK --project=PROJECT_ID

    כאשר:

    • ‫SHARED_VPC_NETWORK הוא השם של רשת ה-VPC המשותפת.
    • ‫PROJECT_ID הוא שם הפרויקט שמארח את רשת ה-VPC המשותפת. זה לא הפרויקט שמשמש ליצירת ארגון Apigee.

    הפקודה הזו מפעילה את VPC Service Controls בפרויקט. אפשר להריץ את הפקודה הזו כמה פעמים כדי להפעיל את VPC Service Controls ליותר מפרויקט אחד.

  2. יוצרים גבול גזרה חדש לפי ההוראות במאמר הפעלה מהירה של VPC Service Controls. כשיוצרים גבולות גזרה, בוחרים אילו פרויקטים להוסיף לגבולות הגזרה ואילו שירותים לאבטח.

    ב-Apigee וב-Apigee Hybrid, ‏ Google ממליצה לאבטח את כל השירותים כשיוצרים היקף, כולל Apigee API.

    מידע נוסף זמין במאמר יצירת גבולות גזרה לשירות.

  3. מגדירים את גבולות הגזרה לשירות, כמו שמתואר במאמר פרטים והגדרה של גבולות גזרה לשירות.

כדי להוסיף פורטל משולב בתוך ההיקף, אפשר לעיין במאמר הוספת פורטל משולב להיקף.

הגדרת VPC Service Controls עם Apigee Hybrid

‫Apigee hybrid תומך ב-VPC Service Controls, אבל יש עוד שלבים שצריך לבצע. התהליך הכללי לשילוב של Apigee hybrid עם VPC Service Controls הוא כדלקמן:

  1. הגדרת קישוריות פרטית.
  2. מאבטחים שירותים נוספים בתוך גבולות הגזרה.
  3. מגדירים מאגר פרטי. (מאגר פרטי הוא מאגר שנמצא בתוך ההיקף. הוא לא חייב להיות מאגר מקומי, כל עוד הוא נמצא בתוך ההיקף).
  4. מעבירים את תמונות Apigee למאגר הפרטי.
  5. מעדכנים את ההגדרות כדי להשתמש במאגר הפרטי במהלך תהליך ההתקנה וההגדרה ההיברידי.

כל אחד מהשלבים האלה מפורט בהמשך.

כדי להגדיר את VPC Service Controls עם Apigee Hybrid:

  1. מגדירים כתובות IP פרטיות למארחים ברשת ההיברידית, כמו שמתואר במאמר בנושא הגדרת קישוריות פרטית לממשקי API ולשירותים של Google. כדי לעשות את זה, צריך להגדיר מסלולים, כללים של חומת אש ורשומות DNS כדי לאפשר לממשקי Google API לגשת לכתובות ה-IP הפרטיות האלה.
  2. פועלים לפי השלבים במאמר הגדרת VPC Service Controls באמצעות Apigee.

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

    • Anthos Service Mesh
    • Cloud Monitoring (Stackdriver)
    • ‫Google Kubernetes Engine (אם אתם מריצים ב-GKE)
    • ‫Google Container Registry (אם אתם משתמשים בו כמאגר מקומי)

    כדי להוסיף את השירותים האלה לגבול הגזרה, פועלים לפי ההוראות במאמר פרטים והגדרה של גבולות גזרה לשירות.

  3. מעתיקים את תמונות Apigee למאגר הפרטי:
    1. מורידים את תמונות Apigee החתומות מ-Docker Hub כמו שמתואר כאן. חשוב לציין את מספרי הגרסאות העדכניים.

      לדוגמה:

      docker pull google/apigee-installer:1.3.3
      docker pull google/apigee-authn-authz:1.3.3
      docker pull google/apigee-mart-server:1.3.3
      docker pull google/apigee-synchronizer:1.3.3
      docker pull google/apigee-runtime:1.3.3
      docker pull google/apigee-hybrid-cassandra-client:1.3.3
      docker pull google/apigee-hybrid-cassandra:1.3.3
      docker pull google/apigee-cassandra-backup-utility:1.3.3
      docker pull google/apigee-udca:1.3.3
      docker pull google/apigee-stackdriver-logging-agent:1.6.8
      docker pull google/apigee-prom-prometheus:v2.9.2
      docker pull google/apigee-stackdriver-prometheus-sidecar:0.7.5
      docker pull google/apigee-connect-agent:1.3.3
      docker pull google/apigee-watcher:1.3.3
      docker pull google/apigee-operators:1.3.3
      docker pull google/apigee-kube-rbac-proxy:v0.4.1
    2. מתייגים את התמונות.

      בדוגמה הבאה, התמונות מתויגות במאגר GCR בארה"ב:

      docker tag google/apigee-installer:1.3.3 us.gcr.io/project_ID/apigee-installer:1.3.3
      docker tag google/apigee-authn-authz:1.3.3 us.gcr.io/project_ID/apigee-authn-authz:1.3.3
      docker tag google/apigee-mart-server:1.3.3 us.gcr.io/project_ID/apigee-mart-server:1.3.3
      docker tag google/apigee-synchronizer:1.3.3 us.gcr.io/project_ID/apigee-synchronizer:1.3.3
      docker tag google/apigee-runtime:1.3.3 us.gcr.io/project_ID/apigee-runtime:1.3.3
      docker tag google/apigee-hybrid-cassandra-client:1.3.3 us.gcr.io/project_ID/apigee-hybrid-cassandra-client:1.3.3
      docker tag google/apigee-hybrid-cassandra:1.3.3 us.gcr.io/project_ID/apigee-hybrid-cassandra:1.3.3
      docker tag google/apigee-cassandra-backup-utility:1.3.3 us.gcr.io/project_ID/apigee-cassandra-backup-utility:1.3.3
      docker tag google/apigee-udca:1.3.3 us.gcr.io/project_ID/apigee-udca:1.3.3
      docker tag google/apigee-stackdriver-logging-agent:1.6.8 us.gcr.io/project_ID/apigee-stackdriver-logging-agent:1.6.8
      docker tag google/apigee-prom-prometheus:v2.9.2 us.gcr.io/project_ID/apigee-prom-prometheus:v2.9.2
      docker tag google/apigee-stackdriver-prometheus-sidecar:0.7.5 us.gcr.io/project_ID/apigee-stackdriver-prometheus-sidecar:0.7.5
      docker tag google/apigee-connect-agent:1.3.3 us.gcr.io/project_ID/apigee-connect-agent:1.3.3
      docker tag google/apigee-watcher:1.3.3 us.gcr.io/project_ID/apigee-watcher:1.3.3
      docker tag google/apigee-operators:1.3.3 us.gcr.io/project_ID/apigee-operators:1.3.3
      docker tag google/apigee-kube-rbac-proxy:v0.4.1 us.gcr.io/project_ID/apigee-kube-rbac-proxy:v0.4.1

      ‫Google ממליצה לכלול את מזהה הפרויקט או ערך מזהה אחר בנתיב המאגר של כל תמונה, אבל זה לא חובה.

    3. מעבירים את התמונות למאגר הפרטי.

      בדוגמה הבאה, התמונות מועברות למאגר GCR בארה"ב:

      docker push us.gcr.io/project_ID/apigee-installer:1.3.3
      docker push us.gcr.io/project_ID/apigee-authn-authz:1.3.3
      docker push us.gcr.io/project_ID/apigee-mart-server:1.3.3
      docker push us.gcr.io/project_ID/apigee-synchronizer:1.3.3
      docker push us.gcr.io/project_ID/apigee-runtime:1.3.3
      docker push us.gcr.io/project_ID/apigee-hybrid-cassandra-client:1.3.3
      docker push us.gcr.io/project_ID/apigee-hybrid-cassandra:1.3.3
      docker push us.gcr.io/project_ID/apigee-cassandra-backup-utility:1.3.3
      docker push us.gcr.io/project_ID/apigee-cassandra-backup-utility:1.3.3
      docker push us.gcr.io/project_ID/apigee-udca:1.3.3
      docker push us.gcr.io/project_ID/apigee-stackdriver-logging-agent:1.6.8
      docker push us.gcr.io/project_ID/apigee-prom-prometheus:v2.9.2
      docker push us.gcr.io/project_ID/apigee-stackdriver-prometheus-sidecar:0.7.5
      docker push us.gcr.io/project_ID/apigee-connect-agent1.3.3
      docker push us.gcr.io/project_ID/apigee-watcher1.3.3
      docker push us.gcr.io/project_ID/apigee-operators1.3.3
      docker push us.gcr.io/project_ID/apigee-kube-rbac-proxy:v0.4.1

      ‫Google ממליצה לכלול את מזהה הפרויקט או ערך מזהה אחר בנתיב המאגר של כל תמונה, אבל זה לא חובה.

  4. מעדכנים את קובץ ההחלפות כך שכתובות ה-URL של התמונות יפנו למאגר הפרטי, כפי שמתואר במאמר ציון החלפות של הגדרות.

    צריך לשנות את כתובות ה-URL של התמונות ברכיבים הבאים:

    שם הרכיב (בקובץ ההגדרות שמשנות את ברירת המחדל) כתובת האתר של התמונה
    ao your_private_repo/apigee-operators
    authz your_private_repo/apigee-authn-authz
    cassandra your_private_repo/apigee-hybrid-cassandra

    auth: your_private_repo/apigee-hybrid-cassandra-client
    backup: your_private_repo/apigee-cassandra-backup-utility
    restore: your_private_repo/apigee-cassandra-backup-utility
    connectAgent your_private_repo/apigee-connect-agent
    installer your_private_repo/apigee-installer
    kubeRBACProxy your_private_repo/apigee-kube-rbac-proxy
    logger your_private_repo/apigee-stackdriver-logging-agent
    mart your_private_repo/apigee-mart-server
    metrics your_private_repo/apigee-prom-prometheus

    sdSidecar: your_private_repo/apigee-stackdriver-prometheus-sidecar
    runtime your_private_repo/apigee-runtime
    synchronizer your_private_repo/apigee-synchronizer
    udca your_private_repo/apigee-udca

    fluentd: your_private_repo/apigee-stackdriver-logging-agent
    watcher your_private_repo/apigee-watcher

  5. מחילים את השינויים באמצעות התמונות החדשות ב-GCR, כמו שמתואר במאמר בנושא החלת ההגדרה על האשכול.

פרויקטים של Private Service Connect וגבולות גזרה

אם משתמשים ב-VPC Service Controls יחד עם Private Service Connect, צריך לוודא שאפשר להגיע לפרויקט Google Cloud בקצה השני של חיבור Private Service Connect מאותו service perimeter שבו נמצא פרויקט Apigee.

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

פעולות מושפעות

הדרישה הזו משפיעה רק על הפעולות הבאות במישור הבקרה:

בדיקה אם אתם מושפעים

  1. בודקים אם פרויקט Apigee שייך לגבולות גזרה לשירות שמגבילים את apigee.googleapis.com. איך מנהלים גבולות גזרה לשירות
  2. צריך לציין את הפרויקטים של עמיתים שבהם אתם משתמשים עם Private Service Connect:
    • לגבי חיבורים נכנסים, הפרויקטים ברשימת הפרויקטים המורשים של הצרכן בכל מכונה.
    • לגבי חיבורים יוצאים, הפרויקט שבבעלותו קובץ השירות שנקרא על ידי כל נקודת הקצה של הקישור.
  3. לכל פרויקט עמית, בודקים אם הוא מוגן על ידי אותו היקף כמו פרויקט Apigee שלכם.

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

פתרון בעיות בפרויקט עמית מחוץ להיקף

בוחרים את האפשרות שתואמת לדרישות האבטחה שלכם:

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

לפני שמשנים את ההיקף, אפשר להשתמש במצב הרצה יבשה כדי לראות את ההשפעה של השינוי בלי לאכוף אותו.

מתן גישה לפורטלים משולבים להיקף

‫VPC-SC תומך בהענקת רמות גישה ל-VPC-SC לפורטלים משולבים, אבל התהליך הזה דורש שלבים נוספים, כמו שמתואר בקטע הזה.

אם לא מעניקים רמת גישה לפורטלים משולבים, הפורטלים המשולבים לא זמינים לארגוני Apigee שמופעל בהם VPC-SC.

הענקת רמת גישה לפורטלים:

  • לא מציב פורטלים משולבים בתוך ההיקף.
  • מאפשרת גישה לפורטלים משולבים מחוץ לגבולות הארגון.
  • מאפשר חשיפה של נתוני Apigee שמוגנים על ידי VPC-SC (כמו נתוני אפליקציות) למשתמשי פורטל מחוץ להיקף ה-VPC-SC.

מידע נוסף זמין במאמר בנושא מתן גישה למשאבים מוגנים מחוץ לגבולות גזרה.

דרישות מוקדמות

לפני שנותנים גישה להיקף אבטחה לפורטל משולב, צריך להפעיל את התכונה Access Context Manager API בפרויקט, אם היא עדיין לא הופעלה. אפשר לעשות את זה במסוף Cloud או באמצעות הפקודה gcloud services enable.

כדי לבדוק אם ה-API מופעל, בודקים את הפלט של הפקודה gcloud services list, כמו שמתואר בשלב 2: הפעלת Apigee APIs.

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

  1. כדי לקבל פרטים על פרויקט ב-Google Cloud, משתמשים בפקודה gcloud projects list, כמו בדוגמה הבאה:
    gcloud projects list

    הפקודה הזו מחזירה את מזהה הפרויקט (בעמודה PROJECT_ID) ואת מספר הפרויקט (בעמודה PROJECT_NUMBER) לכל פרויקט בארגון שלכם ב-GCP.

  2. מזהים את כתובת האימייל בחשבון השירות של Apigee. זה אותו חשבון שנוצר על ידי קובץ ההתקנה של Apigee כשמקצים משאבים לארגון בשלב 3: יצירת ארגון.

    כדי לקבל את כתובת האימייל הזו, משתמשים בפקודה iam service-accounts list, שמוגדרת באמצעות התחביר הבא:

    gcloud iam service-accounts list --project GCP_PROJECT_ID

    לדוגמה:

    gcloud iam service-accounts list --project my-project
    
    DISPLAY NAME                              EMAIL                                                DISABLED
    Apigee default service account            service-8675309@gcp-sa-apigee.iam.gserviceaccount.com  False
    Compute Engine default service account     8675309-compute@developer.gserviceaccount.com          False

    חשבון השירות שרוצים הוא זה שכתובת האימייל שלו תואמת לפורמט הבא:
    service-GCP_PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com

    לדוגמה:
    service-8675309@gcp-sa-apigee.iam.gserviceaccount.com

  3. משתמשים בפקודה access-context-manager policies list כדי לקבל את מזהה המדיניות (או גבולות הגזרה). מעבירים את מזהה הארגון לפקודה הזו, כמו בדוגמה הבאה:

    gcloud access-context-manager policies list --organization=organizations/GCP_ORG_ID

    ‫gcloud מגיב עם רשימה של כללי מדיניות שמשויכים לארגון שצוין. לדוגמה:

    gcloud access-context-manager policies list --organization=organizations/2244340
    
    NAME          ORGANIZATION      TITLE                 ETAG
    04081981      2244340           Default policy        421924c5a97c0Icu8

    מזהה המדיניות של VPC-SC (שנקרא גם מזהה גבולות הגזרה) הוא המזהה של גבולות הגזרה לשירות של VPC-SC, שמשמשים כגבול בין הפרויקט שלכם לבין שירותים אחרים. זהו הערך בעמודה NAME.

שלבים למתן גישה היקפית לפורטלים משולבים

כדי לתת גישה היקפית לפורטל משולב:

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

    אפשר לתת לקובץ כל שם שרוצים, אבל הוא חייב להסתיים בסיומת *.yaml. לדוגמה, my-portal-access-rules.yaml.

  3. בקובץ התנאים, מוסיפים קטע members שמציין את חשבון השירות של Apigee, כמו בדוגמה הבאה:

    - members:
      - serviceAccount:service-8675309@gcp-sa-apigee.iam.gserviceaccount.com

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

  4. יוצרים רמת גישה באמצעות הפקודה access-context-manager levels create, לדוגמה:
    gcloud access-context-manager levels create ACCESS_LEVEL_ID \
      --title ACCESS_LEVEL_TITLE \
      --basic-level-spec PATH/TO/CONDITIONS_FILE.yaml \
      --policy=POLICY_ID

    כאשר:

    • ‫ACCESS_LEVEL_ID: מזהה של רמת הגישה החדשה שמוענקת, למשל my-portal-access-level.
    • ‫ACCESS_LEVEL_TITLE היא הכותרת של רמת הגישה. אפשר לתת לשם כל ערך שרוצים, אבל Google ממליצה לתת לו ערך משמעותי כדי שאתם ואדמינים אחרים תדעו למה הוא מתייחס. לדוגמה, My Portal Access Level.
    • ‫CONDITIONS_FILE הוא הנתיב לקובץ ה-YAML שיצרתם בשלב הקודם.
    • ‫POLICY_ID הוא המזהה של המדיניות או של ההיקף.

    לדוגמה:

    gcloud access-context-manager levels create my-portal-access-level \
      --title My Portal Access Level \
      --basic-level-spec ~/my-portal-access-rules.yaml \
      --policy=04081981
  5. מעדכנים את ההיקף עם רמת הגישה החדשה באמצעות הפקודה access-context-manager perimeters update:
    gcloud access-context-manager perimeters update POLICY_ID \
      --add-access-levels=ACCESS_LEVEL_ID \
      --policy=POLICY_ID

    לדוגמה:

    gcloud access-context-manager perimeters update 04081981 \
      --add-access-levels=my-portal-access-level \
      --policy=04081981

פתרון בעיות

כדאי לבדוק את הדברים הבאים:

  • אם Access Context Manager API לא מופעל בפרויקט בענן שלכם ב-Google Cloud, gcloud תוצג לכם בקשה להפעיל אותו כשתנסו להציג או להגדיר מדיניות.
  • כשמקבלים פרטים על הארגון, חשוב להשתמש במזהה הארגון ב-Google Cloud ולא במזהה הארגון ב-Apigee.
  • חלק מהפקודות שמתוארות בקטע הזה דורשות הרשאות גבוהות יותר. לדוגמה, כדי לקבל פרטים על חשבונות שירות בפרויקט, צריך להיות בעלים של הפרויקט הזה.
  • כדי לוודא שחשבון השירות קיים, מריצים את הפקודה iam service-accounts describe, כמו בדוגמה הבאה:

    gcloud iam service-accounts describe service-8675309@gcp-sa-apigee.iam.gserviceaccount.com

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

מגבלות

לשילובים של Apigee עם VPC Service Controls יש את המגבלות הבאות:

  • כדי להגדיר פורטלים משולבים, צריך לבצע שלבים נוספים.
  • צריך לפרוס פורטלים של Drupal בתוך גבולות גזרה לשירות.