Cum să construiți un site web securizat cu CloudFront Password Protect

Publicat: 2023-01-15

Deținând cota leului din piața de cloud computing la 41,5%, Amazon Web Service (AWS) este cel mai popular serviciu de cloud computing în zilele noastre. Permite companiilor și persoanelor fizice să își găzduiască aplicațiile și site-urile web pe serverele Amazon la preț redus.

Una dintre componentele critice ale AWS este Amazon CloudFront. Este o rețea de livrare a conținutului (CDN) construită pentru a maximiza viteza de încărcare a oricărui vizitator al site-ului dvs. găzduit de AWS.

Dar știți că puteți utiliza CloudFront pentru a vă bloca site-ul în spatele unei solicitări de parolă? Acest ghid vă va arăta cum să utilizați caracteristica de protecție cu parolă AWS CloudFront pentru a vă securiza site-ul.

  • Ce este CloudFront Password Protect?
  • Cum să securizați un site web CloudFront cu o parolă
    • Folosind [email protected]
    • Utilizarea AWS S3 și Lambda pentru a adăuga autentificare de bază

Ce este CloudFront Password Protect?

Amazon CloudFront accelerează accesul utilizatorilor la aplicația și site-ul dvs. web prin furnizarea de conținut prin diferite centre de date din întreaga lume. Când un utilizator accesează site-ul dvs. web, conținutul este livrat din centrul cel mai apropiat de poziția sa geografică. Acest lucru, ca urmare, accelerează viteza de încărcare.

Atâta timp cât utilizați Amazon CloudFront pentru a distribui conținut, puteți utiliza funcția de protecție prin parolă a sistemului. Sistemul încă funcționează dacă site-ul dvs. este găzduit într-un compartiment S3 sau într-o instanță EC2.

Iată schema unui sistem standard CloudFront. Descrie modul în care o solicitare din partea vizitatorilor web (în dreapta) trece prin CloudFront și alte subsisteme pentru a ajunge la origine (unde este stocat conținutul). La origine, datele sunt preluate și revin către vizitatori.

ppwp-cloudfront-password-protect-system

Poate părea confuz, mai ales pentru persoanele care tocmai au auzit de CloudFront pentru prima dată. Dar înțelegerea acestei diagrame și a componentelor sale este crucială pentru secțiunile ulterioare.

Cum să securizați un site web CloudFront cu o parolă

Puteți folosi mai multe metode pentru a trimite o solicitare de parolă pe site-ul dvs. web deservit de CloudFront. Vă vom arăta 2 moduri în acest ghid.

Folosind [email protected]

[email protected] este o caracteristică a CloudFront care vă permite să rulați coduri personalizate mai aproape de clienți. În acest fel, performanța de încărcare este îmbunătățită. Dacă alegeți să implementați [email protected], ori de câte ori un vizitator solicită să preia conținut pentru site-ul dvs. web, va trebui mai întâi să treacă prin această funcție.

Dacă ar fi să modificați [email protected] pentru a funcționa numai dacă utilizatorul furnizează o parolă corectă, aveți mai mult sau mai puțin un strat de protecție prin parolă pentru site-ul dvs.

Aceasta este ideea de bază din spatele acestei metode de securitate CloudFront.

ppwp-lambda-edge

Pasul 1: implementați funcția [email protected].

[email protected] este o funcție Lambda care este implementată numai în regiunea us-east-1 (Virginia de Nord). Deci, pentru a-l implementa, va trebui să vă conectați în regiunea potrivită:

  1. Conectați-vă la contul dvs. AWS, apoi faceți clic pe Creare funcție .
  2. Vi se va solicita să introduceți numele funcției. Alegeți ceva de bază, cum ar fi BasicAuth . Ca timp de execuție, alegeți Node.js 12.x .
  3. Finalizați crearea apăsând butonul Creare funcție .
  4. Veți vedea acum un fișier numit index.js în fereastra Cod funcție . Faceți clic pe el și veți vedea un cod Lambda implicit. Înlocuiți-l cu acest cod personalizat:
 „utilizați strict”;

