הדף הזה רלוונטי ל-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 הוא כדלקמן:
- מפעילים את VPC Service Controls.
- יוצרים גבולות גזרה לשירות חדש.
- מגדירים את גבולות הגזרה לשירות.
השלבים האלה מפורטים בהמשך.
כדי להגדיר את VPC Service Controls עם Apigee:
-
מפעילים את 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 ליותר מפרויקט אחד.
-
יוצרים גבול גזרה חדש לפי ההוראות שבמדריך לתחילת העבודה עם VPC Service Controls. כשיוצרים גבולות גזרה, בוחרים אילו פרויקטים להוסיף לגבולות הגזרה ואילו שירותים לאבטח.
ב-Apigee וב-Apigee Hybrid, Google ממליצה לאבטח את כל השירותים כשיוצרים גבולות גזרה, כולל Apigee API.
מידע נוסף זמין במאמר יצירת גבולות גזרה לשירות.
- מגדירים את גבולות הגזרה לשירות, כמו שמתואר במאמר פרטים והגדרה של גבולות גזרה לשירות.
כדי להוסיף פורטל משולב בתוך ההיקף, אפשר לעיין במאמר הוספת פורטל משולב להיקף.
הגדרת VPC Service Controls עם Apigee Hybrid
Apigee hybrid תומך ב-VPC Service Controls, אבל יש עוד שלבים שצריך לבצע. התהליך הכללי לשילוב של Apigee hybrid עם VPC Service Controls הוא כדלקמן:
- הגדרת קישוריות פרטית.
- מאבטחים שירותים נוספים בתוך ההיקף.
- מגדירים מאגר פרטי. (מאגר פרטי הוא מאגר שנמצא בתוך ההיקף. הוא לא חייב להיות מאגר מקומי, כל עוד הוא נמצא בתוך ההיקף).
- מעבירים את תמונות Apigee למאגר הפרטי.
- מעדכנים את ההגדרות כדי להשתמש במאגר הפרטי במהלך תהליך ההתקנה וההגדרה ההיברידי.
כל אחד מהשלבים האלה מפורט בהמשך.
כדי להגדיר את VPC Service Controls עם Apigee Hybrid:
- מגדירים כתובות IP פרטיות למארחים ברשת ההיברידית, כמו שמתואר במאמר הגדרת קישוריות פרטית לממשקי Google API ולשירותים של Google. זה כולל הגדרת מסלולים, כללים של חומת אש ורשומות DNS כדי לאפשר לממשקי Google API לגשת לכתובות ה-IP הפרטיות האלה.
-
פועלים לפי השלבים במאמר הגדרת VPC Service Controls באמצעות Apigee.
במהלך התהליך הזה, עליכם לוודא שאתם מאבטחים את השירותים הבאים בנוסף לאלה שצוינו עבור Apigee, בתוך גבולות הגזרה שלכם:
- Anthos Service Mesh
- Cloud Monitoring (Stackdriver)
- Google Kubernetes Engine (אם אתם מריצים ב-GKE)
- Google Container Registry (אם אתם משתמשים בו כמאגר מקומי)
כדי להוסיף את השירותים האלה לגבול הגזרה, פועלים לפי ההוראות במאמר פרטים והגדרה של גבולות גזרה לשירות.
- מעתיקים את תמונות Apigee למאגר הפרטי:
-
מורידים את תמונות 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
-
מתייגים את התמונות.
בדוגמה הבאה, התמונות מתויגות במאגר 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 ממליצה לכלול את מזהה הפרויקט או ערך מזהה אחר בנתיב המאגר של כל תמונה, אבל זה לא חובה.
-
מעבירים את התמונות למאגר הפרטי.
בדוגמה הבאה, התמונות מועברות למאגר 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 ממליצה לכלול את מזהה הפרויקט או ערך מזהה אחר בנתיב המאגר של כל תמונה, אבל זה לא חובה.
-
-
מעדכנים את קובץ ההחלפות כך שכתובות ה-URL של התמונות יפנו למאגר הפרטי, כפי שמתואר במאמר ציון החלפות של הגדרות.
צריך לשנות את כתובות ה-URL של התמונות ברכיבים הבאים:
שם הרכיב (בקובץ של כללי ברירת המחדל) כתובת האתר של התמונה aoyour_private_repo/apigee-operatorsauthzyour_private_repo/apigee-authn-authzcassandrayour_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-utilityconnectAgentyour_private_repo/apigee-connect-agentinstalleryour_private_repo/apigee-installerkubeRBACProxyyour_private_repo/apigee-kube-rbac-proxyloggeryour_private_repo/apigee-stackdriver-logging-agentmartyour_private_repo/apigee-mart-servermetricsyour_private_repo/apigee-prom-prometheus
sdSidecar: your_private_repo/apigee-stackdriver-prometheus-sidecarruntimeyour_private_repo/apigee-runtimesynchronizeryour_private_repo/apigee-synchronizerudcayour_private_repo/apigee-udca
fluentd: your_private_repo/apigee-stackdriver-logging-agentwatcheryour_private_repo/apigee-watcher - מחילים את השינויים באמצעות התמונות החדשות ב-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. בשלבים הבאים מוסבר איך מקבלים את הערכים האלה:
- כדי לקבל את פרטי הפרויקט ב-GCP, משתמשים בפקודה gcloud projects list, כמו בדוגמה הבאה:
gcloud projects list
הפקודה הזו מחזירה את מזהה הפרויקט (בעמודה
PROJECT_ID) ואת מספר הפרויקט (בעמודהPROJECT_NUMBER) לכל פרויקט בארגון שלכם ב-GCP. -
מזהים את כתובת האימייל בחשבון השירות של 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 account8675309-compute@developer.gserviceaccount.com Falseחשבון השירות שרוצים הוא זה שכתובת האימייל שלו תואמת לפורמט הבא:
service-GCP_PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.comלדוגמה:
service-8675309@gcp-sa-apigee.iam.gserviceaccount.com -
משתמשים בפקודה
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/
2244340NAME ORGANIZATION TITLE ETAG040819812244340Default policy421924c5a97c0Icu8מזהה המדיניות של VPC-SC (שנקרא גם מזהה גבולות הגזרה) הוא המזהה של גבולות הגזרה לשירות של VPC-SC, שמשמשים כגבול בין הפרויקט שלכם לבין שירותים אחרים. זהו הערך בעמודה
NAME.
שלבים למתן גישה היקפית לפורטלים משולבים
כדי לתת גישה היקפית לפורטל משולב:
- אוספים את כתובת האימייל בחשבון השירות ואת מזהה המדיניות של VPC-SC, כמו שמתואר בקטע Prerequsites.
-
יוצרים במחשב של האדמין קובץ תנאים שמציין את כתובת חשבון השירות שתעניק גישה לפורטל דרך ה-perimeter.
אתם יכולים לתת לקובץ כל שם שתרצו, אבל הוא חייב להסתיים בסיומת
*.yaml. לדוגמה,my-portal-access-rules.yaml. -
בקובץ התנאים, מוסיפים קטע
membersשמציין את חשבון השירות של Apigee, כמו בדוגמה הבאה:- members: - serviceAccount:
service-8675309@gcp-sa-apigee.iam.gserviceaccount.comשימו לב: מספיק להוסיף קטע
members, אין צורך להוסיף קטע של רמת גישה. מידע נוסף על יצירת קובץ תנאים זמין במאמר הגבלת הגישה לפי משתמש או חשבון שירות. - יוצרים רמת גישה באמצעות הפקודה
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 - ACCESS_LEVEL_ID: מזהה של רמת הגישה החדשה שמוענקת, למשל
- מעדכנים את ההיקף עם רמת הגישה החדשה באמצעות הפקודה
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 בתוך גבולות גזרה לשירות.