מילון מושגים:
AWS - שירותי הענן של אמזון (Amazon Web Services), המספקים שרתים, אחסון, מסדי נתונים ושירותים נוספים לפי שימוש.
Node.js - סביבת ריצה שמאפשרת להריץ קוד JavaScript מחוץ לדפדפן, בעיקר בצד השרת.
MySQL - מערכת ניהול מסדי נתונים יחסיים בקוד פתוח, נפוצה מאוד באתרים וביישומי אינטרנט.
Terraform - כלי להגדרת תשתית כקוד, שמאפשר ליצור ולנהל משאבי ענן ותשתית בעזרת קובצי תצורה.
VPC - רשת וירטואלית פרטית ומבודדת בתוך הענן, שבה הלקוח שולט בכתובות, בתת-רשתות ובכללי הגישה.
EC2 - שירות של AWS להפעלת שרתים וירטואליים בענן לפי דרישה ולפי שימוש.
IPv4 - הגרסה הרווחת של פרוטוקול IP, שבה כתובת מורכבת מארבעה מספרים בין 0 ל-255.
IPv6 - הדור החדש של פרוטוקול IP, עם מרחב כתובות גדול בהרבה מ-IPv4, שנכתבות בפורמט הקסדצימלי.
יצירת AWS Security Group עבור RDS - פרויקט NodeJS
בשיעור זה יוצרים חוקי חומת אש בענן של AWS עבור ה-SQL, מקימים Security Group עם חוקי כניסה ויציאה, פותרים שגיאת כפילות בשמות, ומחברים את הקבוצה החדשה למופע ה-RDS הקיים.
נושאי הסיכום המוצגים בשיעור:
1. הבעיה שאותה פותרים: שרת ה-MySQL בענן כבר עובד אבל אי אפשר להתחבר אליו כי אין חוק בחומת האש שמאפשר חיבור, ובעולם של AWS חוקי החומת אש נקראים security group.
2. מה ייפתח בקבוצה: בתוך ה-security group פותחים את פורט שלוש שלוש אפס שש, הפורט של MySQL, ונותנים התחברות לכל מי שנמצא בקבוצה של המכונות הווירטואליות, שהם למעשה שרתי ה-web שלנו, וכי השרת הקיים משויך ל-security group הוא יוכל להתחבר ל-RDS.
3. הרחבה לכמה שרתים עם count: אם רוצים יותר משרת אחד משתמשים ב-count, וכדי שלמכונות לא יהיה שם זהה מוסיפים את מספר האינדקס לשם, וברגע שה-count גדול מאחד האובייקט הופך ממכונה בודדת לרשימה של מכונות, ואז כשפונים אליו מקבלים רשימה וצריך לציין בדיוק איזה אינדקס רוצים, כשהספירה מתחילה מאפס, ואפשר גם כוכבית שמשמעותה כל הרשימה, אבל בשלב זה משאירים מכונה אחת ונותנים לכל מי שמשויך לקבוצה אישור להיכנס ל-SQL.
4. חוק נוסף לגישה מהבית: מוסיפים חוק שמאפשר התחברות לדאטאבייס בפורט שלוש שלוש אפס שש מכתובת ה-IP שלנו מהבית, כך שרק אנחנו והמכונות הווירטואליות שיושבות בקבוצה בענן יוכלו להיכנס, וגם כי יש כתובת IP אינטרנטית החומת האש תמנע מכל האחרים להתחבר.
5. הבאת הקוד מהתיעוד הרשמי: מחפשים בגוגל את המשאב של security group ב-Terraform, נכנסים לאתר הרשמי, מורידים לחלק של השימוש הבסיסי, לוקחים את הדוגמה הפשוטה ומוסיפים משאב חדש מתחת ל-RDS, ונותנים לו שם פנימי של Terraform שלא יראו בענן אבל ישמש לקישור בין הקבוצה למכונה הווירטואלית.
6. מאפייני הקבוצה וה-VPC: לקבוצה יש מאפייני שם ותיאור, וכמו כל אובייקט בענן היא משויכת ל-VPC, ומעתיקים את מזהה ה-VPC המוגדר כברירת מחדל, נותנים תיאור שמתאר שמותר תעבורת MySQL, ואפשר להוסיף הערות בקוד עם סולמית כדי שיהיה קל להבין אותו בעתיד.
7. חוקי כניסה לפי כתובת: מוסיפים חוק כניסה, ingress rule, שמשויך לקבוצה שיצרנו, ומציינים כתובות IP מותרות, את הכתובת שלנו מהבית עם סיומת שלושים ושתיים שמשמעותה כתובת אחת ויחידה, ואם היינו נותנים סיומת של רשת גדולה יותר כל מי שברשת הזאת היה יכול להתחבר, והחוק פועל על פורט שלוש שלוש אפס שש.
8. חוק כניסה מקבוצה לקבוצה: חוק שני מאפשר לכל ה-VPC ולכל מכונות ה-EC2 שמשויכות לקבוצה שלהן להתחבר ל-MySQL, ובמקום כתובות IP נותנים את המאפיין שמקשר ל-security group האחר, כך שהחוק עובד על בסיס קבוצה לקבוצה, ומגלים את המאפיין הזה בקישור לחוקי הכניסה בתיעוד הרשמי של Terraform.
9. חוקי יציאה: אחרי שני חוקי הכניסה מוסיפים חוקי יציאה, egress, חוק שמאפשר לכולם לצאת החוצה ב-IPv4 וחוק שמאפשר יציאה ב-IPv6, ואם רוצים אבטחה ברמה גבוהה יותר אפשר למחוק את שני החוקים האלה ואז המכונה לא יכולה לצאת החוצה ביוזמתה.
10. תיקון שגיאת כפילות: ב-Terraform plan מקבלים הודעת שגיאה על duplicate resource, כי לקחנו את אותה דוגמה מוכנה גם ב-RDS וגם ב-EC2 ולא שינינו את השמות, והמזהה של אובייקט הוא סוגו נקודה שמו, ולכן מוסיפים לשמות החוקים של ה-RDS קידומת ייחודית כדי שהשמות יהיו שונים מאלו של ה-EC2 וה-plan יעבור.
11. ה-plan וה-apply: ב-plan רואים חמישה אובייקטים חדשים, ארבעה חוקים וקבוצה ראשית, וסימן של שינוי ב-instance הקיים של ה-RDS, שבו יוחלף מזהה ה-security group מהקבוצה דיפולטית לקבוצה החדשה שתיווצר, וב-apply שעושה קודם plan ומציג את התוכנית ומבקש אישור, אפשר היה גם להשתמש ב-auto approve, וברגע שהוא מסיים יש חוקי כניסה שמאפשרים התחברות פנימה ל-MySQL.
סיכום:
בשיעור זה בנינו בקוד Terraform קבוצת אבטחה לשרת ה-SQL בענן, הגדרנו חוקי כניסה גם לפי כתובת IP אישית וגם מקבוצת ה-EC2 אל הקבוצה של ה-RDS, הוספנו חוקי יציאה ודנו באפשרות להחריגם לאבטחה מחמירה, תקנו כפילות שמות בין המשאבים, וביצענו plan ו-apply שחיברו את הקבוצה החדשה אל מופע ה-RDS הקיים, ובשיעור הבא נדבר על שיטות להתחברות פנימה.
SR13881HE