exports.handler = (eveniment, context, apel invers) => {

// acreditări de autentificare
var i = 0, authStrings = [], authCredentials = [
„utilizator1:parolă utilizator”,
];

// construiește șiruri de aut de bază
authCredentials.forEach(element => {
authStrings[i] = "De bază" + Buffer nou(element).toString('base64');
i++;
}
);

// obține antete de solicitare și cerere
const request = event.Records[0].cf.request;
const headers = request.headers;

// necesită autentificare de bază
if (tip de anteturi.autorizare == 'nedefinit' ||
!authStrings.includes(headers.authorization[0].value)) {

răspuns constant = {
stare: „401”,
statusDescription: „Neautorizat”,
body: „Neautorizat”,
antete: {
„www-authenticate”: [ {key: „WWW-Authenticate”,
valoare: 'Regiunea de bază="Autentificare"'} ]
},
};

apel invers (null, răspuns);
}

// continuă procesarea cererii dacă autentificarea a trecut
apel invers (null, cerere);
};

Acreditările implicite de conectare sunt stocate în această funcție în linia:

 „utilizator1:parolă utilizator”,

Formatul este „cont:parolă” . Îl poți schimba în orice vrei. În plus, puteți adăuga și mai multe acreditări de conectare duplicând această linie.

5. Odată ce codul personalizat a fost înlocuit, faceți clic pe Deploy pentru a împinge codul.

6. Navigați la meniul Acțiuni din partea de sus, faceți clic pe Publicare versiune nouă , apoi selectați Publicare . Nu modificați nicio setare acolo.

7. Localizați șirul ARN în colțul din dreapta sus al ecranului și copiați-l. Acest pas este crucial. Șirul ARN arată astfel:

 arn:aws:lambda:us-east-1:XXXXXXXXXXXX:function:basicAuth:1

Pasul 2: Configurați relația de încredere

  1. Accesați Consola IAM și conectați-vă.
  2. Introduceți numele funcției dvs. [protejat prin e-mail] ( BasicAuth în pasul anterior).
  3. Găsiți fila Relații de încredere și faceți clic pe Editare . Înlocuiește codul din interior cu acesta:
 {
„Versiune”: „2012-10-17”,
"Afirmație": [
{
„Efect”: „Permite”,
„Principal”: {
„Serviciul”: [
„lambda.amazonaws.com”,
„edgelambda.amazonaws.com”
]
},
„Acțiune”: „sts:AssumeRole”
}
]
}

4. Finalizați procesul făcând clic pe Actualizare politică de încredere .

Pasul 3: Configurați comportamentul în cache

  1. Accesați CloudFront și conectați-vă. Faceți clic pe site-ul web oferit de CloudFront pe care doriți să îl blocați cu o parolă.
  2. Alegeți Comportamente , găsiți caseta de selectare Model Path URL și bifați-o. Continuați să faceți clic pe Editați .
  3. Găsiți o secțiune numită Asociații de funcție Lambda . Găsiți un meniu derulant și căutați Selectați tipul evenimentului , apoi Solicitarea vizualizatorului . Lipiți șirul ARN pe care l-ați copiat mai devreme la pasul 1.
  4. Apăsați pe Da, Editați . După aceasta, CloudFront va dura aproximativ 5 minute pentru a reporni și a reîncărca noile setări.

Pasul 4: Verificați din nou site-ul web

Vizitați site-ul dvs. după ce CloudFront a repornit. Dacă ești întâmpinat cu o solicitare de conectare, ai reușit.

Ar trebui să arate cam așa:

ppwp-lambda-cloudfront-parola-protect

Utilizarea AWS S3 și Lambda pentru a adăuga autentificare de bază

În această metodă, vom folosi o abordare combinată a AWS S3 și Lambda pentru a realiza același lucru ca și mai sus: creați un formular de autentificare de bază pentru site-ul web.

Pasul 1: Creați o găleată S3

AWS S3 (Simple Storage Service) este soluția de stocare în cloud a AWS. Vă oferă posibilitatea de a stoca orice fel de date pe serverele Amazon. În S3, o „găleată” conține și controlează accesul la obiecte (datele conținutului tău).

  1. Puteți crea o găleată prin AWS Management Console. Faceți clic pe fila S3 și apoi pe Creare găleată.
  2. Introduceți numele și regiunea de găzduire (alegeți-o pe cea mai apropiată de dvs. pentru o testare mai ușoară). Faceți clic pe Creare și gata!

