Mehmet

WFN Üye
Konular
1,851
Mesajlar
1,852
Çözüm
0
Ticaret Puanı
0
Üyelik
1 Ay 6 Gün
Konum
YurtDışı
Web Sitesi
Var
Alanı
Google Adsense
1/1
Konu sahibi
Harici depolamadaki özel dosyaları sunmanın güvenli yolu, depolama alanını özel tutup erişimi kendi uygulamanız üzerinden denetlemektir. Kullanıcı dosya istediğinde uygulama oturumunu ve yetkisini kontrol eder; yetki varsa dosya için kısa süre geçerli, imzalı bir indirme adresi üretir. Kullanıcı bu adresle dosyayı doğrudan depolamadan alır. S3 gibi sistemlerde imzalı URL bearer erişimi sağlar: URL’yi kopyalayan kişi de geçerliyken kullanabilir; indirme anında uygulama oturumu tekrar doğrulanmaz. Kalıcı, tahmin edilebilir veya herkese açık dosya bağlantıları kullanılmamalıdır.

Bu modelde üç ayrı parça vardır: kullanıcıyı tanıyan uygulama, özel nesneleri barındıran harici depolama ve süreli erişim adresi üreten depolama istemcisi. Dosyanın kendisi uygulama sunucusundan geçirilmeyebilir; uygulama yalnızca yetkilendirme kararını verir.

Nasıl çalışır?​


Örneğin kullanıcı 42, rapor.pdf dosyasını indirmek istesin. Uygulama, tarayıcıdan gelen dosya adını doğrudan depolama yoluna eklemek yerine veritabanındaki kaydı bulur. Kayıtta dosyanın sahibi, depolamadaki gerçek nesne anahtarı ve erişim kuralları tutulur.

İstek akışı şu şekilde olmalıdır:

  1. Kullanıcı uygulamada oturum açar ve indirme isteğini uygulamanın bir uç noktasına gönderir.
  2. Uygulama oturumu doğrular, dosyanın gerçekten var olup olmadığını ve bu kullanıcının dosyaya erişme yetkisini kontrol eder.
  3. Yetki varsa uygulama, depolama sağlayıcısının imzalı ve süreli indirme adresini üretir.
  4. Uygulama bu adresi doğrudan döndürür veya tarayıcıyı bu adrese yönlendirir.
  5. Süre dolduğunda yeni indirme isteği reddedilir. S3’te süre dolmadan başlamış aktarım devam edebilir; bağlantı kesilirse süresi dolan URL ile yeniden başlatılamaz.

Başarılı sonuç, yetkili kullanıcının dosyayı indirebilmesi; dosya adını tek başına bilen kişinin içeriğe ulaşamamasıdır. Geçerli imzalı URL’yi bilen kişi ayrı bir durumdur; bu URL gizli erişim bilgisi gibi korunmalıdır. İndirme bağlantısının tarayıcıya görünmesi tek başına sorun değildir; önemli olan bağlantının kısa ömürlü, imzalı ve yalnızca gerekli nesne için üretilmesidir.

Uygulanabilir kurulum planı​


  1. Harici depolama alanında özel erişimi etkinleştirin. Genel okuma iznini, herkese açık klasör veya nesne ayarlarını ve kalıcı anonim bağlantıları kapatın.
  2. Uygulamanın depolamaya erişmesi için yalnızca gerekli işlemleri yapabilen ayrı bir servis kimliği kullanın. Uygulamanın istemci tarafına bu kimliğin gizli anahtarlarını koymayın.
  3. Veritabanında en az şu bilgileri tutun: uygulamadaki dosya sahibi, gerçek nesne anahtarı, görünen dosya adı ve erişim kuralı. Gerçek nesne anahtarını kullanıcıdan gelen dosya adıyla üretmeyin.
  4. İndirme uç noktasında önce oturumu, sonra dosya kaydını, son olarak sahiplik veya paylaşım kuralını kontrol edin. Kontrol başarısızsa dosyanın varlığını açığa çıkarmayan uygun bir hata yanıtı verin.
  5. Yetkili istek için yalnızca indirme izni olan, kısa süreli imzalı bir adres üretin. Yükleme, silme veya listeleme yetkilerini indirme bağlantısına eklemeyin.
  6. Üretilen adresi kullanıcıya döndürün ve dosya türü ile indirme adını depolama isteğinde açıkça belirleyin. Hassas dosyalarda tarayıcıda görüntüleme yerine indirmeyi tercih edin.
  7. Yetkisiz kullanıcı, süresi dolmuş bağlantı ve silinmiş nesne durumlarını ayrı ayrı test edin. Her durumda depolama hata ayrıntılarını doğrudan kullanıcıya göstermeyin.

