זהו פוסט אורח בבלוג שנכתב יחד עם פטריק אוברהר מ-Contentful ו-Johannes Günther מ-Netlight Consulting.
פוסט זה בבלוג מראה כיצד לשפר את האבטחה בארכיטקטורת צנרת נתונים המבוססת על אמזון מנוהל זרימות עבודה עבור Apache Airflow (Amazon MWAA) ו Amazon Elastic Kubernetes Service (Amazon EKS) על ידי הגדרת הרשאות עדינות, באמצעות HashiCorp Terraform עבור תשתית כקוד.
לקוחות AWS רבים משתמשים באמזון EKS כדי לבצע את עומסי העבודה שלהם. היתרונות של Amazon EKS כוללים אפשרויות מחשוב ואחסון שונות בהתאם לצרכי עומס העבודה, ניצול משאבים גבוה יותר על ידי שיתוף תשתית בסיסית, וקהילה תוססת של קוד פתוח המספקת הרחבות ייעודיות. ה נתונים על EKS הפרויקט מספק סדרה של תבניות ומשאבים אחרים כדי לעזור ללקוחות להתחיל במסע הזה. הוא כולל תיאור של השימוש אמזון MWAA כמתזמן עבודה.
מרוצה הוא לקוח של AWS ושותף ברשת השותפים של AWS (APN). מאחורי הקלעים של המוצר Software-as-a-Service (SaaS) שלהם, פלטפורמת Contentful Composable Content, Contentful משתמש בתובנות מנתונים כדי לשפר את קבלת ההחלטות העסקיות ואת חווית הלקוח. עוסק בתוכן Netlight, שותף לייעוץ APN, כדי לסייע בהקמת פלטפורמת נתונים לאיסוף התובנות הללו.
רוב עומסי העבודה של האפליקציות של Contentful פועלים על Amazon EKS, והידע על שירות זה ו-Kubernetes נפוץ בארגון. זו הסיבה שצוות הנדסת הנתונים של Contentful החליט להפעיל צינורות נתונים גם באמזון EKS. לעבודה תזמון, הם התחילו עם Apache Airflow בהפעלה עצמית באשכול EKS של אמזון ומאוחר יותר עברו לאמזון MWAA כדי להפחית את תקורה ההנדסית והתפעולית. העבודה הוצאת להורג נשאר באמזון EKS.
Contentful מפעיל צינור נתונים מורכב באמצעות תשתית זו, כולל הטמעה ממקורות נתונים מרובים ועבודות טרנספורמציה שונות, למשל באמצעות dbt. כל הצינור חולק סביבת MWAA אחת של אמזון ומקבץ EKS יחיד של אמזון. עם סט מגוון של עומסי עבודה בסביבה אחת, יש צורך ליישם את עקרון הפחות זכות, להבטיח שלמשימות או רכיבים בודדים יש רק את ההרשאות הספציפיות שהם צריכים כדי לתפקד.
על ידי פילוח הרשאות לפי תפקידים ואחריות, צוות הנדסת הנתונים של Contentful הצליח ליצור סביבת עיבוד נתונים חזקה ומאובטחת יותר, אשר חיונית לשמירה על שלמות וסודיות הנתונים המטופלים.
בפוסט זה בבלוג, אנו עוברים דרך הגדרת התשתית מאפס ופריסה של אפליקציה לדוגמה באמצעות Terraform, הכלי המועדף של Contentful לתשתית כקוד.
תנאים מוקדמים
כדי לעקוב אחרי פוסט זה בבלוג, אתה צריך להתקין את הגרסה העדכנית ביותר של הכלים הבאים:
סקירה כללית
בפוסט זה בבלוג, תיצור יישום לדוגמה עם התשתית הבאה:
זרימת העבודה לדוגמה של Airflow מפרטת אובייקטים בדלי המקור, מאחסנת רשימה זו באופן זמני באמצעות Airflow XComs, וכותב את הרשימה כקובץ לדלי היעד. יישום זה מבוצע באמצעות אמזון EKS pods, המתוזמנים על ידי סביבת MWAA של אמזון. אתה פורס את אשכול EKS וסביבת MWAA לתוך א ענן פרטי וירטואלי (VPC) ולהחיל הרשאות לפחות הרשאות על תרמי EKS באמצעות תפקידי IAM עבור חשבונות שירות. דלי התצורה עבור Amazon MWAA מכיל דרישות זמן ריצה, כמו גם את קוד היישום המציין גרף אציקלי מכוון זרימת אוויר (DAG).
אתחול הפרויקט וצור דליים
צור קובץ main.tf
עם התוכן הבא בספרייה ריקה:
קובץ זה מגדיר את ה ספק Terraform AWS כמו גם דלי המקור והיעד, ששמותיו מיוצאים בתור פרמטרים של מנהל מערכות AWS. זה גם אומר ל- Terraform להעלות אובייקט ריק בשם dummy.txt
לתוך דלי המקור, מה שמאפשר לאפליקציית Airflow לדוגמה שניצור מאוחר יותר כדי לקבל תוצאה בעת רישום תוכן הדלי.
אתחל את פרויקט Terraform והורד את התלות של המודול על ידי הוצאת הפקודה הבאה:
צור את התשתית:
Terraform מבקשת ממך להכיר בשינויים בסביבה ולאחר מכן מתחילה לפרוס משאבים ב-AWS. לאחר פריסה מוצלחת, אתה אמור לראות את הודעת ההצלחה הבאה:
צור VPC
צור קובץ חדש vpc.tf
באותה ספריה כמו main.tf
והכנס את הדברים הבאים:
קובץ זה מגדיר את ה-VPC, רשת וירטואלית, שתארח מאוחר יותר את אשכול EKS של אמזון וסביבת אמזון MWAA. שימו לב שאנו משתמשים ב-an קיימים Terraform מודול עבור זה, אשר עוטף תצורה של משאבי הרשת הבסיסיים כמו רשתות משנה, טבלאות מסלול, ו שערי NAT.
הורד את מודול VPC:
פרוס את המשאבים החדשים:
שימו לב אילו משאבים נוצרים. על ידי שימוש במודול VPC בקובץ Terraform שלנו, חלק ניכר מהמורכבות הבסיסית נלקחת מנגד בעת הגדרת התשתית שלנו, אך עדיין שימושי לדעת מה בדיוק נפרס.
שימו לב ש- Terraform מטפל כעת במשאבים שהגדרנו בשני הקבצים, main.tf
ו vpc.tf
, כי Terraform כולל הכל .tf
קבצים בספריית העבודה הנוכחית.
צור את סביבת ה-MWAA של אמזון
צור קובץ חדש mwaa.tf
והכנס את התוכן הבא:
כמו קודם, אנו משתמשים ב-an מודול קיים כדי לחסוך במאמץ תצורה עבור סביבת Amazon MWAA. המודול גם יוצר את דלי התצורה, שבו אנו משתמשים כדי לציין את תלות בזמן ריצה של האפליקציה (apache-airflow-cncf-kubernetes) בתוך ה requirements.txt
קוֹבֶץ. חבילה זו, בשילוב עם החבילה המותקנת מראש אפאצ'י-זרימת אוויר-אמזון, מאפשר אינטראקציה עם Amazon EKS.
הורד את מודול MWAA:
פרוס את המשאבים החדשים:
פעולה זו נמשכת 20-30 דקות.
צור את אשכול EKS של אמזון
צור קובץ eks.tf
עם התוכן הבא:
כדי ליצור את האשכול עצמו, אנו מנצלים את ה אמזון EKS שרטוטים עבור Terraform פּרוֹיֶקט. אנו גם מגדירים קבוצת צומת מנוהלת עם צומת אחד כגודל היעד. שים לב שבמקרים עם עומס משתנה, קנה קנה מידה של האשכול שלך עם נגר במקום גישת קבוצת הצמתים המנוהלת המוצגת לעיל הופכת את סולם האשכולות לגמישה יותר. השתמשנו בקבוצות צמתים מנוהלות בעיקר בגלל קלות התצורה.
אנו מגדירים את הזהות שה- תפקיד ביצוע MWAA של אמזון מניח ב- Kubernetes באמצעות map_roles
מִשְׁתַנֶה. לאחר הגדרת התצורה של ספק Terraform Kubernetes, אנו נותנים לתפקיד הביצוע של Amazon MWAA הרשאות לנהל פודים באשכול.
הורד את מודול EKS Blueprints for Terraform:
פרוס את המשאבים החדשים:
פעולה זו נמשכת כ-12 דקות.
צור תפקידי IAM עבור חשבונות שירות
צור קובץ roles.tf
עם התוכן הבא:
קובץ זה מגדיר שני חשבונות שירות Kubernetes, source-bucket-reader-sa
ו destination-bucket-writer-sa
, וההרשאות שלהם נגד AWS API, תוך שימוש בתפקידי IAM עבור חשבונות שירות (IRSA). שוב, אנו משתמשים במודול מפרויקט Amazon EKS Blueprints for Terraform כדי לפשט את תצורת IRSA. שים לב ששני התפקידים מקבלים רק את ההרשאות המינימליות שהם צריכים, המוגדרים באמצעות מדיניות AWS IAM.
הורד את המודול החדש:
פרוס את המשאבים החדשים:
צור את ה-DAG
צור קובץ dag.py
הגדרת זרימת האוויר DAG:
ה-DAG מוגדר לפעול בלוח זמנים שעתי, עם שתי משימות read_bucket
עם חשבון שירות source-bucket-reader-sa
ו write_bucket
עם חשבון שירות destination-bucket-writer-sa
, רצים אחד אחרי השני. שניהם מופעלים באמצעות ה EksPodOperator, אשר אחראי על תזמון המשימות באמזון EKS, באמצעות ה תמונה של AWS CLI Docker להפעיל פקודות. המשימה הראשונה מפרטת קבצים בדלי המקור וכותבת את הרשימה ל-Airflow XCom. המשימה השנייה קוראת את הרשימה מ-XCom ומאחסנת אותה בדלי היעד. שימו לב שה- service_account_name
פרמטר מבדיל מה כל משימה מורשית לעשות.
צור קובץ dag.tf
כדי להעלות את קוד ה-DAG לדלי התצורה של אמזון MWAA:
פרוס את השינויים:
סביבת ה-MWAA של אמזון מייבאת אוטומטית את הקובץ מה-S3 bucket.
הפעל את ה- DAG
בדפדפן שלך, נווט אל קונסולת MWAA של אמזון ובחר את הסביבה שלך. בפינה הימנית העליונה, בחר פתח את ממשק המשתמש של Airflow . אתה אמור לראות את הדברים הבאים:
כדי להפעיל את ה-DAG, ב- פעולות עמודה, בחר את סמל ההפעלה ולאחר מכן בחר טריגר DAG. לחץ על שם ה-DAG כדי לחקור את ריצת ה-DAG ותוצאותיה.
נווט אל קונסולת אמזון S3 ובחרו את הדלי שמתחיל ב"יעד". זה צריך להכיל קובץ list.json
נוצר לאחרונה על ידי ה write_bucket
מְשִׁימָה. הורד את הקובץ כדי לחקור את תוכנו, רשימת JSON עם ערך יחיד.
לנקות את
המשאבים שיצרת בהדרכה זו כרוכים בעלויות AWS. כדי למחוק את המשאבים שנוצרו, הפק את הפקודה הבאה:
ואשר את השינויים בתיבת הדו-שיח של Terraform CLI.
סיכום
בפוסט זה בבלוג, למדת כיצד לשפר את האבטחה של צינור הנתונים שלך הפועל על Amazon MWAA ו- Amazon EKS על ידי צמצום ההרשאות של כל משימה בנפרד.
כדי לצלול לעומק, השתמש בדוגמא העבודה שנוצרה בהדרכה זו כדי לחקור את הנושא עוד יותר: מה יקרה אם תסיר את service_account_name
פרמטר ממשימת זרימת אוויר? מה קורה אם מחליפים את שמות חשבונות השירות בשתי המשימות?
לשם הפשטות, בהדרכה הזו השתמשנו במבנה קבצים שטוח עם קבצי Terraform ו-Python בתוך ספרייה אחת. לא דבקנו ב מבנה מודול סטנדרטי מוצע על ידי Terraform, המומלץ בדרך כלל. בפרויקט אמיתי, פיצול הפרויקט למספר פרויקטים או מודולים של Terraform עשוי גם להגביר את הגמישות, המהירות והעצמאות בין צוותים בעלי חלקים שונים של התשתית.
לבסוף, הקפד ללמוד את נתונים על EKS תיעוד, המספק משאבים יקרי ערך אחרים להפעלת צינור הנתונים שלך באמזון EKS, כמו גם את אמזון MWAA ו זרימת אוויר של אפאצ'י תיעוד ליישום מקרי שימוש משלך. ספציפית, תסתכל על זה יישום לדוגמה של מודול Terraform עבור Amazon MWAA ו- Amazon EKS, המכיל גישה בוגרת יותר לתצורת אמזון EKS ולשינוי קנה מידה אוטומטי של צומת, כמו גם לרשת.
אם יש לך שאלות, אתה יכול לפתוח שרשור חדש בנושא AWS re:Post או להגיע אל תמיכה ב-AWS.
על הכותבים
אולריך הינזה הוא אדריכל פתרונות ב-AWS. הוא משתף פעולה עם חברות תוכנה כדי לתכנן ולהטמיע פתרונות מבוססי ענן ב-AWS. לפני שהצטרף ל-AWS, הוא עבד עבור לקוחות ושותפים של AWS בתפקידי הנדסת תוכנה, ייעוץ וארכיטקטורה במשך 8 שנים ומעלה.
פטריק אוברהר הוא מהנדס נתונים צוות ב-Contentful עם 4+ שנות עבודה עם AWS ו-10+ שנים בתחום הנתונים. ב-Contentful הוא אחראי על התשתית והתפעול של מחסנית הנתונים שמתארחת ב-AWS.
יוהנס גינטר הוא יועץ ענן ונתונים ב-Netlight עם 5+ שנות עבודה עם AWS. הוא עזר ללקוחות בתעשיות שונות בתכנון פלטפורמות ענן ברות קיימא והוא מוסמך AWS.
- הפצת תוכן ויחסי ציבור מופעל על ידי SEO. קבל הגברה היום.
- PlatoData.Network Vertical Generative Ai. העצים את עצמך. גישה כאן.
- PlatoAiStream. Web3 Intelligence. הידע מוגבר. גישה כאן.
- PlatoESG. פחמן, קלינטק, אנרגיה, סביבה, שמש, ניהול פסולת. גישה כאן.
- PlatoHealth. מודיעין ביוטכנולוגיה וניסויים קליניים. גישה כאן.
- מקור: https://aws.amazon.com/blogs/big-data/set-up-fine-grained-permissions-for-your-data-pipeline-using-mwaa-and-eks/
- :יש ל
- :הוא
- :לֹא
- $ למעלה
- 1
- 10
- 100
- 12
- 16
- 2023
- 27
- 41
- 8
- 9
- a
- יכול
- אודות
- מֵעַל
- פי
- חֶשְׁבּוֹן
- חשבונות
- הודה
- לרוחב
- פעולות
- מחזורי
- הוסיף
- לדבוק
- יתרון
- יתרונות
- לאחר
- שוב
- נגד
- תעשיות
- לאורך
- גם
- אמזון בעברית
- אמזון שירותי אינטרנט
- an
- ו
- אחר
- כל
- אַפָּשׁ
- API
- בקשה
- החל
- גישה
- לאשר
- ארכיטקטורה
- ARE
- AS
- מניח
- At
- אישור
- מכני עם סלילה אוטומטית
- באופן אוטומטי
- זמין
- רָחוֹק
- AWS
- מוסמך AWS
- לקוח AWS
- מבוסס
- כי
- לפני
- מאחור
- מאחורי הקלעים
- להיות
- בֵּין
- בלוג
- שניהם
- דפדפן
- עסקים
- אבל
- by
- CAN
- מקרים
- מוסמך
- השתנה
- שינויים
- בחירה
- בחרו
- קליק
- לקוחות
- ענן
- אשכול
- קוד
- טור
- שילוב
- קהילה
- חברות
- להשלים
- מורכב
- מורכבות
- רכיבים
- לחשב
- סודיות
- תְצוּרָה
- קונסול
- יועץ
- ייעוץ
- להכיל
- מכיל
- תוכן
- פלטפורמת תוכן
- בפינה
- לתקן
- עלויות
- לִיצוֹר
- נוצר
- יוצר
- נוֹכְחִי
- לקוח
- חווית לקוח
- לקוחות
- DAG
- נתונים
- מהנדס נתונים
- פלטפורמת נתונים
- עיבוד נתונים
- datetime
- החליט
- קבלת החלטות
- עמוק יותר
- לְהַגדִיר
- מוגדר
- מגדיר
- הגדרה
- תלות
- תלות
- תלוי
- לפרוס
- פרס
- פריסה
- פריסה
- תיאור
- תכנון
- יעד
- הרוס
- דיאלוג
- DID
- אחר
- מְכוּוָן
- צלילה
- שונה
- do
- סַוָר
- תיעוד
- להורדה
- ציור
- כל אחד
- להקל
- הד
- מאמץ
- ריק
- מאפשר
- מאורס
- מהנדס
- הנדסה
- הבטחתי
- כניסה
- סביבה
- חיוני
- Ether (ETH)
- בדיוק
- דוגמה
- חליפין
- לבצע
- יצא לפועל
- הוצאת להורג
- ניסיון
- לחקור
- סיומות
- שקר
- שדה
- שלח
- קבצים
- ראשון
- דירה
- גמישות
- בגמישות
- לעקוב
- הבא
- בעד
- החל מ-
- פונקציה
- נוסף
- ללקט
- בדרך כלל
- לקבל
- GitHub
- לתת
- גרף
- קְבוּצָה
- קבוצה
- אוֹרֵחַ
- בלוג אורחים
- מטפל
- קורה
- יש
- he
- לעזור
- עזר
- גבוה יותר
- המארח
- אירח
- איך
- איך
- HTML
- HTTPS
- IAM
- זהות
- if
- ליישם
- יישום
- לייבא
- יבוא
- לשפר
- in
- לכלול
- כולל
- כולל
- להגדיל
- עצמאות
- בנפרד
- תעשיות
- תשתית
- בתוך
- תובנות
- במקום
- שלמות
- אינטראקציה
- מִמְשָׁק
- אל תוך
- סוגיה
- הנפקת
- IT
- שֶׁלָה
- עצמו
- עבודה
- מקומות תעסוקה
- הצטרפות
- מסע
- jpg
- ג'סון
- מפתח
- סוג
- לדעת
- ידע
- קוברנט
- מאוחר יותר
- האחרון
- למד
- הכי פחות
- כמו
- רשימה
- רישום
- רשימות
- לִטעוֹן
- מקומי
- מחובר
- נראה
- שמירה
- לעשות
- עושה
- לנהל
- הצליח
- מנהל
- בוגר
- מאי..
- הודעה
- מידע נוסף
- מינימום
- דקות
- מודול
- מודולים
- יותר
- הרבה
- מספר
- שם
- שם
- שמות
- נווט
- הכרחי
- צורך
- צרכי
- רשת
- רשתות
- חדש
- צומת
- הערות
- עַכשָׁיו
- אובייקט
- אובייקטים
- of
- on
- ONE
- רק
- קוד פתוח
- מבצע
- תפעול
- מפעילי
- אפשרויות
- or
- ארגון
- אחר
- שלנו
- הַחוּצָה
- תפוקה
- שֶׁלוֹ
- חבילה
- פרמטר
- שותף
- רשת שותפים
- שותפים
- חלקים
- תיקון
- נתיב
- פטריק
- הרשאות
- צינור
- פלטפורמה
- פלטפורמות
- אפלטון
- מודיעין אפלטון
- אפלטון נתונים
- לְשַׂחֵק
- תרמילים
- מדיניות
- דיוקן
- הודעה
- בראש ובראשונה
- פְּרָטִי
- תהליך
- המוצר
- פּרוֹפִיל
- פּרוֹיֶקט
- פרויקטים
- מוּצָע
- ספק
- ספקים
- מספק
- פיתון
- שאלות
- RE
- לְהַגִיעַ
- לקבל
- לאחרונה
- מוּמלָץ
- להפחית
- באזור
- להסיר
- דרישות
- משאב
- ניצול משאבים
- משאבים
- אחריות
- אחראי
- תוצאה
- תוצאות
- חָסוֹן
- תפקיד
- תפקידים
- כלל
- הפעלה
- ריצה
- פועל
- SaaS
- אותו
- שמור
- סולם
- דרוג
- סצנות
- לוח זמנים
- מתוכנן
- תזמון
- לגרד
- שְׁנִיָה
- לבטח
- אבטחה
- לִרְאוֹת
- סדרה
- שרות
- שירותים
- סט
- הצבה
- שיתופים
- שיתוף
- צריך
- הראה
- הופעות
- פשטות
- לפשט
- יחיד
- סביבה בודדת
- מידה
- קטן
- תוכנה
- הנדסת תוכנה
- פתרונות
- מָקוֹר
- מקורות
- ספציפי
- במיוחד
- מְהִירוּת
- לערום
- סגל
- התחלה
- החל
- החל
- התחלות
- הצהרה
- עוד
- אחסון
- אפשרויות אחסון
- חנויות
- מִבְנֶה
- לימוד
- נושא
- הצלחה
- מוצלח
- בטוח
- בר קיימא
- עבר
- סמל
- מערכות
- לקחת
- משימות
- לוקח
- יעד
- המשימות
- משימות
- נבחרת
- צוותי
- אומר
- תבניות
- Terraform
- טֶקסט
- זֶה
- השמיים
- המקור
- שֶׁלָהֶם
- אז
- אלה
- הֵם
- זֶה
- דרך
- ל
- אסימון
- כלי
- כלים
- חלק עליון
- נושא
- טרנספורמציה
- להפעיל
- נָכוֹן
- שתיים
- סוג
- בְּסִיסִי
- עדכון
- על
- להשתמש
- מְשׁוּמָשׁ
- משתמש
- ממשק משתמש
- שימושים
- באמצעות
- בעל ערך
- ערך
- משתנה
- שונים
- גרסה
- מלא חיים
- וירטואלי
- ללכת
- בהדרכה
- היה
- we
- אינטרנט
- שירותי אינטרנט
- טוֹב
- מה
- מתי
- אשר
- כל
- של מי
- למה
- נָפוֹץ
- יצטרך
- עם
- עבד
- זרימת עבודה
- זרימות עבודה
- עובד
- שנים
- אתה
- זפירנט