CloudFront Password Protect ile Güvenli Bir Web Sitesi Nasıl Oluşturulur

Yayınlanan: 2023-01-15

Bulut bilişim pazarında %41,5 ile aslan payına sahip olan Amazon Web Service (AWS), günümüzün en popüler bulut bilişim hizmetidir. İşletmelerin ve bireylerin uygulamalarını ve web sitelerini Amazon'un sunucularında ucuza barındırmasına olanak tanır.

AWS'nin kritik bileşenlerinden biri Amazon CloudFront'tur. AWS tarafından barındırılan web sitenize herhangi bir ziyaretçinin yükleme hızını en üst düzeye çıkarmak için oluşturulmuş bir içerik dağıtım ağıdır (CDN).

Ancak, web sitenizi bir şifre isteminin ardından kilitlemek için CloudFront'u kullanabileceğinizi biliyor musunuz? Bu kılavuz, web sitenizin güvenliğini sağlamak için AWS CloudFront parola koruma özelliğini nasıl kullanacağınızı gösterecektir.

  • CloudFront Parola Koruması Nedir?
  • Bir CloudFront Web Sitesini Parolayla Nasıl Güvenli Hale Getirirsiniz?
    • [e-posta korumalı] kullanımı
    • Temel Kimlik Doğrulaması Eklemek için AWS S3 ve Lambda'dan Yararlanma

CloudFront Parola Koruması Nedir?

Amazon CloudFront, içeriği dünya çapındaki çeşitli veri merkezleri aracılığıyla sunarak kullanıcıların uygulamanıza ve web sitenize erişimini hızlandırır. Bir kullanıcı web sitenize eriştiğinde, içerik onun coğrafi konumuna en yakın merkezden iletilir. Bu, sonuç olarak, yükleme hızını hızlandırır.

İçeriği dağıtmak için Amazon CloudFront'u kullandığınız sürece, sistemin parola koruma özelliğini kullanabilirsiniz. Web siteniz bir S3 klasöründe veya EC2 bulut sunucusunda barındırılıyorsa sistem çalışmaya devam eder.

İşte standart bir CloudFront sisteminin şeması. Web ziyaretçilerinden (sağda) gelen bir talebin, kaynağa (içeriğin depolandığı yere) ulaşmak için CloudFront ve diğer alt sistemler aracılığıyla nasıl aktığını açıklar. Kaynakta, veriler alınır ve ziyaretçilere geri akar.

ppwp-cloudfront-şifre koruma sistemi

Özellikle CloudFront'u ilk kez duyan kişiler için kafa karıştırıcı görünebilir. Ancak bu tabloyu ve bileşenlerini anlamak sonraki bölümler için çok önemlidir.

Bir CloudFront Web Sitesini Parolayla Nasıl Güvenli Hale Getirirsiniz?

CloudFront tarafından sunulan web sitenize bir parola istemi göndermek için çeşitli yöntemler kullanabilirsiniz. Bu kılavuzda size 2 yol göstereceğiz.

[e-posta korumalı] kullanımı

[email protected] , müşterilere daha yakın özel kodlar çalıştırmanıza izin veren bir CloudFront özelliğidir. Bu şekilde, yükleme performansı iyileştirilir. [E-posta korumalı] kullanmayı seçerseniz, bir ziyaretçi web siteniz için içerik almak istediğinde, önce bu işlevden geçmesi gerekir.

[E-posta korumalı] öğesini yalnızca kullanıcı doğru bir parola sağladığında çalışacak şekilde değiştirirseniz, web siteniz için aşağı yukarı bir parola koruma katmanına sahip olursunuz.

Bu CloudFront güvenlik yönteminin arkasındaki temel fikir budur.

ppwp-lambda-kenar

1. Adım: [e-posta korumalı] İşlevini dağıtın

[email protected], yalnızca us-east-1 bölgesinde (Kuzey Virginia) dağıtılan bir Lambda işlevidir. Bu nedenle, dağıtmak için doğru bölgeye giriş yapmanız gerekecek:

  1. AWS hesabınızda oturum açın, ardından İşlev Oluştur'a tıklayın.
  2. İşlevin adını girmeniz istenecektir. BasicAuth gibi temel bir şey seçin. Çalışma zamanı olarak Node.js 12.x'i seçin.
  3. Create Function butonuna basarak oluşturmayı sonlandırın.
  4. Şimdi İşlev Kodu penceresinde index.js adlı bir dosya göreceksiniz. Üzerine tıklayın ve varsayılan bir Lambda Kodu göreceksiniz. Bu özel kodla değiştirin:
 'katı kullanın';

