תרשים עזר לארכיטקטורה
בארכיטקטורה לדוגמה הבאה, VPC משותף נפרס עם מודל Gemini בפרויקט השירות, ph-fm-svc-project (פרויקט שירות של מודל בסיסי) עם מאפייני מדיניות השירות שמאפשרים גישה פרטית ל-Agent Platform API מ-AWS:
- היקף יחיד של VPC Service Controls
- זהות משתמש שהוגדרה בפרויקט

אופציונלי: יצירת רמת הגישה
אם משתמשי הקצה שלכם צריכים גישה לפלטפורמת הסוכנים של Gemini Enterprise דרך מסוף Google Cloud , צריך לפעול לפי ההוראות שבקטע הזה כדי ליצור רמת גישה של VPC Service Controls. עם זאת, אם הגישה הפרוגרמטית לממשקי API היא ממקורות פרטיים (כמו מקורות מקומיים עם גישה פרטית ל-Google או Cloud Workstations), רמת הגישה לא נדרשת.
באדריכלות ההפניה הזו אנחנו משתמשים בטווח CIDR ארגוני, corp-public-block,
כדי לאפשר תנועה של עובדים ארגוניים לגשת למסוף Google Cloud .
בעזרת Access Context Manager, Google Cloud אדמינים ארגוניים יכולים להגדיר בקרת גישה פרטנית שמבוססת על מאפיינים לפרויקטים ולמשאבים ב-Google Cloud.
רמות הגישה מתארות את הדרישות שצריך לעמוד בהן כדי שהבקשות יאושרו. דוגמאות:
- סוג המכשיר ומערכת ההפעלה (נדרש רישיון ל-Chrome Enterprise Premium)
- כתובת IP
- זהות המשתמש
אם זו הפעם הראשונה שהארגון משתמש ב-Access Context Manager, האדמינים צריכים להגדיר מדיניות גישה, שהיא מאגר של רמות גישה והיקפי Service Control.
בכלי לבחירת פרויקטים בחלק העליון של מסוף Google Cloud , לוחצים על הכרטיסייה הכול ואז בוחרים את הארגון.
כדי ליצור רמת גישה בסיסית, פועלים לפי ההוראות במאמר יצירת רמת גישה בסיסית. מציינים את האפשרויות הבאות:
- בקטע Create conditions in, בוחרים באפשרות Basic mode.
- בשדה שם רמת הגישה מזינים
corp-public-block. - בקטע תנאים, באפשרות כשהתנאי מתקיים, מחזירים, בוחרים באפשרות TRUE.
- בקטע רשתות משנה של כתובות IP, בוחרים באפשרות כתובת IP גלויה לכולם.
- בטווח כתובות ה-IP, מציינים את טווח ה-CIDR החיצוני שנדרשת לו גישה להיקף של VPC Service Controls.
יצירת service perimeter ב-VPC Service Controls
כשיוצרים גבולות גזרה לשירות, מגדירים את הפרויקטים המוגנים כדי לאפשר גישה לשירותים המוגנים מחוץ לגבולות הגזרה. כשמשתמשים ב-VPC Service Controls עם VPC משותף, יוצרים גבולות גזרה גדולים שכוללים גם את הפרויקט המארח וגם את פרויקט השירות. (אם בוחרים רק את פרויקט השירות בגבולות הגזרה, נקודות קצה ברשת ששייכות לפרויקטים של שירותים נראות כאילו הן מחוץ לגבולות הגזרה, כי רשתות המשנה משויכות רק לפרויקט המארח).
בוחרים את סוג ההגדרה של גבולות הגזרה החדשים
בקטע הזה תיצרו גבול גזרה לשירות ב-VPC Service Controls במצב הרצה יבשה. במצב פרימטר לבדיקות, גבולות הגזרה מתעדים הפרות כאילו הם נאכפים, אבל הם לא מונעים גישה לשירותים מוגבלים. מומלץ להשתמש במצב הרצה יבשה לפני המעבר למצב אכיפה.
בתפריט הניווט של מסוף Google Cloud , לוחצים על Security (אבטחה) ואז על VPC Service Controls.
בדף VPC Service Controls, לוחצים על Dry run mode (מצב הרצה יבשה).
לוחצים על היקף חדש.
בכרטיסייה New VPC Service Perimeter, בתיבה Perimeter Name, מקלידים שם להיקף. אחרת, מאשרים את ערכי ברירת המחדל.
האורך המקסימלי של שם ההיקף הוא 50 תווים, הוא חייב להתחיל באות ויכול להכיל רק אותיות לטיניות ב-ASCII (a-z, A-Z), ספרות (0-9) או קווים תחתונים (_). השם של ההיקף הוא תלוי-רישיות, והוא חייב להיות ייחודי במדיניות הגישה.
בחירת המשאבים להגנה
לוחצים על משאבים להגנה.
כדי להוסיף פרויקטים או רשתות VPC שרוצים לאבטח בתוך גבולות הגזרה:
לוחצים על הוספת משאבים.
כדי להוסיף פרויקטים להיקף, בחלונית הוספת משאבים, לוחצים על הוספת פרויקט.
כדי לבחור פרויקט, בתיבת הדו-שיח Add projects, מסמנים את התיבה של הפרויקט. בתרשים העזר לארכיטקטורה הזה, בחרנו בפרויקטים הבאים:
infra-host-projectaiml-host-projectph-fm-svc-project
לוחצים על הוספת המקורות שנבחרו. הפרויקטים שנוספו מופיעים בקטע Projects.
בחירת השירותים המוגבלים
באדריכלות ההפניה הזו, היקף ממשקי ה-API המוגבלים הוא מצומצם, ומאפשר רק את ממשקי ה-API הנדרשים ל-Gemini. עם זאת, כשיטה מומלצת, אנחנו ממליצים להגביל את כל השירותים כשיוצרים גבולות גזרה כדי לצמצם את הסיכון להוצאת נתונים משירותיGoogle Cloud .
כדי לבחור את השירותים שרוצים לאבטח בתוך ההיקף, פועלים לפי השלבים הבאים:
לוחצים על שירותים מוגבלים.
בחלונית Restricted Services (שירותים מוגבלים), לוחצים על Add services (הוספת שירותים).
בתיבת הדו-שיח Specify services to restrict, בוחרים באפשרות Agent Platform API.
לוחצים על Add Agent Platform API (הוספת Agent Platform API).
אופציונלי: בחירת השירותים שאפשר לגשת אליהם ב-VPC
ההגדרה VPC accessible services מגבילה את קבוצת השירותים שאפשר לגשת אליהם מנקודות קצה ברשת בתוך service perimeter. בארכיטקטורת ההפניה הזו, אנחנו משאירים את הגדרת ברירת המחדל All Services.
אופציונלי: בחירת רמת הגישה
אם יצרתם רמת גישה של CIDR ארגוני בקטע הקודם, אתם צריכים לבצע את הפעולות הבאות כדי לאפשר גישה למשאבים מוגנים מחוץ לגבולות הגזרה:
לוחצים על רמות גישה.
לוחצים על התיבה בחירת רמת גישה.
אפשר גם להוסיף רמות גישה אחרי שיוצרים את ההיקף.
מסמנים את התיבה שמתאימה לרמת הגישה. (בארכיטקטורת ההפניה הזו, זה
corp-public-block).
מדיניות בנושא תעבורת נתונים נכנסת ויוצאת
בארכיטקטורת ההפניה הזו, אין צורך לציין הגדרות בחלוניות Ingress Policy או Egress Policy.
יצירת ההיקף
אחרי שמסיימים את שלבי ההגדרה הקודמים, לוחצים על יצירת היקף כדי ליצור את ההיקף.
הגדרת קישוריות לרשת בין AWS לבין ממשקי API של Google
הגדרת Private Service Connect ל-Google APIs
Private Service Connect לגישה ל-Google APIs הוא חלופה לשימוש בגישה פרטית ל-Google או בשמות הדומיין הציבוריים של Google APIs. במקרה הזה, הספק הוא Google.
השימוש ב-Private Service Connect מאפשר לכם לבצע את הפעולות הבאות:
- יוצרים כתובת IP פנימית אחת או יותר כדי לגשת לממשקי Google API לתרחישי שימוש שונים.
- תנועה ישירה באתר לכתובות IP ולאזורים ספציפיים כשניגשים אל Google APIs.
- יוצרים שם DNS של נקודת קצה בהתאמה אישית שמשמשת לפתרון בעיות ב-Google APIs.
באדריכלות ההפניה, נקודת קצה של Google API של Private Service Connect בשם restricted, עם כתובת IP 10.10.10.3,, נפרסת עם VPC-SC היעד, ומשמשת ככתובת IP וירטואלית (VIP) כדי לגשת לשירותים מוגבלים שהוגדרו בפרימטר של VPC-SC. אין תמיכה בטירגוט של שירותים לא מוגבלים באמצעות ה-VIP. מידע נוסף זמין במאמר גישה ל-Agent Platform API Google Cloud.
הגדרת רשת VPC ב-AWS
קישוריות הרשת בין Amazon Web Services (AWS) לבין Google Cloud נוצרת באמצעות מנהרות של רשת וירטואלית פרטית עם זמינות גבוהה (HA VPN). החיבור המאובטח הזה מאפשר תקשורת פרטית בין שתי סביבות הענן. עם זאת, כדי לאפשר ניתוב ותקשורת חלקים בין משאבים ב-AWS לבין Google Cloud, נעשה שימוש בפרוטוקול Border Gateway Protocol (BGP).
בסביבת Google Cloud , נדרש פרסום ניתוב בהתאמה אישית. המסלול המותאם אישית הזה מפרסם באופן ספציפי את כתובת ה-IP של Google API של Private Service Connect ברשת AWS. אם תפרסמו את כתובת ה-IP הזו, AWS תוכל ליצור נתיב ישיר ל-Google API, בלי לעבור דרך האינטרנט הציבורי, וכך לשפר את הביצועים.
בדוגמה לארכיטקטורה, מופעל מופע Sagemaker שמשויך ל-AWS VPC שבו מוגדר ה-VPN Google Cloud. פרוטוקול Border Gateway Protocol (BGP) משמש לפרסום מסלולים ב-HA VPN בין AWS לבין Google Cloud הרשת. כתוצאה מכך, Google Cloud ו-AWS יכולים לנתב תנועה דו-כיוונית דרך VPN. מידע נוסף על הגדרת חיבורי HA VPN זמין במאמר יצירת חיבורי HA VPN בין Google Cloud לבין AWS.
הגדרת עדכונים ב-Route 53
יוצרים אזור פרטי מתארח בשם p.googleapis.com ב-AWS Route 53 ומוסיפים את שם הדומיין שמוגדר במלואו REGION-aiplatform-restricted.p.googleapis.com עם כתובת ה-IP 10.10.10.3 (כתובת IP של Googleapis ב-Private Service Connect) כרשומת A של DNS.
כש-Jupyter Notebook SDK מבצע חיפוש DNS ל-Agent Platform API כדי להגיע ל-Gemini, Route 53 מחזיר את כתובת ה-IP של Google APIs ב-Private Service Connect. Jupyter Notebook משתמש בכתובת ה-IP שהתקבלה מ-Route 53 כדי ליצור חיבור לנקודת הקצה (endpoint) של Google APIs ב-Private Service Connect, שמנותבת דרך HA VPN אל Google Cloud.
הגדרת עדכונים ב-Sagemaker
בארכיטקטורת העזר הזו נעשה שימוש במופעי מחברת של Amazon SageMaker כדי לגשת ל-Agent Platform API. עם זאת, אפשר להשיג את אותה ההגדרה באמצעות שירותי מחשוב אחרים שתומכים ב-VPC, כמו Amazon EC2 או AWS Lambda.
כדי לאמת את הבקשות, אפשר להשתמש במפתח של חשבון Google Cloud שירות או באיחוד שירותי אימות הזהות של עומסי עבודה. מידע על הגדרת איחוד שירותי אימות הזהות של עומסי עבודה זמין במאמר ספק שירותי ענן מקומי או אחר.
המכונה של Jupyter Notebook מפעילה קריאה ל-API של מודל Gemini שמארח ב-Google Cloud על ידי ביצוע של פענוח DNS לשם דומיין שמוגדר במלואו מותאם אישית של Google APIs ב-Private Service Connect REGION-aiplatform-restricted.p.googleapis.com, ודריסת שם דומיין שמוגדר במלואו שמוגדר כברירת מחדל (REGION-aiplatform.googleapis.com).
אפשר לקרוא ל-Agent Platform API באמצעות Rest, gRPC או SDK. כדי להשתמש בשם הדומיין שמוגדר במלואו של הלקוח ב-Private Service Connect, מעדכנים את API_ENDPOINT ב-Jupyter Notebook באופן הבא:
הוראות לשימוש ב-Agent Platform SDK ל-Python
מתקינים את ה-SDK:
pip install --upgrade google-genaiמייבאים את יחסי התלות:
from google.cloud import genai from google.genai.types import ( GenerateContentConfig, HarmBlockThreshold, HarmCategory, Part, SafetySetting )מאתחלים את משתני הסביבה הבאים:
PROJECT_ID="ph-fm-svc-projects" # Google Cloud Project ID LOCATION_ID="us-central1" # Enter Agent Platform Gemini region such as us-central1 API_ENDPOINT="https://us-central1-aiplatform-restricted.p.googleapis.com" # PSC Endpoint MODEL_ID="gemini-2.0-flash-001" # Gemini Model IDמאתחלים את Agent Platform SDK ל-Python:
from google import genai client= genai.Client(vertexai=True, project=PROJECT_ID, location=LOCATION_ID, http_options={'base_url': API_ENDPOINT})שולחים את הבקשה הבאה אל Gemini API של Gemini Enterprise Agent Platform:
prompt = "which weighs more, 1kg feathers or 1kg stones" safety_settings = [ SafetySetting( category=HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT, threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE, ), SafetySetting( category=HarmCategory.HARM_CATEGORY_HARASSMENT, threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE, ), SafetySetting( category=HarmCategory.HARM_CATEGORY_HATE_SPEECH, threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE, ), SafetySetting( category=HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT, threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE, ), ] response = client.models.generate_content( model=MODEL_ID, contents=prompt, config=GenerateContentConfig( safety_settings=safety_settings, ), ) # Response will be `None` if it is blocked. print(response.text)בשלב הזה, אפשר לבצע קריאה ל-API של Gemini מ-Jupyter Notebook כדי לגשת ל-Gemini שמתארח ב- Google Cloud. אם הקריאה תצליח, הפלט ייראה כך:
They weigh the same. Both weigh 1 kilogram.
הוראות לשימוש ב-Gemini Enterprise Agent Platform API בארכיטקטורת REST
בקטע הזה מגדירים כמה משתנים חשובים שמשמשים לאורך התהליך. המשתנים האלה מאחסנים מידע על הפרויקט, על המיקום של המשאבים, על מודל Gemini הספציפי ועל נקודת הקצה של PSC שבה רוצים להשתמש. פותחים חלון טרמינל בתוך נוטבוק של JupyterLab כדי להריץ את הפקודות הבאות:
פותחים חלון טרמינל בתוך מחברת Jupyter.
מאתחלים את משתני הסביבה הבאים:
export PROJECT_ID="ph-fm-svc-projects" export LOCATION_ID="us-central1" export API_ENDPOINT="us-central1-aiplatform-restricted.p.googleapis.com" export MODEL_ID="gemini-1.5-flash-002"משתמשים בעורך טקסט כמו
vimאוnanoכדי ליצור קובץ חדש בשםrequest.jsonשמכיל את הבקשה הבאה בפורמט עבור Gemini API של Gemini Enterprise Agent Platform:{ "contents": [ { "role": "user", "parts": [ { "text": "which weighs more, 1kg feathers or 1kg stones" } ] } ], "generationConfig": { "temperature": 1, "maxOutputTokens": 8192, "topP": 0.95, "seed": 0 }, "safetySettings": [ { "category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "OFF" }, { "category": "HARM_CATEGORY_DANGEROUS_CONTENT", "threshold": "OFF" }, { "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", "threshold": "OFF" }, { "category": "HARM_CATEGORY_HARASSMENT", "threshold": "OFF" } ] }מבצעים את בקשת ה-curl הבאה אל Gemini API של Gemini Enterprise Agent Platform:
curl -v \ -X POST \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://$API_ENDPOINT/v1/projects/$PROJECT_ID/locations/$LOCATION_ID/publishers/google/models/$MODEL_ID:streamGenerateContent" -d '@request.json'
אימות הפרימטר במצב בדיקה
בארכיטקטורת ההפניה הזו, היקף השירות מוגדר במצב הרצה יבשה, שמאפשר לבדוק את ההשפעה של מדיניות הגישה בלי לאכוף אותה. כלומר, אתם יכולים לראות איך המדיניות תשפיע על הסביבה שלכם אם היא תהיה פעילה, אבל בלי הסיכון לשיבוש תנועה לגיטימית.
אחרי שמאמתים את ההיקף במצב הרצה יבשה, מעבירים אותו למצב אכיפה.
המאמרים הבאים
- איך משתמשים בשמות DNS של
p.googleapis.com - כדי ללמוד איך לאמת את גבולות הגזרה במצב הרצה יבשה, אפשר לצפות בסרטון בנושא רישום ביומן של הרצה יבשה של VPC Service Controls.
- איך משתמשים ב-REST API של Gemini Enterprise Agent Platform
- מידע נוסף על השימוש ב-Agent Platform SDK for Python