מופע Compute Engine צריך לקרוא מדלי Cloud Storage ולכתוב לטבלת BigQuery. הענק את ההרשאות המינימליות הנדרשות.
→צור חשבון שירות (service account) מותאם אישית. הענק לו את התפקידים `roles/storage.objectViewer` ו-`roles/bigquery.dataEditor`. צרף חשבון שירות זה למופע.
למה: שימוש בחשבון שירות מותאם אישית עם תפקידים ספציפיים ומוגדרים מראש מונע את האופי הפרוץ יתר על המידה של חשבון השירות המוגדר כברירת מחדל של Compute Engine, ובכך דבק בעקרון הפריבילגיה המינימלית.
הענק למשתמש הרשאות לניהול מופעי GCE אך לא למחיקתם.
→צור תפקיד IAM מותאם אישית. התחל עם ההרשאות מהתפקיד `roles/compute.instanceAdmin.v1` והסר את ההרשאה `compute.instances.delete`.
למה: תפקידים מותאמים אישית מספקים את הגמישות להעניק קבוצת הרשאות מדויקת כאשר תפקידים מוגדרים מראש רחבים מדי או מגבילים מדי עבור פונקציית עבודה ספציפית.
מפתח צריך להתחבר ב-SSH למופע Compute Engine שאין לו כתובת IP חיצונית, בהתאם למדיניות האבטחה.
→הענק למפתח את התפקיד `roles/iap.tunnelResourceAccessor`. לאחר מכן הוא יכול להתחבר באמצעות `gcloud compute ssh [INSTANCE_NAME] --tunnel-through-iap`.
למה: Identity-Aware Proxy (IAP) TCP forwarding מספק שיטה מאובטחת ומבוססת זהות לגישה למופעים פנימיים ללא מארחי בסיס (bastion hosts), VPNs או IP ציבוריים.
מקור↗
אפשר תעבורת SSH נכנסת (פורט 22) ל-VMs ספציפיים מטווח ה-IP של המשרד הארגוני בלבד.
→צור כלל חומת אש של VPC עם `direction: INGRESS`, `action: ALLOW`, `protocol/ports: tcp:22`, `source ranges: [CORPORATE_IP_CIDR]`, ו-`target tags: [e.g., "allow-ssh"]`. החל את התג על ה-VMs המיועדים.
למה: שילוב טווחי מקור ותגי יעד מספק דרך מדויקת וסקלאבילית לשלוט בתעבורה. זה מגביל גם *מי* יכול להתחבר וגם *למה* הוא יכול להתחבר.
מנע העתקה או גישה לנתונים מפרויקט BigQuery רגיש מחוץ לגבול רשת מהימן, גם עם אישורים תקפים.
→הגדר VPC Service Controls. צור היקף שירות (service perimeter) הכולל את הפרויקט הרגיש ומגביל את BigQuery API.
למה: VPC Service Controls יוצרים "היקף נתונים" וירטואלי השולט בגישה ברמת ה-API, ומספק הגנה חזקה מפני זליגת נתונים שכללי חומת אש אינם יכולים לספק.
ספק ליישום צד שלישי גישת קריאה זמנית ומוגבלת בזמן לאובייקט פרטי ספציפי בדלי Cloud Storage.
→צור URL חתום עבור האובייקט עם זמן תפוגה קצר (לדוגמה, 15 דקות) באמצעות חשבון שירות עם הרשאות קריאה.
למה: כתובות URL חתומות מעניקות גישה זמנית, לפי אובייקט, ללא צורך שיהיה לצד השלישי חשבון Google או הרשאות IAM. זו השיטה המאובטחת ביותר למקרה שימוש זה.
קוד GKE צריך לגשת בצורה מאובטחת לממשקי API של Google Cloud (לדוגמה, Pub/Sub) ללא אחסון מפתחות חשבון שירות כסודות Kubernetes.
→אפשר Workload Identity באשכול GKE. צור Google Service Account (GSA) ו-Kubernetes Service Account (KSA). קשור את ה-KSA ל-GSA באמצעות מדיניות IAM. הגדר את הקוד להשתמש ב-KSA.
למה: Workload Identity היא הדרך המומלצת וחסרת המפתחות עבור יישומי GKE לאימות לשירותי Google Cloud. היא ממפה זהויות KSA לזהויות GSA, וזה מאובטח יותר מניהול וסיבוב קבצי מפתח.
מקור↗
מדיניות ארגונית דורשת שכל הנתונים בדלי Cloud Storage יוצפנו באמצעות מפתח הצפנה שהארגון שולט בו.
→צור מפתח קריפטוגרפי ב-Cloud KMS. בעת יצירת דלי Cloud Storage, ציין מפתח זה כמפתח הצפנה מנוהל על ידי הלקוח (CMEK).
למה: CMEK מעניק לך שליטה על המפתח המשמש להצפנה, כולל סיבוב וביטול, תוך ניצול תשתית ההצפנה המנוהלת של Google.
אפשר לעובדים להשתמש באישור ה-Active Directory הקיים שלהם מתוך ה-premises כדי לגשת למשאבי Google Cloud.
→הגדר את Cloud Identity ל-federate עם Active Directory באמצעות SAML 2.0. משתמשים מאמתים עם AD, אשר מאשרת את זהותם ל-Google Cloud לצורך גישה.
למה: פדרציה מאפשרת Single Sign-On (SSO) ומרכזת את ניהול הזהויות ב-IdP הקיים (Active Directory), ובכך נמנעת הצורך לנהל סט נפרד של סיסמאות ב-Google Cloud.
הענק לקבלן חיצוני גישה זמנית לפרויקט, שאמורה לפוג אוטומטית לאחר 30 יום.
→הוסף את הקבלן כחבר IAM עם התפקיד הנדרש. הוסף תנאי לקישור התפקיד עם חותמת זמן תפוגה (`request.time < timestamp("YYYY-MM-DDTHH:MM:SSZ")`).
למה: IAM Conditions מספקים בקרת גישה מבוססת תכונות. תנאים מבוססי זמן מושלמים לגישה זמנית, מכיוון שהם מבטלים הרשאות באופן אוטומטי ללא צורך בניקוי ידני.