كيفية الوصول إلى أسرار API باستخدام AWS Lambda؟

Kyfyt Alwswl Aly Asrar Api Bastkhdam Aws Lambda



تتضمن أفضل ممارسات خدمات AWS إجراءين، أي استرداد المتجر والتدقيق والتدوير. من خلال الجمع بين هاتين الممارستين في واحدة، أطلقت AWS برنامج Secret Manager الذي يساعد المستخدم على حماية المعلومات السرية لتطبيقاته. يتم استخدام AWS Secret Manager على نطاق واسع لإنشاء، تخزين , تعديل , تكرار وتدوير بيانات اعتماد قاعدة البيانات، ومفاتيح API، ورموز OAuth المميزة، وما إلى ذلك.

مخطط سريع

تتناول هذه المقالة الجوانب التالية:

ما هو AWS لامدا؟

AWS Lambda هي خدمة حوسبة لتنفيذ التعليمات البرمجية في بيئات ولغات متعددة دون توفير الخوادم وإدارتها. علاوة على ذلك، يمكن تشغيل AWS Lambda من خلال العديد من خدمات AWS المختلفة مثل مجموعة S3 وبوابات API وما إلى ذلك. تعمل هذه الخدمة تلقائيًا على قياس التطبيق وتنفيذ التعليمات البرمجية بكفاءة دون مطالبة المستخدم بتثبيت أي تبعيات إضافية.







لمعرفة المزيد حول خدمة Lambda، راجع هذه المقالة هنا: 'البدء مع AWS Lambda' .



ما هو مدير AWS السري؟

يمكّن AWS Secret Manager المستخدمين من تأمين وتشفير ملفات معلومات سرية للتطبيقات مثل رموز OAuth المميزة وبيانات اعتماد قاعدة البيانات وواجهات برمجة التطبيقات وما إلى ذلك. ويشار إلى هذه المعلومات السرية باسم 'سر' . لا يمكن الوصول إلى هذه الأسرار إلا من خلال الهيئات المرخص لها ويمكن تغييرها لتعزيز الأمان.



تعرف على المزيد حول تخزين بيانات اعتماد RDS في Secret Manager من خلال الرجوع إلى هذه المقالة: 'كيفية تخزين بيانات اعتماد Amazon RDS باستخدام Secret Manager؟'





كيفية الوصول إلى أسرار API في AWS باستخدام AWS Lambda؟

