למה: Cloud tiering שומר רק קבצים בשימוש תכוף ("hot") במטמון באופן מקומי, בעוד שקבצים פחות בשימוש עוברים tiering ל-Azure, ומופיעים כ-stubs בשרת המקומי.
הגבל גישת רשת לחשבון אחסון לתתי רשת ספציפיות של VNet ולכתובות IP ציבוריות.
אפשר את חומת האש של חשבון האחסון. הוסף כללי רשת וירטואלית עבור תתי הרשת וכללי כתובות IP עבור כתובות ה-IP הציבוריות.
למה: חומת האש של האחסון מספקת בקרת גישה ברמת הרשת ישירות בנקודת הקצה הציבורית של חשבון האחסון, וחוסמת את כל התעבורה האחרת.
הגן על blobs מפני מחיקה בשוגג על ידי מתן אפשרות שחזור לתקופה מוגדרת.
אפשר blob soft delete בחשבון האחסון והגדר את תקופת השמירה (לדוגמה, 14 ימים).
למה: Soft delete שומר blobs שנמחקו לתקופה המוגדרת, ומאפשר ביטול מחיקה פשוט. זוהי קו ההגנה הראשון מפני אובדן נתונים בשוגג.
עמוד בדרישות תאימות לאחסון נתונים במצב בלתי ניתן למחיקה, בלתי ניתן לשינוי (WORM) לתקופה קבועה.
הגדר time-based retention policy על blob container ונעל את ה-policy.
למה: time-based retention policy נעולה הופכת blobs לבלתי ניתנים לשינוי (immutable), ומונעת מחיקה או שינוי על ידי כל אחד (כולל מנהלים) עד שתקופת השמירה תפוג.
העבר מערך נתונים גדול מאוד (לדוגמה, 50+ TB) ל-Azure Blob Storage כאשר רוחב הפס של הרשת מוגבל.
השתמש במכשיר הפיזי Azure Data Box להעברה לא מקוונת.
למה: עבור מערכי נתונים גדולים, משלוח מכשיר פיזי מהיר משמעותית מהעברת נתונים על פני חיבור רשת איטי או רווי.
פרוס ונהל משאבי מחשוב של Azure
השג SLA של 99.99% עבור VMs והגן על יישום מפני כשל של מרכז נתונים יחיד בתוך אזור.
פרוס מופעי VM מרובים על פני Availability Zones שונות בתוך אותו אזור.
למה: Availability Zones הם מרכזי נתונים נפרדים פיזית. Availability Sets מגנים רק מפני כשלים ברמת ה-rack בתוך מרכז נתונים יחיד (SLA של 99.95%).
פרוס ובדוק גרסת יישום חדשה עם תעבורת production חיה לפני שחרור מלא, עם אפס זמן השבתה.
השתמש ב-App Service deployment slot. פרוס ל-slot, בצע בדיקה, ולאחר מכן בצע swap. לחלופין, השתמש ב-traffic routing לבדיקת canary.
למה: Slots מספקים סביבת staging מלאה. פעולת ה-swap היא הפניה כמעט מיידית של תעבורה, המבטיחה אפס זמן השבתה.
הרץ עבודת batch קצרת מועד, מבוססת container, בלוח זמנים, בעלות מינימלית וללא ניהול תשתית.
השתמש ב-Azure Container Instances (ACI).
למה: ACI מציע חיוב לפי שנייה וללא תקורה של ניהול cluster, מה שהופך אותו לאפשרות החסכונית ביותר עבור עומסי עבודה של container ספורדיים או קצרי מועד.
בצע autoscale לעומס עבודה עם שיאים יומיים צפויים (לדוגמה, שעות עסקים) תוך טיפול גם בשיאים בלתי צפויים.
הגדר autoscale של VM Scale Set עם כללים מבוססי-לוח זמנים וגם כללים מבוססי-מטריקה.
למה: שילוב של סקיילינג פרואקטיבי (לוח זמנים) וריאקטיבי (מטריקה) מספק את האיזון הטוב ביותר בין ביצועים (מוכן לפני השיא) ויעילות עלויות (מצטמצם כאשר אינו בשימוש).
אחסן תמונות container עבור cluster של Azure Kubernetes Service (AKS) באופן מאובטח ב-registry פרטי עם סריקת פגיעויות.
השתמש ב-Azure Container Registry (ACR) Premium SKU ושלב אותו עם AKS באמצעות managed identity.
למה: ACR מספק registry פרטי הממוקם ב-Azure. ה-Premium SKU כולל סריקת פגיעויות. Managed identity מספק אימות מאובטח וחסר אישורים מ-AKS ל-ACR.
בצע עדכון OS או יישום בכל מופעי ה-VMSS מבלי לגרום לזמן השבתה של היישום.
עדכן את מודל ה-VMSS (לדוגמה, גרסת image חדשה) והשתמש ב-Rolling upgrade policy.
למה: ה-Rolling policy מעדכנת מופעים בקבוצות הניתנות להגדרה, ומבטיחה שתת-קבוצה של מופעים תמיד זמינה לשרת תעבורה לאורך כל תהליך העדכון.
פרוס יישום מרובה container (לדוגמה, אפליקציה + logging sidecar) שחייב לשתף רשת ואחסון, ללא orchestrator מלא.
פרוס את ה-containers לקבוצת container יחידה של Azure Container Instances (ACI).
למה: קבוצת container ממוקמת יחד מספר containers, ומשתפת רשת localhost ונפחים, מושלמת לדפוסי sidecar ללא המורכבות של Kubernetes.
הגדל את גודל דיסק ה-OS או הנתונים של VM לאחר פריסתו.
בטל הקצאה של ה-VM, שנה את גודל משאב הדיסק ב-Azure, הפעל את ה-VM, ולאחר מכן הרחב את המחיצה בתוך ה-guest OS.
למה: שינוי גודל דיסק Azure רק מקצה שטח נוסף. יש להנחות את ה-guest OS להשתמש בשטח החדש על ידי הרחבת מחיצת מערכת הקבצים שלו.
אפשר ל-App Service לגשת באופן מאובטח לסודות מ-Azure Key Vault מבלי לאחסן אישורים ביישום.
אפשר managed identity מוקצה-מערכת (system-assigned) ב-App Service והענק לזהות זו הרשאות `Get` ו-`List` על סודות ה-Key Vault.
למה: Managed identity מספק מנגנון אימות ללא אישורים. היישום יכול לרכוש access token עבור Key Vault באופן אוטומטי, ובכך לבטל את ניהול הסודות.
ארגן פריסת infrastructure-as-code גדולה ומורכבת לרכיבים קטנים יותר, ניתנים לשימוש חוזר וניתנים לתחזוקה.
בצע refactor לפריסה למודולי Bicep, כאשר כל מודול מייצג יחידה לוגית (לדוגמה, networking, compute), וארגן אותם מקובץ Bicep ראשי.
למה: מודולים מקדמים שימוש חוזר בקוד, משפרים קריאות ומפשטים ניהול של פריסות תשתית מורכבות.
הטמע ונהל רשתות וירטואליות
בודד שכבות יישום (web, app, data) בתוך VNet, מנע תקשורת ישירה בין שכבות שאינן סמוכות.
השתמש ב-subnet נפרד עבור כל שכבה והחל Network Security Groups (NSGs) על כל subnet כדי לשלוט בזרימת התעבורה.
למה: NSGs מאפשרים סינון פרטני ומצבני (stateful) המבוסס על טווחי IP של מקור/יעד (subnets), פורטים ופרוטוקולים, ומאפשרים micro-segmentation של הרשת.
חבר שני VNets באזורי Azure שונים באופן פרטי מעל רשת ה-backbone של Microsoft.
הגדר Global VNet Peering בין שני ה-VNets.
למה: Global Peering פשוט יותר, בעל latency נמוך יותר ורוחב פס גבוה יותר מחיבור VNet-to-VNet VPN. התעבורה נשארת ברשת הפרטית של Microsoft.
VNet-A מקושר ל-Hub-VNet, ו-Spoke-VNet מקושר גם הוא ל-Hub-VNet. VMs ב-VNet-A אינם יכולים להגיע ל-VMs ב-Spoke-VNet.
הסיבה היא ש-VNet peering אינו טרנזיטיבי. כדי לאפשר תקשורת, קשר ישירות את VNet-A ו-Spoke-VNet או השתמש ב-NVA ב-Hub.
למה: Peering אינו יוצר שרשרת. כל VNet חייב להיות מחובר ישירות כדי לתקשר, אלא אם כן מוגדר ניתוב דרך Network Virtual Appliance.
הקם מנהרת IPsec מוצפנת וקבועה מרשת on-premises ל-Azure VNet מעל האינטרנט הציבורי.
פרוס Azure VPN Gateway ב-VNet והגדר חיבור Site-to-Site (S2S).
למה: זהו הפתרון הסטנדרטי, המאובטח והאמין לקישוריות היברידית בין אתר on-premises יחיד ל-Azure VNet.
Azure Load Balancer ממשיך לשלוח תעבורה ל-VM אחורי לא תקין, וגורם ל-timeouts ביישום.
הגדר health probe ב-load balancer הבודק באופן מדויק את תקינות היישום ב-VMs האחוריים.
למה: ה-load balancer מסתמך לחלוטין על health probes כדי לזהות מופעים לא תקינים. ללא probe מוגדר כהלכה, הוא אינו יכול להסיר VMs כושלים מרוטציית התעבורה.
נתב תעבורת HTTP/S למאגרי שרתים אחוריים שונים בהתבסס על נתיב ה-URL (לדוגמה, /images/* לעומת /api/*).
השתמש ב-Azure Application Gateway עם כללי ניתוב מבוססי-נתיב.
למה: Application Gateway הוא Layer 7 load balancer שבודק בקשות HTTP ויכול לקבל החלטות ניתוב בהתבסס על נתיבי URL. Azure Load Balancer סטנדרטי הוא Layer 4 ואינו יכול.
VMs ב-VNet עם שרת DNS מותאם אישית אינם יכולים לפתור שמות מארחים ב-Azure Private DNS Zone.
הגדר את שרת ה-DNS המותאם אישית להעביר באופן מותנה שאילתות עבור ה-private zone לכתובת ה-IP של ה-DNS resolver שמספק Azure (168.63.129.16).
למה: כאשר נעשה שימוש בשרת DNS מותאם אישית, הוא עוקף את ה-DNS הפנימי של Azure. יש ללמד את השרת המותאם אישית כיצד לפתור אזורים ספציפיים ל-Azure על ידי העברת בקשות ל-Azure DNS.
אכוף שכל התעבורה היוצאת לאינטרנט מ-spoke VNets תיבדק על ידי Azure Firewall מרכזי ב-hub VNet.
החל Route Table עם User-Defined Route (UDR) על ה-spoke subnets. ה-UDR הוא default route (0.0.0.0/0) המצביע על ה-IP הפרטי של חומת האש.
למה: UDR עוקף את ניתוב המערכת הדיפולטיבי של Azure לאינטרנט, ומאפשר לך לשלוט ולרכז את זרימת תעבורת היציאה לבדיקת אבטחה.
ספק גישת RDP/SSH מאובטחת ל-VMs שאין להם כתובות IP ציבוריות, ללא הגדרת VPN.