כיצד לגשת לסודות API באמצעות AWS Lambda?

Kyzd Lgst Lswdwt Api B Mz Wt Aws Lambda



שיטות העבודה המומלצות של שירותי AWS כוללות שתי פעולות, כלומר, חנות-אחזור וביקורת-סיבוב. בשילוב שתי שיטות אלה באחד, AWS השיקה את Secret Manager שעוזר למשתמש להגן על המידע הסודי של האפליקציות שלו. AWS Secret Manager נמצא בשימוש נרחב ליצירת, אחסון , שינוי , משכפל , ואישורי מסד נתונים מסתובבים, מפתחות API, אסימוני OAuth וכו'.

מתאר מהיר

מאמר זה מכסה את ההיבטים הבאים:

מהי AWS Lambda?

AWS Lambda הוא שירות מחשוב לביצוע קודים במספר סביבות ושפות מבלי לספק ולנהל את השרתים. יתר על כן, AWS Lambda יכול להיות מופעל על ידי מספר שירותים שונים של AWS כגון S3 bucket, API Gateways וכו'. שירות זה משנה את האפליקציה באופן אוטומטי ומבצע את הקוד ביעילות מבלי לדרוש מהמשתמש להתקין תלות נוספת.







למידע נוסף על שירות Lambda, עיין במאמר זה כאן: 'תחילת העבודה עם AWS Lambda' .



מה זה מנהל סודי של AWS?

AWS Secret Manager מאפשר למשתמשים לאבטח ולהצפין את מידע מסווג של יישומים כגון אסימוני OAuth, אישורי מסד נתונים, ממשקי API וכו'. מידע סודי זה מכונה 'סוֹד' . הסודות הללו נגישים רק על ידי גורמים מורשים וניתן לסובב אותם על מנת לשפר את האבטחה.



למד עוד על אחסון אישורי RDS ב-Secret Manager על ידי הפניה למאמר זה: 'כיצד לאחסן אישורי אמזון RDS באמצעות Secret Manager?'





כיצד לגשת לסודות API ב-AWS באמצעות AWS Lambda?

Lambda מספקת תמיכה מובנית עבור שירותים מרובים, למשל. דלי S3, שער API ומנהל סודי. ניתן להשתמש בפונקציות למבדה כדי לקבל את הערך של הסודות המוגדרים. על ידי שימוש בסודות ה-API ב-AWS Lambda Functions, משתמשים יכולים ליצור אינטראקציה עם שירותים מרובים של AWS. סודות API כאלה חשובים גם להרשאת פונקציות הלמבדה.

כדי לגשת למפתחות API ב-AWS Secret Manager באמצעות AWS Lambda, בצע את השלבים המוזכרים להלן:



  • שלב 1: צור סוד API
  • שלב 2: צור מדיניות IAM
  • שלב 3: צור תפקיד IAM
  • שלב 4: צור תפקיד למבדה

שלב 1: צור סוד API

לפני שניגשים למפתח API ב-AWS Secret Manager, תחילה נלמד ליצור סוד API . למטרה זו, גש ל- 'מנהל סודי' שירות מ- מסוף ניהול AWS:

על קונסולה ראשית של המנהל הסודי של AWS, לחץ על 'אחסן סוד חדש' לַחְצָן:

בתוך ה 'סוג סודי' לחסום, בחר את 'סוג אחר של סוד' אפשרות מתוך האפשרויות השונות המוצגות:

גלול מטה אל 'צמדי מפתח/ערך' סעיף ולספק א צמד מפתח-ערך ייחודי עבור סוד ה-API שלך. ל לְהוֹסִיף יותר צמדי מפתח-ערך , הקלק על ה 'להוסיף שורה' לַחְצָן:

הבא הוא 'מפתח הצפנה' סָעִיף. AWS מספקת א מפתח הצפנה ברירת מחדל בשביל הסוד. עם זאת, המשתמש יכול גם לספק שם מותאם אישית עבור המפתח. על ידי שמירה על ברירת המחדל, לחץ על ' הַבָּא ' כפתור:

בממשק זה, המשתמש צריך לספק א שם ייחודי על סודם וא תיאור שהוא אופציונלי שדה כאן:

על ידי שמירה על הגדרות ללא שינוי , המשך הלאה על ידי לחיצה על ' הַבָּא ' כפתור:

הבא מגיע ה סעיף סקירה. כדי לאשר את כל מֵידָע בתנאי הוא נכון , הקלק על ה ' חנות כפתור ' הממוקם בתחתית הממשק:

הסוד היה נוצר בהצלחה . הקלק על ה ' לִטעוֹן מִחָדָשׁ ' כדי להציג את שם הסוד ב- לוּחַ מַחווָנִים :

שלב 2: צור מדיניות IAM

ל ליצור מדיניות IAM, לגשת אל שירות IAM ממסוף הניהול של AWS:

