كيفية إنشاء موقع آمن باستخدام CloudFront Password Protect

نشرت: 2023-01-15

تحتفظ Amazon Web Service (AWS) بحصة الأسد في سوق الحوسبة السحابية بنسبة 41.5٪ ، وهي أكثر خدمات الحوسبة السحابية شيوعًا في الوقت الحاضر. يسمح للشركات والأفراد باستضافة تطبيقاتهم ومواقعهم على خوادم أمازون بثمن بخس.

يعد Amazon CloudFront أحد المكونات الأساسية لـ AWS. إنها شبكة توصيل محتوى (CDN) مصممة لزيادة سرعة التحميل لأي زائر لموقعك المستضاف على AWS.

ولكن هل تعلم أنه يمكنك استخدام CloudFront لإغلاق موقع الويب الخاص بك خلف مطالبة بكلمة مرور؟ سيوضح لك هذا الدليل كيفية استخدام ميزة حماية كلمة مرور AWS CloudFront لتأمين موقع الويب الخاص بك.

  • ما المقصود بحماية كلمة مرور CloudFront؟
  • كيفية تأمين موقع CloudFront بكلمة مرور
    • باستخدام [البريد الإلكتروني المحمي]
    • الاستفادة من AWS S3 و Lambda لإضافة المصادقة الأساسية

ما المقصود بحماية كلمة مرور CloudFront؟

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

طالما أنك تستخدم Amazon CloudFront لتوزيع المحتوى ، يمكنك استخدام ميزة حماية كلمة المرور الخاصة بالنظام. لا يزال النظام يعمل إذا كان موقع الويب الخاص بك مستضافًا داخل حاوية S3 أو مثيل EC2.

هذا هو المخطط التخطيطي لنظام CloudFront القياسي. يصف كيف يتدفق طلب من زوار الويب (إلى اليمين) عبر CloudFront والأنظمة الفرعية الأخرى للوصول إلى الأصل (حيث يتم تخزين المحتوى). في الأصل ، يتم استرداد البيانات وتدفق مرة أخرى إلى الزوار.

ppwp-cloudfront-password-protection-system

قد يبدو الأمر محيرًا ، خاصة بالنسبة للأشخاص الذين سمعوا للتو عن CloudFront لأول مرة. لكن فهم هذا المخطط ومكوناته أمر بالغ الأهمية للأقسام اللاحقة.

كيفية تأمين موقع CloudFront بكلمة مرور

يمكنك استخدام عدة طرق لدفع المطالبة بكلمة المرور إلى موقع الويب الخاص بك الذي تقدمه CloudFront. سنوضح لك طريقتين في هذا الدليل.

باستخدام [البريد الإلكتروني المحمي]

[email protected] هي إحدى ميزات CloudFront التي تتيح لك تشغيل رموز مخصصة بالقرب من العملاء. بهذه الطريقة ، يتم تحسين أداء التحميل. إذا اخترت نشر [email protected] ، فكلما طلب زائر استرداد محتوى لموقعك على الويب ، فسيتعين عليه المرور بهذه الوظيفة أولاً.

إذا كنت ستقوم بتعديل [email protected] للعمل فقط إذا قدم المستخدم كلمة مرور صحيحة ، فأنت تمتلك طبقة حماية بكلمة مرور لموقع الويب الخاص بك بشكل أو بآخر.

هذه هي الفكرة الأساسية وراء طريقة أمان CloudFront هذه.

ppwp- لامدا الحافة

الخطوة 1: نشر وظيفة [email protected]

[email protected] هي إحدى وظائف Lambda التي يتم نشرها فقط في منطقة us-east-1 (شمال فيرجينيا). لذلك ، لنشره ، سيتعين عليك تسجيل الدخول إلى المنطقة الصحيحة:

  1. قم بتسجيل الدخول إلى حساب AWS الخاص بك ، ثم انقر فوق إنشاء وظيفة .
  2. سيُطلب منك إدخال اسم الوظيفة. اختر شيئًا أساسيًا مثل BasicAuth . كوقت تشغيل ، اختر Node.js 12.x.
  3. قم بإنهاء عملية الإنشاء بالضغط على زر إنشاء وظيفة .
  4. سترى الآن ملفًا يسمى index.js في نافذة كود الوظيفة . انقر فوقه ، وسترى رمز Lambda الافتراضي. استبدلها بهذا الرمز المخصص:
 "استخدام صارم" ؛