export.handler = (olay, içerik, geri arama) => {

// kimlik doğrulama bilgileri
var i = 0, authStrings = [], authCredentials = [
'kullanıcı1:kullanıcışifresi',
];

// Temel Kimlik Doğrulama dizeleri oluşturun
authCredentials.forEach(öğe => {
authStrings[i] = "Temel" + yeni Tampon(öğe).toString('base64');
ben++;
}
);

// istek ve istek başlıklarını al
const istek = event.Records[0].cf.request;
const başlıkları = request.headers;

// Temel kimlik doğrulaması gerektir
if (typeof headers.yetkilendirme == 'tanımsız' ||
!authStrings.includes(headers.yetkilendirme[0].değer)) {

sabit yanıt = {
durum: '401',
statusDescription: 'Yetkisiz',
gövde: 'Yetkisiz',
başlıklar: {
'www-authenticate': [ {key: 'WWW-Authenticate',
value: 'Basic realm="Authentication"'} ]
},
};

geri arama(boş, yanıt);
}

// kimlik doğrulaması başarılı olursa istek işlemeye devam et
geri arama(boş, istek);
};

Varsayılan oturum açma kimlik bilgisi bu işlevde şu satırda saklanır:

 'kullanıcı1:kullanıcışifresi',

Biçim "hesap:şifre" şeklindedir. Onu istediğiniz gibi değiştirebilirsiniz. Ayrıca, bu satırı çoğaltarak daha fazla oturum açma kimlik bilgisi de ekleyebilirsiniz.

5. Özel kod değiştirildikten sonra, kodu göndermek için Dağıt'a tıklayın.

6. En üstteki Eylemler menüsüne gidin, Yeni Sürümü Yayınla'yı tıklayın ve ardından Yayınla'yı seçin. Orada herhangi bir ayarı değiştirmeyin.

7. Ekranın sağ üst köşesindeki ARN dizisini bulun ve kopyalayın. Bu adım çok önemlidir. ARN dizisi şöyle görünür:

 saat:aws:lambda:us-east-1:XXXXXXXXXXXX:işlev:basicAuth:1

2. Adım: Güven İlişkisini Kurun

  1. IAM Konsoluna gidin ve oturum açın.
  2. [email protected] işlevinizin adını girin (önceki adımda BasicAuth ).
  3. Güven ilişkileri sekmesini bulun ve Düzenle'ye tıklayın. İçindeki kodu bununla değiştirin:
 {
"Sürüm": "2012-10-17",
"Beyan": [
{
"Efekt": "İzin Ver",
"Müdür": {
"Hizmet": [
"lambda.amazonaws.com",
"edgelambda.amazonaws.com"
]
},
"Eylem": "sts:AssumeRole"
}
]
}

4. Güven Politikasını Güncelle seçeneğine tıklayarak işlemi sonlandırın.

3. Adım: Önbellek Davranışını Yapılandırın

  1. CloudFront'a gidin ve oturum açın. Bir parola ile kilitlemek istediğiniz CloudFront tarafından sunulan web sitesine tıklayın.
  2. Davranışlar'ı seçin, URL Yolu Kalıbı onay kutusunu bulun ve işaretleyin. Düzenle'ye tıklayarak devam edin.
  3. Lambda İşlev İlişkilendirmeleri adlı bir bölüm bulun. Aşağıya doğru açılan bir menü bulun ve Select Event Type , ardından Viewer Request öğesini arayın. Daha önce 1. adımda kopyaladığınız ARN dizesini yapıştırın.
  4. Evet, Düzenle'ye basın. Bundan sonra, CloudFront'un yeniden başlatılması ve yeni ayarların yeniden yüklenmesi yaklaşık 5 dakika sürecektir.

4. Adım: Web Sitesini Yeniden Kontrol Edin

CloudFront yeniden başlatıldıktan sonra web sitenizi ziyaret edin. Bir oturum açma istemi ile karşılanırsanız, başardınız demektir.

Bunun gibi bir şeye benzemeli:

ppwp-lambda-cloudfront-password-protect

Temel Kimlik Doğrulaması Eklemek için AWS S3 ve Lambda'dan Yararlanma

Bu yöntemde, yukarıda yaptığımızla aynı şeyi gerçekleştirmek için AWS S3 ve Lambda'nın birleşik bir yaklaşımını kullanacağız: web sitesi için temel bir kimlik doğrulama formu oluşturun.

1. Adım: Bir S3 Kovası Oluşturun

AWS S3 (Basit Depolama Hizmeti), AWS'nin bulut depolama çözümüdür. Size her türlü veriyi Amazon sunucularında depolama olanağı sağlar. S3'te bir "paket", nesneleri (içeriğinizin verileri) içerir ve bunlara erişimi kontrol eder.

  1. AWS Management Console aracılığıyla bir klasör oluşturabilirsiniz. S3 sekmesine ve ardından Grup oluştur'a tıklayın.
  2. Adı ve barındırma bölgesini girin (daha kolay test için size en yakın olanı seçin). Oluştur'a tıklayın, hepsi bu!