توفر Lambda دعمًا مدمجًا لخدمات متعددة، على سبيل المثال. مجموعة S3 وبوابة API والمدير السري. يمكن استخدام وظائف Lambda للحصول على قيمة الأسرار التي تم تكوينها. باستخدام أسرار واجهة برمجة التطبيقات (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 Secret Manager، انقر فوق 'تخزين سر جديد' زر:

في ال 'النوع السري' كتلة، اختر 'نوع آخر من السر' خيار من الخيارات المختلفة المعروضة:

قم بالتمرير لأسفل إلى 'أزواج المفتاح/القيمة' القسم وتقديم أ زوج فريد من نوعه ذو قيمة مفتاحية لسر API الخاص بك. ل يضيف أكثر أزواج القيمة الرئيسية ، اضغط على 'اضف سطر' زر:

التالي هو 'مفتاح التشفير' قسم. توفر AWS أ مفتاح التشفير الافتراضي للسر. ومع ذلك، يمكن للمستخدم أيضًا توفير اسم مخصص للمفتاح. من خلال الاحتفاظ بالإعداد الافتراضي، انقر فوق ' التالي ' زر:

على هذه الواجهة، يجب على المستخدم توفير اسم فريد لسرهم و الوصف وهو اختياري المجال هنا:

من خلال الحفاظ على الإعدادات دون تغيير تابع المزيد بالضغط على ' التالي ' زر:

التالي يأتي قسم الاستعراض. لتأكيد كافة معلومة المقدمة هي صحيح ، اضغط على ' محل 'الزر الموجود أسفل الواجهة:

لقد كان السر تم إنشاؤه بنجاح . اضغط على ' إعادة تحميل 'زر لعرض اسم السر على لوحة القيادة :

الخطوة 2: إنشاء سياسة IAM

ل إنشاء سياسة IAM، الوصول إلى خدمة آي إم من وحدة الإدارة في AWS:

من الشريط الجانبي لـ IAM الخدمة اضغط على ' سياسات ' خيار:

على ال وحدة تحكم السياسة ، اضغط على 'إنشاء سياسة' زر:

تعرف على المزيد حول سياسة AWS IAM من خلال الرجوع إلى هذه المقالة: 'أمثلة على سياسة AWS IAM'

التالي هو 'تحديد الأذونات' قسم. بحث واختيار 'المدير السري' خدمة:

قم بالتمرير لأسفل إلى 'الإجراءات المسموح بها' حاجز. هنا، من مستويات الوصول المختلفة، انقر فوق ' يقرأ ' خيار. حدد 'جميع إجراءات القراءة' خيار ل تمكين كافة القراءة الخدمات لهذه السياسة:

حرك الفأرة لأسفل إلى ' موارد 'القسم وانقر على 'إضافة ARN' خيار:

انتقل مرة أخرى إلى لوحة تحكم AWS Secret Manager وانقر على اسم السر. انسخ ال ' الحمض النووي الريبي 'من السر أدناه' ARN السري ' من الواجهة المعروضة:

على ال وحدة التحكم الآن ، الصق ARN المنسوخ في ' الحمض النووي الريبي ' مجال:

قبل النقر على 'إضافة أرقام ARN' زر، انقر على 'هذا الحساب' زر لتأكيد وجود الأسرار في نفس الحساب. بعد ضبط الإعدادات اضغط على 'إضافة أرقام ARN' زر:

بعد تكوين كل ال إعدادات للسياسة، انقر على ' التالي ' زر:

في ال أقسام تفاصيل السياسة ، قم بتوفير اسم السياسة في ' اسم السياسة ' مجال:

اضغط على ' إنشاء سياسة ' زر:

ال سياسة تم إنشاء بنجاح :

الخطوة 3: إنشاء دور IAM

في هذا القسم، قم بإنشاء دور IAM الذي يحتوي على الأذونات المطلوبة لوظائف Lambda للوصول إلى الأسرار. ولهذا الغرض اضغط على ' الأدوار ' من الشريط الجانبي لدور IAM ثم اضغط على 'إنشاء دور' زر من الواجهة:

بعد النقر على 'إنشاء دور' الزر، ستظهر لك الواجهة التالية. حدد 'خدمة أوس' الخيار من الخيارات التالية حيث سنقوم بإرفاق هذا دور IAM مع وظيفة لامدا:

في ال 'حالة الاستخدام' القسم، ابحث في خدمة لامدا واختره. ضرب ' التالي ' الموجود أسفل الواجهة للمضي قدمًا:

على ال الواجهة التالية ، ابحث عن اسم اسم السياسة التي قمنا بتكوينها في وقت سابق. من النتائج المعروضة، حدد اسم السياسة:

انقر على ' التالي 'زر في الجزء السفلي من واجهة للمضي قدما:

توفير معرف فريد من اجلك دور IAM في الحقل المميز التالي:

الحفاظ على بقية الإعدادات بشكل افتراضي ، اضغط على 'إنشاء دور' زر بالتمرير لأسفل إلى أسفل الواجهة:

لقد كان الدور بنجاح مخلوق:

لمعرفة المزيد حول إنشاء دور IAM في AWS، راجع هذه المقالة: 'كيفية إنشاء أدوار IAM في AWS' .

الخطوة 4: إنشاء وظيفة لامدا

الخطوة التالية هي إنشاء وظيفة Lambda. ستحتوي وظيفة lambda هذه على دور IAM وستحصل على قيمة الأسرار عند تنفيذها. للوصول إلى خدمة Lambda، ابحث في ' لامدا 'في شريط البحث الخاص بـ وحدة تحكم إدارة AWS . انقر على اسم الخدمة من النتيجة لزيارة وحدة التحكم:

على الواجهة الأولية لخدمة Lambda، انقر فوق 'إنشاء وظيفة' زر:

سيعرض هذا 'إنشاء وظيفة' واجهه المستخدم. حدد 'المؤلف من الصفر' الخيار والمضي قدمًا من خلال توفير اسم لـ وظيفة لامدا في الحقل المميز:

في ال مجال وقت التشغيل ، حدد ' بايثون 3.9 ' بيئة:

تحت ال قسم وقت التشغيل ، هناك 'تغيير دور التنفيذ الافتراضي' قسم. حدد 'استخدام دور موجود' الخيار ثم حدد الدور في 'الدور الموجود' مجال:

على نفس الواجهة، اضغط على 'إنشاء وظيفة' الزر الموجود أسفل الواجهة:

لمعرفة المزيد حول إنشاء دالة Lambda، راجع هذه المقالة: 'كيفية إنشاء دالة Lambda باستخدام Pyhton Runtime' .

تم إنشاء وظيفة Lambda. الخطوة التالية هي توفير الكود لوظيفة Lambda. عند تنفيذ هذا الكود، فإنه سيتم عرض قيم المدير السري:

يستورد json
يستورد boto3
يستورد base64
من البوتكور. استثناءات يستورد خطأ العميل

def lambda_handler ( حدث , سياق ) :
بيئة = حدث [ 'البيئة' ]
Secret_name = 'shmaster19/%s/مفتاح' % بيئة
المنطقة_اسم = 'AP-جنوب شرق-1'

حصة = boto3. حصة . حصة ( )
عميل = حصة. عميل (
اسم الخدمة = 'مدير الأسرار' ,
المنطقة_اسم = المنطقة_اسم
)

يحاول :
Secret_value_response = عميل. get_secret_value (
معرف سري = Secret_name
)
باستثناء ClientError كخطأ :
مطبعة ( خطأ )
آخر :
لو 'سلسلة سرية' في Secret_value_response :
سر = json. الأحمال ( Secret_value_response [ 'سلسلة سرية' ] )
يعود سر
آخر :
decoded_binary_secret = base64. b64decode ( Secret_value_Response [ ''الثنائي السري'' ] )
يعود decoded_binary_secret
  • استيراد جيسون: يستخدم لتنفيذ عمليات JSON.
  • استيراد boto3: هو SDK للتواصل بين AWS وPython.
  • قاعدة الاستيراد64: يستخدم لأداء وظائف التشفير وفك التشفير على البيانات الثنائية مثل Base64.
  • خطأ عميل الاستيراد: يتيح ذلك للمستخدمين التعامل مع الاستثناءات في التعليمات البرمجية المكتوبة.
  • اسم_السر: في هذا المتغير، قم بتوفير اسم السر الخاص بك. لاحظ أن هذا السر يحتوي على '٪س' . يحدث هذا عندما يكون لدى المستخدم مفاتيح متعددة بتنسيق مماثل. على سبيل المثال، إذا قام المستخدم بإنشاء سرين، على سبيل المثال، 'apikey/ديف/مفتاح' و 'apikey/همز/مفتاح' . ثم في '٪س' ، إذا قدم المستخدم ' ديف '، ستوفر وظيفة Lambda مفتاح التنمية (apikey/dev/key) والعكس صحيح.
  • بوتو. الجلسة.الجلسة (): يسمح للمستخدمين بإنشاء عملاء الخدمة والاستجابات.
  • اسم_المنطقة: قم بتوفير اسم المنطقة التي تم تكوين سر AWS الخاص بك فيها.
  • الاستجابة_القيمة_السرية: في هذا المتغير نستخدم ' client.get_secret_value 'الوظيفة التي ستعيد قيمة السر.
  • Decoded_binary_secert: وبعد الحصول على قيمة السر، سيتم فك شفرته أيضًا تنسيق قاعدة 64 .

بعد لصق الكود في وظيفة Lambda، انقر فوق ' نشر زر لحفظ التغييرات وتطبيقها:

الخطوة 5: اختبار الكود

في هذا القسم من المدونة سوف نتحقق مما إذا كان الكود يعمل أم لا. ولهذا الغرض اضغط على ' امتحان ' بعد نشر التغييرات بنجاح على وظيفة Lambda:

في الواجهة التالية، قم بتوفير اسم للاختبار الحدث في 'اسم الحدث' مجال:

قم بالتمرير لأسفل إلى قسم الحدث JSON ، حدد ال ' بيئة '، وقم بتوفير القيمة بتنسيق JSON. ال ' قيمة سيتم تمرير 'من المفتاح إلى '٪س' . حيث أن الأسرار التي حددناها تحتوي على ' ديف 'القيمة،' ديف 'يتم تمرير القيمة إلى' بيئة ' عامل. ستحدد وظيفة Lambda السر عند تنفيذ الكود حيث يتم توفير معرف السر المحدد في الكود. بعد تحديد التفاصيل اضغط على ' يحفظ ' زر:

عندما يتم إنشاء الحدث بنجاح، انقر فوق ' امتحان ' زر:

لدينا هنا تم الحصول عليها بنجاح قيمة سرنا المحدد:

هذا كل شيء من هذا الدليل.

خاتمة

للوصول إلى مفاتيح واجهة برمجة التطبيقات في Secret Manager باستخدام Lambda، قم أولاً بإنشاء API Secret وسياسة IAM والدور ووظيفة Lambda وتنفيذ التعليمات البرمجية للوظيفة. يمكن استدعاء وظائف Lambda للحصول على قيم AWS Secret Manager عن طريق تحديد معرف السر عند تنفيذ التعليمات البرمجية. توفر هذه المقالة إرشادات خطوة بخطوة حول كيفية الوصول إلى مفاتيح API في AWS Secret Manager باستخدام AWS Lambda.