export.handler = (event، Context، callback) => {

// بيانات اعتماد المصادقة
var i = 0، authStrings = [] ، authCredentials = [
"user1: userpassword"،
] ؛

// بناء سلاسل المصادقة الأساسية
authCredentials.forEach (element => {
authStrings [i] = "Basic" + مخزن مؤقت جديد (عنصر) .toString ('base64')؛
أنا ++ ؛
}
) ؛

// الحصول على طلب وطلب رؤوس
طلب const = event.Records [0] .cf.request ؛
رؤوس const = request.headers ؛

// تتطلب المصادقة الأساسية
if (typeof headers.authorization == 'undefined' ||
! authStrings.includes (headers.authorization [0] .value)) {

استجابة const = {
الحالة: "401" ،
الحالةالوصف: "غير مصرح به" ،
الجسم: "غير مصرح به" ،
الرؤوس: {
'www-Authenticate': [{مفتاح: 'WWW-Authenticate'،
القيمة: 'Basic realm = "Authentication"'}]
} ،
} ؛

رد الاتصال (فارغ ، استجابة) ؛
}

// متابعة معالجة الطلب إذا تم تمرير المصادقة
رد الاتصال (لاغية ، طلب) ؛
} ؛

يتم تخزين بيانات اعتماد تسجيل الدخول الافتراضية في هذه الوظيفة في السطر:

 "user1: userpassword"،

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

5. بمجرد استبدال الرمز المخصص ، انقر فوق " نشر " لدفع الكود.

6. انتقل إلى قائمة الإجراءات في الجزء العلوي ، وانقر على نشر إصدار جديد ، ثم حدد نشر . لا تغير أي إعدادات هناك.

7. حدد موقع سلسلة ARN في أعلى يمين الشاشة وانسخها. هذه الخطوة حاسمة. تبدو سلسلة ARN كما يلي:

 arn: aws: lambda: us-east-1: XXXXXXXXXXXX: الوظيفة: basicAuth: 1

الخطوة الثانية: قم بإعداد علاقة الثقة

  1. انتقل إلى وحدة تحكم IAM وقم بتسجيل الدخول.
  2. أدخل اسم وظيفة [البريد الإلكتروني المحمي] ( BasicAuth في الخطوة السابقة).
  3. ابحث عن علامة التبويب علاقات الثقة وانقر فوق تحرير . استبدل الكود الداخلي بهذا:
 {
"الإصدار": "2012-10-17"،
"بيان": [
{
"التأثير": "السماح" ،
"المالك": {
"خدمة": [
"lambda.amazonaws.com" ،
"edgelambda.amazonaws.com"
]
} ،
"الإجراء": "sts: AssumeRole"
}
]
}

4. قم بإنهاء العملية بالنقر فوق تحديث سياسة الثقة .

الخطوة 3: تكوين سلوك ذاكرة التخزين المؤقت

  1. انتقل إلى CloudFront وقم بتسجيل الدخول. انقر فوق موقع الويب الذي يقدمه CloudFront والذي ترغب في قفله بكلمة مرور.
  2. اختر السلوكيات ، وابحث عن مربع اختيار نمط مسار URL ، وحدده. استمر في النقر فوق تحرير .
  3. ابحث عن قسم يسمى روابط وظائف Lambda . ابحث عن قائمة التمرير لأسفل وابحث عن تحديد نوع الحدث ، ثم طلب العارض . الصق سلسلة ARN التي نسختها سابقًا في الخطوة 1.
  4. اضغط على نعم ، تحرير . بعد ذلك ، سيستغرق CloudFront حوالي 5 دقائق لإعادة التشغيل وإعادة تحميل الإعدادات الجديدة.

الخطوة 4: أعد فحص الموقع

قم بزيارة موقع الويب الخاص بك بعد إعادة تشغيل CloudFront. إذا تم الترحيب بك بمطالبة تسجيل الدخول ، فقد نجحت.

يجب أن يبدو مثل هذا:

حماية كلمة مرور ppwp-lambda-cloudfront

الاستفادة من AWS S3 و Lambda لإضافة المصادقة الأساسية

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

الخطوة 1: إنشاء حاوية S3

AWS S3 (خدمة التخزين البسيط) هي حل التخزين السحابي من AWS. يمنحك القدرة على تخزين أي نوع من البيانات على خوادم Amazon. في S3 ، تحتوي "الحاوية" على الكائنات وتتحكم في الوصول إليها (بيانات المحتوى الخاص بك).

  1. يمكنك إنشاء حاوية من خلال وحدة الإدارة في AWS. انقر فوق علامة التبويب S3 ثم قم بإنشاء دلو.
  2. أدخل الاسم ومنطقة الاستضافة (اختر الأقرب إليك لإجراء اختبار أسهل). انقر فوق إنشاء ، وهذا كل شيء!