Pasul 2: Creați un fișier de testare

  1. Creați un fișier de test ca un simplu fișier index.html cu codul de pornire în el.
 <h2>Bună lume</h2>

2. Puteți încărca acest fișier în compartimentul nou creat prin meniul Obiecte .

Pasul 3: Generați o distribuție CloudFront

  1. Navigați la tabloul de bord CloudFront și apăsați pe Creare distribuție .
  2. Alegeți domeniul Origin ca bucket S3 pe care tocmai l-ați creat. Actualizați politica compartimentului și setarea OAI (Origin Access Identity) după bunul plac.
  3. Introduceți numele fișierului pe care doriți să-l protejați ( index.html ) în caseta opțională a obiectului rădăcină implicită .
  4. Creați distribuția CloudFront și voila! Acum aveți un punct final CloudFront.

Pasul 4: Creați o funcție Lambda personalizată

  1. Acum, din AWS Management Console, navigați la fila Lambda și apăsați pe Creare funcție .
  2. Selectați opțiunea Utilizați un plan și căutați CloudFront , apoi alegeți șablonul CloudFront-response-generation . Faceți clic pe Configurare după ce l-ați selectat.
  3. În ecranul următor, introduceți numele funcției (AuthenticationTest) și numele rolului (S3-Auth). Alegeți Execution Role ca Creați noul rol din șabloanele de politică AWS .
  4. Apoi, inserați detaliile punctului final CloudFront pe care tocmai l-ați creat în caseta Distribuție . În comportamentul cache , lăsați-l ca * . Și, în sfârșit, în evenimentul CloudFront , selectați Solicitare vizualizator .
  5. Faceți clic pe Deploy pentru a crea noua funcție.

Pasul 5: Modificați funcția Lambda

  1. Înlocuiți codul Lambda implicit cu acest cod personalizat.
 „utilizați strict”;
exports.handler = (eveniment, context, apel invers) => {

// Obține antetele solicitărilor și solicitărilor
const request = event.Records[0].cf.request;
const headers = request.headers;

// Configurați autentificarea
const authUser = 'nume utilizator';
const authPass = 'parolă';

// Construiți șirul de autentificare de bază
const authString = 'De bază ' + Buffer nou (authUser + ':' + authPass).toString('base64');

// Necesită autentificare de bază
if (typeof headers.authorization == 'nedefinit' || headers.authorization[0].value != authString) {
const body = 'Neautorizat';
răspuns constant = {
stare: „401”,
statusDescription: „Neautorizat”,
corp: corp,
anteturi: {
'www-authenticate': [{key: 'WWW-Authenticate', value:'Basic'}]
},
};
apel invers (null, răspuns);
}

// Continuați procesarea cererii dacă autentificarea a trecut
apel invers (null, cerere);
};

Puteți schimba numele de utilizator și parola după cum doriți.

2. Faceți clic pe Deploy în partea de sus pentru a salva codul. Apoi, accesați Acțiuni și implementați la [email protected] pentru a introduce codul.

3. Lipiți adresa punctului final CloudFront în caseta Distribuție , lăsați Comportamentul cache ca * și selectați evenimentul CloudFront ca cerere de vizualizare. Odată terminat, va fi creat un nou declanșator CloudFront.

4. Apoi, implementați-l și așteptați 5 minute.

5. Vizitați site-ul dvs. din nou. Acum ar trebui să vă prezinte o solicitare de conectare, prin amabilitatea sistemului de autentificare CloudFront.

Utilizați pe deplin funcția CloudFront Password Protect

Există multe motive pentru care un administrator web ar dori să-și blocheze site-ul. Ar putea fi pentru că site-ul lor are nevoie de întreținere, securitate sporită sau protecție împotriva accesului neautorizat.

Oricare ar fi cazul, sperăm că acest ghid vă poate ajuta să implementați cu succes o schemă de parole folosind protecția cu parolă CloudFront.

Există o altă modalitate de a proteja cu parolă un site web: folosind PPWP Pro. Verifică!