Cum să construiți un site web securizat cu CloudFront Password Protect
Publicat: 2023-01-15Deț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.
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.
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ă:
- Conectați-vă la contul dvs. AWS, apoi faceți clic pe Creare funcție .
- 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 .
- Finalizați crearea apăsând butonul Creare funcție .
- 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
- Accesați Consola IAM și conectați-vă.
- Introduceți numele funcției dvs. [protejat prin e-mail] ( BasicAuth în pasul anterior).
- 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
- 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ă.
- 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 .
- 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.
- 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:
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).
- Puteți crea o găleată prin AWS Management Console. Faceți clic pe fila S3 și apoi pe Creare găleată.
- 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
- 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
- Navigați la tabloul de bord CloudFront și apăsați pe Creare distribuție .
- 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.
- 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ă .
- Creați distribuția CloudFront și voila! Acum aveți un punct final CloudFront.
Pasul 4: Creați o funcție Lambda personalizată
- Acum, din AWS Management Console, navigați la fila Lambda și apăsați pe Creare funcție .
- 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.
- Î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 .
- 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 .
- Faceți clic pe Deploy pentru a crea noua funcție.
Pasul 5: Modificați funcția Lambda
- Î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ă!