الخطوة 2: قم بعمل ملف اختبار

  1. قم بإنشاء ملف اختبار مثل ملف index.html بسيط مع رمز البدء فيه.
 <h2> أهلاً بالعالم </ h2>

2. يمكنك تحميل هذا الملف إلى الحاوية المنشأة حديثًا عبر قائمة الكائنات .

الخطوة 3: إنشاء CloudFront Distro

  1. انتقل إلى لوحة معلومات CloudFront واضغط على إنشاء توزيع .
  2. اختر مجال Origin باعتباره حاوية S3 التي أنشأتها للتو. قم بتحديث سياسة الحاوية وإعداد OAI (هوية الوصول إلى الأصل) حسب رغبتك.
  3. أدخل اسم الملف الذي ترغب في حمايته ( index.html ) في مربع كائن الجذر الافتراضي الاختياري.
  4. قم بإنشاء توزيع CloudFront وفويلا! لديك الآن نقطة نهاية CloudFront.

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

  1. الآن ، من وحدة الإدارة في AWS ، انتقل إلى علامة التبويب Lambda واضغط على إنشاء وظيفة .
  2. حدد خيار استخدام مخطط وابحث عن CloudFront ، ثم اختر قالب إنشاء استجابة CloudFront . انقر فوق تكوين بمجرد تحديده.
  3. في الشاشة التالية ، أدخل اسم الوظيفة (AuthenticationTest) واسم الدور (S3-Auth). اختر دور التنفيذ مثل إنشاء الدور الجديد من قوالب سياسة AWS .
  4. بعد ذلك ، الصق تفاصيل نقطة نهاية CloudFront التي أنشأتها للتو في مربع التوزيع . في سلوك ذاكرة التخزين المؤقت ، اتركه كـ * . وأخيرًا ، في حدث CloudFront ، حدد طلب العارض .
  5. انقر فوق نشر لإنشاء الوظيفة الجديدة.

الخطوة 5: قم بتعديل وظيفة Lambda

  1. استبدل رمز Lambda الافتراضي بهذا الرمز المخصص.
 "استخدام صارم" ؛
export.handler = (event، Context، callback) => {

// احصل على طلب وطلب رؤوس
طلب const = event.Records [0] .cf.request ؛
رؤوس const = request.headers ؛

// تكوين المصادقة
const authUser = 'username' ؛
const authPass = 'password' ؛

// إنشاء سلسلة المصادقة الأساسية
const authString = 'Basic' + مخزن مؤقت جديد (authUser + ':' + authPass) .toString ('base64') ؛

// طلب المصادقة الأساسية
if (typeof headers.authorization == 'undefined' || headers.authorization [0] .value! = authString) {
هيئة const = "غير مصرح به" ؛
استجابة const = {
الحالة: "401" ،
الحالةالوصف: "غير مصرح به" ،
هيئة الجسم،
الرؤوس: {
'www-Authenticate': [{key: 'WWW-Authenticate'، value: 'Basic'}]
} ،
} ؛
رد الاتصال (فارغ ، استجابة) ؛
}

// متابعة معالجة الطلب إذا تم تمرير المصادقة
رد الاتصال (لاغية ، طلب) ؛
} ؛

يمكنك تغيير اسم المستخدم وكلمة المرور بما يناسب ذوقك.

2. انقر فوق " نشر " في الجزء العلوي لحفظ الرمز. بعد ذلك ، انتقل إلى الإجراءات والنشر إلى [email protected] لدفع الكود.

3. الصق عنوان نقطة نهاية CloudFront في مربع التوزيع ، واترك سلوك التخزين المؤقت كـ * ، وحدد حدث CloudFront كطلب عارض . بمجرد الانتهاء من ذلك ، سيتم إنشاء مشغل CloudFront جديد.

4. ثم انشره وانتظر لمدة 5 دقائق.

5. قم بزيارة موقع الويب الخاص بك مرة أخرى. يجب أن يقدم لك الآن مطالبة بتسجيل الدخول ، من باب المجاملة لنظام مصادقة CloudFront.

استفد بالكامل من ميزة حماية كلمة المرور CloudFront

هناك العديد من الأسباب التي تجعل مسؤول الويب يريد إغلاق موقعه على الويب. قد يكون ذلك بسبب أن موقع الويب الخاص بهم يحتاج إلى صيانة أو أمان محسّن أو حماية ضد الوصول غير المصرح به.

مهما كانت الحالة ، آمل أن يساعدك هذا الدليل في نشر نظام كلمة المرور بنجاح باستخدام حماية كلمة مرور CloudFront.

هناك طريقة أخرى لحماية موقع الويب بكلمة مرور: استخدام PPWP Pro. تحقق من ذلك!