אפליקציית שלוש שכבות: web, app, DB. בסיס הנתונים חייב להיות בלתי נגיש מהאינטרנט בשום פנים ואופן.
→תת-רשתות ציבוריות עבור שכבת ה-web (ALB). תת-רשתות פרטיות עבור שכבות ה-app וה-DB. קבוצת אבטחה של בסיס הנתונים מאפשרת תעבורה רק מקבוצת האבטחה של שכבת ה-app (לא מטווח CIDR).
למה: טבלאות ניתוב של תת-רשתות אוכפות נגישות; הפניות מקבוצת אבטחה לקבוצת אבטחה מקודדות הרשאה מינימלית בשכבת קבוצת האבטחה ושורדות שינויי IP.
מקור↗
מופע EC2 צריך לגשת ל-S3. יש להימנע מאישורי גישה מוטמעים.
→תפקיד IAM מצורף באמצעות פרופיל מופע. ה-SDK מאחזר אישורי גישה זמניים מ-IMDSv2.
למה: מפתחות גישה ארוכי טווח על מופעים הם הסיבה מס׳ 1 לדליפות אישורים. תפקידים מסתובבים אוטומטית, לעולם אינם נשמרים.
מקור↗
חסימת מתקפות SSRF שמנסות לקרוא מטא-דאטה של מופעי EC2.
→אכיפת IMDSv2 (`HttpTokens=required`) בהפעלת המופע. דחיית בקשות IMDSv1 לא מאומתות.
למה: IMDSv2 דורש אסימון סשן באמצעות PUT לפני שנקודת הקצה של המטא-דאטה מגיבה; מתקפות SSRF שמבצעות רק GETs נחסמות.
מקור↗
שירות A בחשבון A מפעיל Lambda בחשבון B. הרשאה מינימלית.
→מדיניות מבוססת משאבים על ה-Lambda היעד, המעניקה `lambda:InvokeFunction` ל-principal של תפקיד חשבון A. הקורא מקבל את התפקיד שלו ומפעיל ישירות — אין צורך בשרשור תפקידים.
למה: מדיניות משאבים היא התבנית הפשוטה ביותר בין חשבונות עבור משאבים מונחי שירות (Lambda, S3, SNS, SQS, KMS).
מקור↗
חשבונות AWS אחרים צריכים להעלות ל-S3 bucket מרכזי.
→מדיניות Bucket המעניקה `s3:PutObject` ל-principals של חשבונות חיצוניים. הוספת דרישת ACL של `bucket-owner-full-control` כדי שבעל ה-bucket ישמור על שליטה באובייקטים.
למה: ללא `bucket-owner-full-control` (או `BucketOwnerEnforced` Object Ownership), אובייקטים שהועלו בבעלות חשבון הכותב.
מקור↗
מניעת כל S3 bucket בארגון מלהיות ציבורי.
→הפעלת S3 Block Public Access ברמת החשבון (ובארגונים דרך SCPs). עוקף ACLs ומדיניות ברמת ה-bucket.
למה: הגדרת רמת חשבון גוברת על הגדרות לכל bucket — הגנה מפני תצורת שגיאה מקרית.
מקור↗
מפתחים חייבים ליצור תפקידי IAM בעצמם אך אינם יכולים להעניק הרשאות מעבר לקבוצת הרשאות מקסימלית מוגדרת.
→גבולות הרשאה (Permission boundaries) על ה-principal של המפתח. הרשאות אפקטיביות = מדיניות זהות ∩ גבול.
למה: SCPs חלים ברמת החשבון/OU; גבולות קובעים היקף ל-principals פרטניים. השתמש בגבולות עבור דפוסי ניהול מואצלים.
מקור↗
הגבלת יחידה ארגונית (OU) לאזורים ספציפיים לצורך עמידה בדרישות מיקום נתונים.
→מדיניות בקרת שירות (SCP) בארגונים הדוחה כל פעולה שבה `aws:RequestedRegion` אינו ברשימה המותרת.
למה: SCPs הם המנגנון היחיד שיכול לדחות פעולות שהחשבון עצמו מתיר. IAM אינו יכול לדחות מה ששורש החשבון יכול להעניק.
מקור↗
כניסה יחידה (SSO) לכוח עבודה על פני חשבונות AWS רבים; שילוב עם IdP ארגוני.
→AWS IAM Identity Center (לשעבר AWS SSO) עם פדרציית SAML/OIDC ל-IdP הארגוני. ערכות הרשאות ממפות לתפקידים בחשבונות חברים.
למה: Identity Center היא הזהות הקנונית של כוח עבודה מרובה חשבונות. Cognito מיועד למשתמשי קצה של יישומים, לא לעובדים.
מקור↗
בחירת Cognito User Pool לעומת Identity Pool.
→User Pool = הרשמה / התחברות / הנפקת JWT למשתמשי אפליקציה. Identity Pool = החלפת אסימונים לאישורי AWS זמניים. רוב האפליקציות משתמשות בשניהם: User Pool מאמת, Identity Pool מאשר גישה ל-AWS.
מקור↗
הוספת שלב אימות מותאם אישית לכניסה ל-Cognito (לדוגמה: דומיין אימייל ברשימה לבנה).
→טריגרי Lambda: Pre Sign-up, Pre Authentication, Define/Create/Verify Auth Challenge. אימות או דחייה ב-Lambda.
מקור↗
צורך בשליטה מלאה על סיבוב מפתחות, מחיקה ומסלול ביקורת לכל מפתח.
→מפתח KMS בניהול לקוח (CMK). מפתחות בניהול AWS (`aws/<service>`) פשוטים יותר אך אינם מציעים בקרת מדיניות מפתחות או נראות לשימוש מפתח פרטני.
למה: CMKs מאפשרים לך לקבוע היקף גישה לכל מפתח ב-CloudTrail, להגדיר מדיניות מפתחות לשימוש חוצה חשבונות, ולהשבית/לתזמן מחיקה.
מקור↗
חשבון B צריך לפענח אובייקטים ב-S3 המוצפנים באמצעות CMK של חשבון A.
→מדיניות מפתח ב-CMK מעניקה `kms:Decrypt` ל-principals של חשבון B. ה-IAM של חשבון B גם זקוק ל-`kms:Decrypt` על ה-ARN של המפתח. שני החצאים נדרשים.
למה: KMS חוצה חשבונות דורש אישור מפורש הן במדיניות המפתח והן בזהות ה-IAM של הקורא (בניגוד לרוב מדיניות המשאבים).
מקור↗
הצפנת נתונים ב-`us-east-1`; פענוח ב-`us-west-2` לאחר שכפול, ללא הצפנה מחדש.
→מפתח KMS מרובה אזורים. ראשי באזור אחד, העתק באחר, שניהם עם אותו חומר מפתח ומזהה.
למה: מונע את ריקוד עטיפת הטקסט המוצפן מחדש לצורך מעבר לגיבוי או DR בין אזורים.
מקור↗
הצפנת אובייקטים גדולים ללא קריאות API של KMS לכל אובייקט שישלטו בעלות.
→הצפנת מעטפה. KMS מייצר מפתח נתונים (קריאת API אחת); השתמש במפתח הנתונים כדי להצפין את המטען באופן מקומי; אחסן את מפתח הנתונים המוצפן לצד הטקסט המוצפן.
למה: KMS מוגבל קצב ומתומחר לפי בקשה. תבנית המעטפה היא הדרך הקנונית להצפנת נתונים > כמה קילובייטים.
מקור↗
בחירת Secrets Manager לעומת SSM Parameter Store SecureString.
→אישורי בסיס נתונים עם סיבוב אוטומטי, שיתוף חוצה חשבונות, סודות גדולים ← Secrets Manager. דגלי תצורה, הגדרות אפליקציה, סודות פשוטים, עלות נמוכה ביותר ← SSM Parameter Store.
למה: ל-Secrets Manager יש פונקציות Lambda מובנות לסיבוב עבור RDS/Aurora/DocumentDB/Redshift; ל-Parameter Store אין סיבוב מקורי אך הוא חינם עבור שכבת Standard.
מקור↗
סיבוב אוטומטי של סיסמת RDS כל 30 יום.
→Secrets Manager עם סיבוב מנוהל. תבנית Lambda מובנית מטפלת בסיבוב משתמש יחיד מול נקודת הקצה של RDS. אפליקציות מאחזרות את הסוד בזמן ההתחברות (נשמר במטמון) — אין צורך בפריסה מחדש של האפליקציה.
מקור↗
הפחתת מתקפת הצפה של HTTP בשכבה 7 מבלי לחסום עליות לגיטימיות.
→כלל מבוסס קצב של AWS WAF (לדוגמה: 2000 בקשות / 5 דקות לכל IP) על ה-ALB או CloudFront. בשילוב עם קבוצות כללים מנוהלות עבור IPים ידועים כרעים.
למה: כללי קצב של WAF עוקבים אחרי כל IP מקור; חסימה אוטומטית כאשר חורג מהסף; שחרור לאחר החלון.
מקור↗
אפליקציה קריטית למשימה זקוקה להגנה מפני עלויות DDoS ותמיכת SRT 24×7.
→AWS Shield Advanced ב-CloudFront / ALB / NLB / Global Accelerator. כולל הגנת עלויות (החזרים עבור הוצאות קנה מידה במהלך התקפה) + גישה לצוות התגובה של Shield.
למה: Shield Standard אוטומטי וחינם; Advanced מוסיף הגנות ו-SLA. CloudFront הוא תמיד הדלת הקדמית המומלצת.
מקור↗
בחירת קבוצת אבטחה לעומת NACL.
→Stateful, מתחבר ל-ENI, מאפשר בלבד ← קבוצת אבטחה (ברירת מחדל). Stateless, ברמת תת-רשת, מאפשר + דחייה מפורשת ← NACL. השתמש ב-NACLs עבור כללי דחייה גורפים (חסימת טווחי IP); SGs לכל השאר.
למה: NACLs מעריכים כניסה ויציאה בנפרד. SGs מאפשרים אוטומטית תעבורת חזרה.
מקור↗
EC2 בתת-רשת פרטית חייב להגיע ל-S3/DynamoDB ללא עלות יציאה של NAT.
→נקודת קצה של VPC gateway עבור S3 ו-DynamoDB. חינם, כניסת טבלת ניתוב, ללא NAT.
למה: נקודות קצה של Gateway מיועדות רק ל-S3/DynamoDB. חוסך חיובי עיבוד נתונים של NAT ושומר את התעבורה על עמוד השדרה של AWS.
מקור↗
תת-רשת פרטית חייבת להגיע ל-APIs של שירותי AWS (KMS, Secrets Manager, ECR וכו') באופן פרטי.
→נקודת קצה של VPC interface (PrivateLink) לכל שירות. ENI ב-VPC שלך, מחויב לפי שעה + לפי GB.
למה: נקודות קצה של Interface עובדות כמעט עבור כל שירות AWS. השתמש כדי להסיר יציאת NAT עבור קריאות שירות.
מקור↗
ספק SaaS חושף את השירות שלו בתוך ה-VPC לחשבונות לקוחות באופן פרטי, ללא VPC peering או תחזוקת ניתוב לקוחות.
→שירות נקודת קצה של AWS PrivateLink המגובה על ידי NLB. לקוחות יוצרים נקודות קצה של ממשק כדי לצרוך.
למה: אין חששות מחפיפת CIDR, אין עבודת Meshing של peering, חשיפה חד-כיוונית (הספק לא רואה תעבורת לקוחות).
מקור↗
חיבור 30+ VPCs בין חשבונות ולסביבה מקומית בטופולוגיית Hub-and-Spoke.
→AWS Transit Gateway. חיבור יחיד לכל VPC; טבלאות ניתוב מפצלות תעבורה.
למה: חיבור Peer בטופולוגיית Full-mesh דורש N×(N-1)/2 חיבורים. TGW מתרחב ליניארית ותומך בחיבור חוצה חשבונות דרך RAM.
מקור↗
קישוריות היברידית הדורשת רוחב פס צפוי, חביון נמוך והצפנה.
→Direct Connect עם Site-to-Site VPN מעל ה-DX (MACsec או IPsec). DX לבדו אינו מוצפן; VPN מעל DX הוא פרטי + מוצפן + עם תנודתיות נמוכה.
למה: VPN רגיל מעל האינטרנט זול אך בעל חביון משתנה. DX לבדו מהיר אך טקסט רגיל בשכבת הקישור.
מקור↗
זיהוי איומים רציף על פני VPC Flow Logs, DNS, CloudTrail, ביקורת EKS, אירועי נתוני S3.
→Amazon GuardDuty. ברמת הארגון דרך מנהל מואצל של Organizations.
למה: זיהוי איומים מנוהל. ממצאים ל-Security Hub או EventBridge לאוטומציית תגובה.
מקור↗
גילוי וסיווג PII / PHI ב-S3 buckets.
→Amazon Macie. גילוי נתונים רגישים מבוסס ML, בהיקף S3, משתלב עם Security Hub.
מקור↗
סריקת CVE רציפה עבור EC2, תמונות ECR, פונקציות Lambda.
→Amazon Inspector v2. מגלה משאבים אוטומטית באמצעות Systems Manager Agent, סורק מול CVEs מפורסמים.
מקור↗
איחוד ממצאים מ-GuardDuty, Inspector, Macie, IAM Access Analyzer ללוח מחוונים אחד.
→AWS Security Hub. CSPM עם AWS Foundational Security Best Practices ותקני CIS.
מקור↗
אכיפה שכל כרכי EBS מוצפנים; תיקון אוטומטי של משאבים לא תואמים.
→כללי AWS Config (מנוהל `encrypted-volumes`) + Runbook של Systems Manager Automation לתיקון, המופעל באמצעות פעולת תיקון של Config.
מקור↗
יומן ביקורת יחיד ובלתי ניתן לשינוי על פני כל החשבונות בארגון.
→נתיב ארגוני (Organization trail) עם אימות קבצי יומן מופעל, הנכתב ל-S3 bucket מרכזי עם מדיניות bucket המונעת מחיקה.
למה: נתיבים ארגוניים מופעלים אוטומטית בכל חשבונות החברים (נוכחיים ועתידיים). חשיפות אימות מוכיחות שהיומנים לא שונו.
מקור↗
מחלקות מרובות זקוקות לגישה מוגבלת לקידומות שונות ב-S3 bucket משותף.
→S3 Access Points — אחד לכל מחלקה, כל אחד עם מדיניות גישה משלו ו(אופציונלית) הגבלת VPC.
למה: נקי יותר ממדיניות bucket מתפשטת; לנקודות גישה יש ARN ושמות DNS משלהן.
מקור↗
עומס עבודה של PCI DSS — בידוד קפדני מחשבונות שאינם PCI.
→חשבון AWS ייעודי בתוך OU של Organizations עם SCPs המגבילים גישה לשירות / אזור. VPC נפרד, מפתחות KMS, תפקידי IAM. Network Firewall או GWLB לבדיקת יציאה.
למה: גבול חשבון הוא הבידוד החזק ביותר של רדיוס פיצוץ ב-AWS.
מקור↗
תעודת TLS ציבורית עבור `*.example.com` ב-ALB ו-CloudFront. חידוש אוטומטי.
→תעודה ציבורית של AWS Certificate Manager (ACM) עם אימות DNS ב-Route 53. מתחדשת אוטומטית 60 יום לפני התפוגה.
למה: חינם לשימוש עם שירותים משולבי AWS. אימות אימייל עובד אך אימות DNS מועדף לאוטומציה.
מקור↗