Dosyayı uygulama sunucusu üzerinden aktarmak da mümkündür. Bu yöntemde erişim denetimi daha merkezi olur; ancak sunucunun bant genişliği ve işlem yükü artar. Büyük dosyalarda, uygulamanın yalnızca süreli adres üretmesi genellikle daha uygun bir mimaridir.

Karar verirken temel farklar​


Aşağıdaki ayrım, hangi sunum modelinin uygun olduğunu belirlemeye yardımcı olur.

ModelErişim kontrolüUygun kullanım
Herkese açık dosyaYok veya çok sınırlıGerçekten herkese açık içerik
Süreli imzalı adresUygulama yetkisi ve süreBüyük özel dosyalar
Uygulama üzerinden aktarımHer istekte uygulama kontrolüKüçük veya çok hassas dosyalar

Harici depolamanın özel olması, uygulamanın otomatik olarak güvenli olduğu anlamına gelmez. İmzalı adres yalnızca üretildiği nesne ve izinlerle sınırlı olmalı; mümkünse indirme amacına uygun yanıt başlıkları da imzalanmalıdır.

Sık yapılan hatalar​


Dosyayı genel erişime açmak: Uygulama giriş kontrolü yapsa bile dosya adresi doğrudan biliniyorsa kontrol aşılabilir. Özel dosyalar için genel okuma izni bırakmayın.

Sadece dosya adını kontrol etmek: Kullanıcının gönderdiği rapor.pdf değerine güvenmeyin. Yetkiyi veritabanındaki dosya kaydı ve kullanıcı ilişkisi üzerinden değerlendirin.

Uzun süre geçerli bağlantı üretmek: Bağlantı kopyalanırsa süre bitene kadar kullanılabilir. İşletim ihtiyacını karşılayan en kısa süreyi seçin ve kritik durumlarda sağlayıcının erişim politikası/kimlik iptalinin gerçek etkisini planlayın. Uygulamada kullanıcıyı çıkarmak önceden verilmiş S3 URL’sini tek başına iptal etmez.

Depolama anahtarını tarayıcıya göndermek: Gizli erişim bilgileri istemci koduna, HTML içine veya herkese açık yapılandırma dosyasına konulmamalıdır.

Sık sorulan sorular​

İmzalı URL tek kullanımlık mıdır?​

S3 presigned URL varsayılan olarak süresi dolana kadar birden fazla kez kullanılabilir. Tek kullanım veya her indirmede güncel kullanıcı yetkisi gerekiyorsa bunu uygulama aracısı ya da sağlayıcının uygun ayrı mekanizmasıyla tasarlayın; yalnız kısa süre vermek tek kullanımlılık değildir.

URL için verdiğim süre neden erken bitmiş görünüyor?​

İmzayı üreten geçici kimlik bilgisinin süresi, verilen URL süresinden önce bitebilir; izin değişikliği de erişimi etkileyebilir. S3’te imzayı atan hesabın gerçek yetkisi ve kimlik yaşam süresi URL’ye sınır koyar. Hata metnini paylaşırken URL’nin imza/sorgu sırlarını maskeleyin.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Robotlar:
  • Anthropic