מ ה סרגל הצד של IAM שירות, לחץ על ' מדיניות ' אפשרות:

על מסוף מדיניות , הקלק על ה 'צור מדיניות' לַחְצָן:

למד עוד על מדיניות AWS IAM על ידי עיון במאמר זה: 'דוגמאות למדיניות AWS IAM'

הבא הוא 'ציין הרשאות' סָעִיף. חפש ובחר את 'מנהל סודי' שֵׁרוּת:

גלול מטה אל 'פעולות מותרות' לַחסוֹם. כאן, מרמות הגישה השונות, הקש על ' לקרוא ' אפשרות. בחר את 'כל פעולות הקריאה' אפשרות ל אפשר את כל הקריאה שירותים עבור מדיניות זו:

גלול מטה אל ה ' אֶמְצָעִי ' ולחץ על 'הוסף ARN' אוֹפְּצִיָה:

נווט חזרה אל לוח המחוונים של מנהל סודי של AWS ולחץ על שם הסוד. העתק את ' RNA ' של הסוד מתחת ל' ARN סודי ' תווית מהממשק המוצג:

על קונסולה עכשיו , הדבק את ה-ARN שהועתק ב-' RNA ' שדה:

לפני לחיצה על 'הוסף ARNs' לחצן, לחץ על 'החשבון הזה' לחצן כדי לאשר שהסודות קיימים באותו חשבון. לאחר הגדרת ההגדרות, לחץ על 'הוסף ARNs' לַחְצָן:

לאחר הגדרה כל ה הגדרות של הפוליסה, לחץ על ' הַבָּא ' כפתור:

בתוך ה סעיפי פרטי מדיניות , ציין את שם הפוליסה ב' שם מדיניות ' שדה:

הקלק על ה ' צור מדיניות ' כפתור:

ה מְדִינִיוּת נוצר בְּהַצלָחָה :

שלב 3: צור תפקיד IAM

בסעיף זה, צור תפקיד IAM המכיל את ההרשאות הנדרשות עבור פונקציות Lambda כדי לגשת לסודות. לשם כך, לחץ על ' תפקידים ' אפשרות מהסרגל הצדדי של תפקיד IAM ולאחר מכן הקש על 'צור תפקיד' כפתור מהממשק:

לאחר לחיצה על 'צור תפקיד' לחצן, הממשק הבא יוצג לך. בחר את 'שירות AWS' אפשרות מהאפשרויות הבאות שכן אנו נצרף זאת תפקיד IAM עם פונקציית למבדה:

בתוך ה 'מקרה שימוש' בקטע, חפש את שירות למדה ובחר בו. לחץ על ' הַבָּא ' כפתור בתחתית הממשק כדי להמשיך הלאה:

על הממשק הבא , חפש את השם של שם המדיניות שהגדרנו קודם לכן. מהתוצאות המוצגות, בחר את שם מדיניות:

לחץ על ' הַבָּא ' כפתור בחלק התחתון של ממשק כדי להמשיך הלאה:

לספק מזהה ייחודי בשבילך תפקיד IAM בשדה המודגש הבא:

שמירה על שאר ההגדרות כברירת מחדל , הקלק על ה 'צור תפקיד' לחצן על ידי גלילה מטה לתחתית הממשק:

התפקיד היה בְּהַצלָחָה נוצר:

למידע נוסף על יצירת תפקיד IAM ב-AWS עיין במאמר זה: 'כיצד ליצור תפקידי IAM ב-AWS' .

שלב 4: צור פונקציית Lambda

השלב הבא הוא יצירת פונקציית Lambda. פונקציית lambda זו תכיל את תפקיד IAM ותשיג את הערך של הסודות בעת ביצוע. כדי לגשת לשירות Lambda, חפש את ' למדה ' בשורת החיפוש של קונסולת ניהול AWS . לחץ על שם השירות מהתוצאה כדי לבקר בקונסולה:

בממשק הראשוני של שירות Lambda, לחץ על 'צור פונקציה' לַחְצָן:

זה יציג את ה 'צור פונקציה' מִמְשָׁק. בחר את 'מחבר מאפס' אפשרות ולהמשיך הלאה על ידי מתן השם עבור פונקציית למדה בשדה המודגש:

בתוך ה שדה זמן ריצה , בחר את ' פייתון 3.9 ' סביבה:

מתחת מדור זמן ריצה , יש 'שנה תפקיד ביצוע ברירת מחדל' סָעִיף. בחר את 'השתמש בתפקיד קיים' אפשרות ולאחר מכן ציין את התפקיד ב- 'תפקיד קיים' שדה:

באותו ממשק, הקש על 'צור פונקציה' כפתור בתחתית הממשק:

למידע נוסף על יצירת פונקציית Lambda, עיין במאמר זה: 'כיצד ליצור פונקציית Lambda עם Pyhton Runtime' .

