בדף הזה מוסבר איך ליצור מאגר עם כללי סינון לפי כתובת IP. יצירת קטגוריה עם סינון לפי כתובת IP מאפשרת לשלוט בגישה לקטגוריות על ידי בדיקת בקשות נכנסות מול כתובות ה-IP שצוינו בכללי הסינון לפי כתובת IP של הקטגוריה. פרטים נוספים זמינים במאמר בנושא סינון כתובות IP של קטגוריות.
מידע על יצירה או עדכון של כללי סינון לפי כתובת IP בדלי קיים זמין במאמר עדכון כללי סינון לפי כתובת IP בדלי.
התפקידים הנדרשים
כדי לקבל את ההרשאות הנדרשות ליצירת קטגוריה עם כללי סינון לפי כתובת IP, צריך לבקש מהאדמין להקצות לכם את התפקיד 'אדמין לניהול אחסון' (roles/storage.admin) בקטגוריה. התפקיד הזה מכיל את ההרשאות שנדרשות ליצירת קטגוריה עם כללי סינון לפי כתובת IP.
כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
storage.buckets.createstorage.buckets.setIpFilter
אפשר לקבל את ההרשאות האלה גם באמצעות תפקידים בהתאמה אישית. יכול להיות שאפשר לקבל את ההרשאות האלה גם עם תפקידים אחרים שהוגדרו מראש. במאמר תפקידי IAM ל-Cloud Storage מפורטים התפקידים השונים וההרשאות שמשויכות אליהם.
במאמר הגדרה וניהול של מדיניות IAM בקטגוריות מוסבר איך מקצים תפקידים בקטגוריות.
יצירת קטגוריה עם כללי סינון לפי כתובת IP
gcloud
מוודאים שמותקנת אצלכם גרסה 526.0.0 או גרסה מתקדמת יותר של Google Cloud CLI:
gcloud version | head -n1אם מותקנת אצלכם גרסה קודמת של ה-CLI של gcloud, צריך לעדכן את הגרסה:
gcloud components update --version=526.0.0יוצרים קובץ JSON שמגדיר את הכללים לבקשות נכנסות. דוגמאות ומידע על מבנה הכללים לסינון לפי כתובת IP בדלי זמינים במאמר הגדרות של סינון לפי כתובת IP בדלי.
{ "mode":"MODE", "publicNetworkSource":{ "allowedIpCidrRanges":[ "RANGE_CIDR", "..." ] }, "vpcNetworkSources":[ { "network":"projects/PROJECT_ID/global/networks/NETWORK_NAME", "allowedIpCidrRanges":[ "RANGE_CIDR", "..." ] }, "..." ], "allowCrossOrgVpcs":ALLOW_CROSS_ORG_VPCS, "allowAllServiceAgentAccess": ALLOW_ALL_SERVICE_AGENT_ACCESS }
כאשר:
MODEהוא המצב של הגדרת סינון כתובות ה-IP של הקטגוריה. הערכים התקינים הםEnabledו-Disabled. כשמגדירים את האפשרותEnabled, כללי סינון לפי כתובת IP חלים על קטגוריה. כל בקשה נכנסת לקטגוריה נבדקת בהתאם לכללים האלה. אם המדיניות מוגדרת כ-Disabled, כל הבקשות הנכנסות מקבלות גישה לקטגוריה.
RANGE_CIDRהוא טווח כתובות IPv4 או IPv6 של רשת ציבורית שיש לה הרשאה לגשת לקטגוריה. אפשר להזין רשימה של טווחי כתובות.
PROJECT_IDהוא מזהה הפרויקט שבו קיימת רשת הענן הווירטואלי הפרטי (VPC). כדי להגדיר כמה רשתות VPC, צריך לציין את הפרויקט שבו נמצאת כל רשת.
NETWORK_NAMEהוא השם של רשת ה-VPC שמורשית לגשת לקטגוריה. כדי להגדיר כמה רשתות VPC, צריך לציין שם לכל רשת.
ALLOW_CROSS_ORG_VPCSהוא ערך בוליאני שמציין אם לאפשר לרשתות VPC שמוגדרות ב-vpcNetworkSourcesלהגיע מארגון אחר. השדה הזה הוא אופציונלי. אם הערך מוגדר ל-true, הבקשה מאפשרת רשתות VPC חוצות ארגונים. אם הערך הואfalse, הבקשה מגבילה את רשתות ה-VPC לאותו ארגון כמו הדלי. אם לא מציינים ערך, ערך ברירת המחדל הואfalse. השדה הזה רלוונטי רק אםvpcNetworkSourcesלא ריק.
ALLOW_ALL_SERVICE_AGENT_ACCESSהוא ערך בוליאני שמציין אם לאפשר לסוכני שירות לגשת לדלי, ללא קשר להגדרת מסנן ה-IP. אם הערך הואtrue, שירותים Google Cloud אחרים יכולים להשתמש ב סוכני שירות כדי לגשת למאגר בלי אימות מבוסס-IP.
כדי ליצור קטגוריה עם כללי סינון לפי כתובת IP, מריצים את הפקודה
gcloud storage buckets createבסביבת הפיתוח:gcloud storage buckets create gs://BUCKET_NAME --ip-filter-file=IP_FILTER_CONFIG_FILE
כאשר:
-
BUCKET_NAMEהוא השם שרוצים לתת לקטגוריה, בכפוף לדרישות למתן שמות. לדוגמה,my-bucket. -
IP_FILTER_CONFIG_FILEהוא קובץ ה-JSON שמגדיר את הכללים לבקשות נכנסות.
-
API בפורמט JSON
התקנה והפעלה של ה-CLI של gcloud, שמאפשרות ליצור אסימון גישה לכותרת
Authorization.יוצרים קובץ JSON עם ההגדרות של הקטגוריה, שחייבות לכלול את שדות ההגדרות
nameו-ipFilterשל הקטגוריה. דוגמאות ומידע על האופן שבו צריך לבנות את כללי הסינון של כתובות IP בדלי זמינים במאמר בנושא הגדרות של סינון כתובות IP בדלי.{ "name": "BUCKET_NAME", "ipFilter": { "mode": "MODE", "publicNetworkSource": { "allowedIpCidrRanges": [RANGE_CIDR, ... ] }, "vpcNetworkSources": [ {"network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "allowedIpCidrRanges": [RANGE_CIDR, ... ] }, ... ], "allowCrossOrgVpcs": ALLOW_CROSS_ORG_VPCS, "allowAllServiceAgentAccess": ALLOW_ALL_SERVICE_AGENT_ACCESS }, }
כאשר:
MODEהוא המצב של הגדרת מסנן ה-IP. הערכים התקינים הם:Enabledו-Disabled. כשמגדירים את האפשרותEnabled, כללי סינון לפי כתובת IP מוחלים על מאגר, וכל הבקשות הנכנסות למאגר עוברות הערכה לפי הכללים האלה. אם ההגדרה היאDisabled, כל הבקשות הנכנסות יכולות לגשת לקטגוריה ולנתונים שלה בלי שתיערך הערכה, אם יש לכם את הרשאות ה-IAM הנדרשות.
RANGE_CIDRהוא טווח כתובות IPv4 או IPv6 של רשת ציבורית שיש לה הרשאה לגשת לקטגוריה. אפשר להזין טווח כתובות אחד או יותר כרשימה.
PROJECT_IDהוא מזהה הפרויקט שבו קיימת רשת ה-VPC. כדי להגדיר כמה רשתות VPC, צריך לציין את הפרויקט שבו נמצאת כל רשת.
NETWORK_NAMEהוא השם של רשת ה-VPC שמורשית לגשת לקטגוריה. כדי להגדיר כמה רשתות VPC, צריך לציין שם לכל רשת.
ALLOW_ALL_SERVICE_AGENT_ACCESSהוא ערך בוליאני שמציין אם לאפשר לסוכני שירות לגשת לדלי, ללא קשר להגדרת מסנן ה-IP. אם הערך הואtrue, שירותים אחרים Google Cloud יכולים להשתמש בסוכני שירות כדי לגשת לדלי בלי אימות מבוסס-IP.
ALLOW_CROSS_ORG_VPCSהוא ערך בוליאני שמציין אם לאפשר לרשתות VPC שמוגדרות ב-vpcNetworkSourcesלהגיע מארגון אחר. השדה הזה הוא אופציונלי. אם הערך הואtrue, הבקשה מאפשרת רשתות VPC חוצות ארגונים. אם הערך הואfalse, הבקשה מגבילה את רשתות ה-VPC לאותו ארגון כמו הקטגוריה. אם לא מציינים ערך, ערך ברירת המחדל הואfalse. השדה הזה רלוונטי רק אםvpcNetworkSourcesלא ריק.
משתמשים ב-
cURLכדי לשלוח קריאה ל-API בפורמט JSON באמצעות בקשת POST bucket:curl -X POST --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage./storage/v1/b?project=PROJECT_ID"
כאשר:
-
JSON_FILE_NAMEהוא השם של קובץ ה-JSON שמכיל את ההגדרות של הקטגוריה. -
PROJECT_IDהוא מזהה הפרויקט שאליו הקטגוריה משויכת. לדוגמה,my-project.
-
הגדרות סינון לפי כתובת IP של מאגרי מידע
בקטע הזה מובאות דוגמאות להגדרות של קובץ JSON לסינון כתובות IP של קטגוריות, כדי לשלוט בגישה לקטגוריות של Cloud Storage. אפשר להעניק גישה לבקשות נכנסות באמצעות אחד מהדוגמאות הבאות:
כל כתובת IP ציבורית (IPv4 או IPv6):
ההגדרה הבאה מעניקה גישה לכל כתובת ציבורית מסוג IPv4 או IPv6, אבל חוסמת תעבורה שמקורה בכל VPC:
gcloud
{ "mode": "Enabled", "publicNetworkSource": { "allowedIpCidrRanges": ["0.0.0.0/0", "::/0"] }, "allowAllServiceAgentAccess": false }
API בפורמט JSON
{ "name": "my-bucket", "ipFilter": { "mode": "Enabled", "publicNetworkSource": { "allowedIpCidrRanges": ["0.0.0.0/0", "::/0"] }, "allowAllServiceAgentAccess": false } }
טווחי כתובות IP ציבוריות ספציפיים:
הגדרת הדוגמה הבאה מעניקה גישה לטווח כתובות IPv4 ציבוריות
192.0.2.0/24, אבל חוסמת תעבורה שמקורה בכל VPC:gcloud
{ "mode": "Enabled", "publicNetworkSource": { "allowedIpCidrRanges": ["192.0.2.0/24"] }, "allowAllServiceAgentAccess": false }
API בפורמט JSON
{ "name": "my-bucket", "ipFilter": { "mode": "Enabled", "publicNetworkSource": { "allowedIpCidrRanges": ["192.0.2.0/24"] }, "allowAllServiceAgentAccess": false } }
הגדרת הגישה בדוגמה הבאה מאפשרת גישה לטווח כתובות ה-IPv6 הציבוריות
2001:db8::/32, אבל חוסמת תעבורה שמקורה בכל VPC:gcloud
{ "mode": "Enabled", "publicNetworkSource": { "allowedIpCidrRanges": ["2001:db8::/32"] }, "allowAllServiceAgentAccess": false }
API בפורמט JSON
{ "name": "my-bucket", "ipFilter": { "mode": "Enabled", "publicNetworkSource": { "allowedIpCidrRanges": ["2001:db8::/32"] }, "allowAllServiceAgentAccess": false } }
רשתות VPC: באמצעות ההגדרות הבאות, אתם יכולים להעניק גישה למשאבים ברשת ה-VPC. אתם יכולים להעניק גישה לכל כתובות ה-IP ב-VPC או לטווחים ספציפיים של כתובות IP ב-VPC. בכל אחת מהדוגמאות האלה,
PROJECT_IDהוא מזהה הפרויקט שבו קיימת רשת ה-VPC, ו-NETWORK_NAMEהוא השם של רשת ה-VPC שיש לה הרשאה לגשת לקטגוריה.הגדרת הדוגמה הבאה מעניקה גישה לבקשה מכל כתובת IPv4 או IPv6 שמגיעה מ-VPC ספציפי, וחוסמת תעבורה שמקורה בכתובת IP ציבורית:
gcloud
{ "mode": "Enabled", "vpcNetworkSources": [ { "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "allowedIpCidrRanges": ["0.0.0.0/0", "::/0"] }, ], "allowAllServiceAgentAccess": false }
API בפורמט JSON
{ "name": "my-bucket", "ipFilter": { "mode": "Enabled", "vpcNetworkSources": [ { "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "allowedIpCidrRanges": ["0.0.0.0/0", "::/0"] }, ], "allowAllServiceAgentAccess": false } }
הגדרת הדוגמה הבאה מעניקה גישה רק לבקשה מרשת VPC שמשויכת למכונה וירטואלית עם כתובת IPv4 חיצונית בתור
192.0.2.0/24, וחוסמת תעבורת נתונים שמגיעה מכתובת IP ציבורית:gcloud
{ "mode": "Enabled", "vpcNetworkSources": [ { "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "allowedIpCidrRanges": ["192.0.2.0/24"] }, ], "allowAllServiceAgentAccess": false }
API בפורמט JSON
{ "name": "my-bucket", "ipFilter": { "mode": "Enabled", "vpcNetworkSources": [ { "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "allowedIpCidrRanges": ["192.0.2.0/24"] }, ], "allowAllServiceAgentAccess": false } }
הגדרת הדוגמה הבאה מעניקה גישה רק לבקשה שמגיעה מ-VPC עם טווח של רשת משנה פנימית של IPv4 שמשויכת למכונה וירטואלית ללא כתובת IP חיצונית, וחוסמת תעבורת נתונים שמקורה בכתובת IP ציבורית:
gcloud
{ "mode": "Enabled", "vpcNetworkSources": [ { "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "allowedIpCidrRanges": ["IP_ADDRESS"] }, ], "allowAllServiceAgentAccess": false }
כאשר:
IP_ADDRESSהוא טווח של רשת משנה פנימית של כתובות IPv4.
API בפורמט JSON
{ "name": "my-bucket", "ipFilter": { "mode": "Enabled", "vpcNetworkSources": [ { "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "allowedIpCidrRanges": ["IP_ADDRESS"] }, ], "allowAllServiceAgentAccess": false } }
כאשר:
IP_ADDRESSהוא טווח של רשת משנה פנימית של כתובות IPv4.הגדרת הדוגמה הבאה מעניקה גישה רק לבקשה שמגיעה מ-VPC עם טווח של רשת משנה כפולה של IPv4 ו-IPv6 שמשויכת למכונה וירטואלית עם טווח כתובות IPv6 חיצוניות כ-
2001:db8::/32, וחוסמת תעבורה שמקורה בכתובת IP ציבורית:gcloud
{ "mode": "Enabled", "vpcNetworkSources": [ { "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "allowedIpCidrRanges": ["2001:db8::/32"] }, ], "allowAllServiceAgentAccess": false }
API בפורמט JSON
{ "name": "my-bucket", "ipFilter": { "mode": "Enabled", "vpcNetworkSources": [ { "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "allowedIpCidrRanges": ["2001:db8::/32"] }, ], "allowAllServiceAgentAccess": false } }