שימוש ב-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 יכול לוודא שללקוחות בתוך גבולות גזרה שיש להם גישה פרטית למשאבים לא תהיה גישה למשאבים לא מורשים מחוץ לגבולות גזרה.

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

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

  • גם פרויקט Google Cloud וגם זמן הריצה המשויך אליו כלולים ב-VPC Service Controls של הפרויקט.
  • אפשר להגביל את האינטראקציה בין שירותים בתוך גבולות גזרה באמצעות התכונה 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 APIs לגשת לכתובות ה-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, כמו שמתואר במאמר בנושא החלת ההגדרה על האשכול.

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

‫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.

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

  1. כדי לקבל את פרטי הפרויקט ב-GCP, משתמשים בפקודה 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. יוצרים במחשב של האדמין קובץ תנאים שמציין את כתובת חשבון השירות שתעניק גישה לפורטל דרך ה-perimeter.

    אפשר לתת לקובץ כל שם שרוצים, אבל הוא חייב להסתיים בסיומת *.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 לא מופעל בפרויקט GCP, המערכת gcloud תציג בקשה להפעיל אותו כשמנסים להציג או להגדיר מדיניות.
  • כשמקבלים פרטים על הארגון, חשוב להשתמש במזהה הארגון ב-GCP ולא במזהה הארגון ב-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 בתוך גבולות גזרה לשירות.