הפונקציה Lambda נוצרה. השלב הבא הוא לספק את הקוד לפונקציית Lambda. כאשר קוד זה מבוצע, הוא יציג את הערכים של ה- מנהל סודי:

יְבוּא json
יְבוּא boto3
יְבוּא base64
מ-botocore. חריגים יְבוּא לקוח שגיאה

def lambda_handler ( מִקרֶה , הֶקשֵׁר ) :
סביבה = מִקרֶה [ 'env' ]
סוד_שם = 'shmaster19/%s/key' % סביבה
אזור_שם = 'ap-southeast-1'

מוֹשָׁב = boto3. מוֹשָׁב . מוֹשָׁב ( )
לָקוּחַ = מוֹשָׁב. לָקוּחַ (
שם השירות = 'מנהל הסודות' ,
אזור_שם = אזור_שם
)

לְנַסוֹת :
תגובת_ערך_סוד = לָקוּחַ. get_secret_value (
SecretId = סוד_שם
)
מלבד ClientError כשגיאה :
הדפס ( שְׁגִיאָה )
אַחֵר :
אם 'SecretString' ב תגובת_ערך_סוד :
סוֹד = json. המון ( תגובת_ערך_סוד [ 'SecretString' ] )
לַחֲזוֹר סוֹד
אַחֵר :
מפוענח_סוד_בינארי = base64. b64 פענוח ( סוד_ערך_תגובה [ 'SecretBinary' ] )
לַחֲזוֹר מפוענח_סוד_בינארי
  • ייבוא ​​json: משמש לביצוע פעולות JSON.
  • ייבוא ​​boto3: הוא ה-SDK לתקשורת בין AWS לפייתון.
  • בסיס ייבוא64: משמש לביצוע פונקציות קידוד ופענוח על נתונים בינאריים כמו Base64.
  • ייבוא ​​לקוח שגיאה: זה מאפשר למשתמשים לטפל בחריגים בקוד הכתוב.
  • סוד_שם: במשתנה זה, ספק את שם הסוד שלך. שימו לב שהסוד הזה מכיל '%s' . זה כאשר למשתמש יש מספר מפתחות בפורמט דומה. לדוגמה, אם משתמש יצר שני סודות, למשל, 'apikey/dev/key' ו 'apikey/prod/key' . ואז ב '%s' , אם המשתמש מספק ' dev ', פונקציית Lambda תספק את מפתח פיתוח (apikey/dev/key) ולהיפך.
  • בוטו. session.Session(): מאפשר למשתמשים ליצור לקוחות שירות ותגובות.
  • אזור_שם: ספק את שם האזור שבו מוגדר סוד ה-AWS שלך.
  • תגובת_ערך סודי: במשתנה זה, אנו משתמשים ב-' client.get_secret_value ” פונקציה שתחזיר את הערך של הסוד.
  • מפוענח_בינארי_secert: לאחר רכישת הערך של הסוד, הוא יפוענח עוד יותר לתוך פורמט בסיס 64 .

לאחר הדבקת הקוד בפונקציית Lambda, לחץ על ' לפרוס כדי לשמור ולהחיל שינויים:

שלב 5: בדיקת הקוד

בחלק זה של הבלוג, נוודא אם הקוד עובד או לא. לשם כך, לחץ על ' מִבְחָן כפתור ' לאחר פריסת בהצלחה של השינויים בפונקציית Lambda:

בממשק הבא, ספק את ה שם לבדיקה אירוע ב 'שם אירוע' שדה:

גלול מטה אל קטע JSON של אירוע , ציין את ' env ' מקש, וספק את הערך בפורמט JSON. ה ' ערך ' של המפתח יועבר ל '%s' . מכיוון שהסודות שציינו מכילים את ' dev 'ערך, ה' dev הערך מועבר ל- env 'משתנה. פונקציית Lambda תזהה את הסוד כאשר הקוד מבוצע כאשר המזהה של הסוד הספציפי מסופק בקוד. לאחר ציון הפרטים, לחץ על ' להציל ' כפתור:

כאשר האירוע נוצר בהצלחה, לחץ על ' מִבְחָן ' כפתור:

כאן יש לנו הושג בהצלחה הערך של הסוד שצוין:

זה הכל מהמדריך הזה.

סיכום

כדי לגשת למפתחות API ב-Secret Manager באמצעות Lambda, תחילה צור סוד API, IAM Policy, Role ו- Lambda Function והפעל את הקוד של הפונקציה. ניתן להפעיל פונקציות למבדה כדי לקבל את הערכים של מנהל הסוד של AWS על ידי ציון המזהה של הסוד בעת ביצוע הקוד. מאמר זה מספק הנחיות שלב אחר שלב כיצד לגשת למפתחות API ב-AWS Secret Manager באמצעות AWS Lambda.