2. Adım: Bir Test Dosyası Oluşturun

  1. İçinde başlangıç ​​kodu bulunan basit bir index.html dosyası gibi bir test dosyası oluşturun.
 <h2>Merhaba Dünya</h2>

2. Bu dosyayı, Nesneler menüsü aracılığıyla yeni oluşturulan klasöre yükleyebilirsiniz.

3. Adım: Bir CloudFront Dağıtımı Oluşturun

  1. CloudFront'un panosuna gidin ve Dağıtım oluştur'a basın.
  2. Az önce oluşturduğunuz S3 klasörü olarak Origin alanını seçin. Kovanın politikasını ve OAI (Origin Access Identity) ayarını beğeninize göre güncelleyin.
  3. Korumak istediğiniz dosyanın adını ( index.html ) isteğe bağlı Varsayılan kök nesne kutusuna girin.
  4. CloudFront dağıtımını oluşturun ve işte! Artık bir CloudFront uç noktanız var.

4. Adım: Özel Bir Lambda İşlevi Oluşturun

  1. Şimdi, AWS Yönetim Konsolunuzdan Lambda sekmesine gidin ve İşlev oluştur seçeneğine basın.
  2. Bir plan kullan seçeneğini belirleyin ve CloudFront'u arayın, ardından CloudFront-response-jenerasyon şablonunu seçin. Seçtikten sonra Yapılandır'a tıklayın.
  3. Bir sonraki ekranda, işlevin adını (AuthenticationTest) ve rol adını (S3-Auth) girin. AWS İlkesi şablonlarından yeni rolü oluştur olarak Yürütme Rolü'nü seçin.
  4. Ardından, az önce oluşturduğunuz CloudFront uç noktasının ayrıntılarını Dağıtım kutusuna yapıştırın. Önbellek davranışında * olarak bırakın. Ve son olarak, CloudFront olayında Viewer request öğesini seçin.
  5. Yeni işlevi oluşturmak için Dağıt'a tıklayın.

Adım 5: Lambda İşlevini Değiştirin

  1. Varsayılan Lambda kodunu bu özel kodla değiştirin.
 'katı kullanın';
export.handler = (olay, içerik, geri arama) => {

// İstek ve istek başlıklarını al
const istek = event.Records[0].cf.request;
const başlıkları = request.headers;

// Kimlik doğrulamayı yapılandır
const authUser = 'kullanıcı adı';
const authPass = 'şifre';

// Temel Kimlik Doğrulama dizesini oluştur
const authString = 'Temel ' + yeni Tampon(authUser + ':' + authPass).toString('base64');

// Temel kimlik doğrulaması iste
if (typeof headers.authorization == 'tanımsız' || headers.authorization[0].value != authString) {
const gövdesi = 'Yetkisiz';
sabit yanıt = {
durum: '401',
statusDescription: 'Yetkisiz',
vücut vücut,
başlıklar: {
'www-authenticate': [{key: 'WWW-Authenticate', value:'Temel'}]
},
};
geri arama(boş, yanıt);
}

// Kimlik doğrulaması başarılı olursa istek işlemeye devam et
geri arama(boş, istek);
};

Kullanıcı adı ve şifreyi beğeninize göre değiştirebilirsiniz.

2. Kodu kaydetmek için üst kısımdaki Dağıt'a tıklayın. Ardından, kodu göndermek için Eylemler'e gidin ve [email protected] 'a dağıtın.

3. CloudFront uç nokta adresini Dağıtım kutusuna yapıştırın, Önbellek davranışını * olarak bırakın ve Görüntüleyici isteği olarak CloudFront olayını seçin. Bittiğinde, yeni bir CloudFront tetikleyicisi oluşturulacak.

4. Ardından, konuşlandırın ve 5 dakika bekleyin.

5. Web sitenizi tekrar ziyaret edin. Şimdi size CloudFront kimlik doğrulama sisteminin izniyle bir oturum açma istemi sunmalıdır.

CloudFront Parola Koruma Özelliğinden Tam Olarak Yararlanın

Bir web yöneticisinin web sitesini kilitlemek istemesinin birçok nedeni vardır. Bunun nedeni, web sitelerinin bakıma, gelişmiş güvenliğe veya yetkisiz erişime karşı korumaya ihtiyaç duyması olabilir.

Durum ne olursa olsun, bu kılavuzun CloudFront parola korumasını kullanarak bir parola şemasını başarıyla dağıtmanıza yardımcı olacağını umuyoruz.

Bir web sitesini parolayla korumanın başka bir yolu daha vardır: PPWP Pro kullanmak. Bunu kontrol et!