Makale

S3 dosyalarını bucket'ı herkese açık yapmadan paylaşma

Özel bir bucket ile güvenli S3 dosya paylaşımı: presigned URL'ler, CloudFront imzalı URL'leri veya parola, süre ve indirme sınırlı paylaşım bağlantıları.

Amazon S3’teki dosyaları bucket’ı hiçbir zaman herkese açık yapmadan paylaşabilirsiniz. Bucket’ı gizli tutun, Block Public Access’i açık bırakın ve bunun yerine insanlara belirli nesnelere imzalı erişim verin: tek seferlik bir dosya için bir presigned URL, bucket’ın önünde zaten bir CDN çalıştırıyorsanız CloudFront imzalı URL’leri veya parola, son kullanma tarihi ve indirme sınırı ekleyen bir paylaşım bağlantısı. Üçü de Cloudflare R2, DigitalOcean Spaces, Wasabi ve Backblaze B2 gibi S3 uyumlu sağlayıcılarda aynı şekilde çalışır (CloudFront yalnızca AWS içindir).

Bir bakışta güvenli S3 dosya paylaşımı seçenekleri

YöntemEn uygun olduğu kullanımParolaİndirme sınırıTek bağlantıyı iptalKlasörlerin tamamıGereken kod
Herkese açık nesne veya bucketGerçekten herkese açık varlıklar (bir web sitesi)HayırHayırHayırEvetHayır
Presigned URLCLI’dan veya uygulamanızdan tek dosya, bir kezHayırHayırHayırHayırCLI veya SDK
CloudFront imzalı URL’siKullanıcıları zaten doğrulayan uygulamalarHayırHayırHayırİmzalı çerezlerleEvet
Nubbo paylaşım bağlantısıDışarıdaki kişilerle düzenli paylaşımEvetEvetEvetEvet, ZIP ileHayır

Neden dosyayı herkese açık yapmamalı

S3’ten bir dosya paylaşmanın en hızlı yolu onu herkese açık yapıp nesne URL’sini göndermektir. Aynı zamanda en riskli yoldur: herkese açık olan her şey, adresi bulan veya tahmin eden herkes tarafından parola, süre ve kimin aldığına dair kayıt olmadan çekilebilir. Unutulmuş herkese açık bucket’lar klasik bir veri sızıntısı kaynağıdır ve içeriklerin yanında dosya adlarını da açığa çıkarır.

AWS, yeni bucket’ların, erişim noktalarının ve nesnelerin varsayılan olarak herkese açık erişime izin vermediğini belirtir. Bunun üstüne S3 Block Public Access’in, bucket’ı sonradan açacak her ilkeyi veya ACL’yi geçersiz kılan dört ayarı vardır (BlockPublicAcls, IgnorePublicAcls, BlockPublicPolicy ve RestrictPublicBuckets). Bunlar bucket başına, hesap başına veya bütün bir AWS Organization için ayarlanabilir ve S3 en kısıtlayıcı birleşimi uygular. AWS, statik bir web sitesi gibi gerçekten herkese açık içerik barındırmıyorsanız dördünün de hesap düzeyinde açılmasını önerir.

Bu anahtarı açık tutun. Aşağıdaki her şey açıkken çalışır.

Seçenek 1: presigned URL’ler

Bir presigned URL, sorgu dizesinde bir imza bulunan bir nesne URL’sidir. Süresi dolana kadar tek bir nesne üzerinde tek bir işleme (genellikle indirme) izin verir ve S3 imzayı her istekte kontrol eder.

aws s3 presign s3://my-bucket/reports/q3.pdf --expires-in 86400

Bu URL 24 saat çalışır. CLI varsayılanı bir saattir ve IAM kullanıcı anahtarlarıyla imzaladığınızda maksimum 604.800 saniyedir (7 gün). Üstlenilen bir rol gibi geçici kimlik bilgileriyle imzalarsanız URL, o kimlik bilgilerinin süresi dolduğunda ölür.

Elde ettikleriniz:

  • Bucket’ta veya ilkelerinde değişiklik yok.
  • Hassas kontrol: tek nesne, tek yöntem, tek süre.
  • SigV4 ön imzalamayı destekleyen her sağlayıcıda çalışır.

Elde edemedikleriniz:

  • Parola yok. URL’ye sahip olan herkes süresi dolana kadar istediği kadar kullanabilir.
  • İndirme sınırı ve bağlantı başına iptal yok. Bir URL’yi erken öldürmenin tek yolu onu imzalayan anahtarları iptal etmektir.
  • Klasör yok. Nesne nesne imzalarsınız, yani 300 dosyalık bir klasörü paylaşmak 300 URL demektir.
  • Adların gizliliği. URL, bucket adınızı, nesne anahtarını ve erişim anahtarı kimliğinizi gösterir.

Yüklemeler, her X-Amz-* parametresi ve SDK kodu dahil mekanizmanın ayrıntıları için S3 presigned URL’leri makalesine bakın.

Seçenek 2: CloudFront imzalı URL’leri ve imzalı çerezler

Bucket’ı zaten Amazon CloudFront üzerinden sunuyorsanız, bir önbellek davranışında imzalı URL’leri veya imzalı çerezleri zorunlu kılabilirsiniz. Bucket, AWS’nin eski origin access identity yerine önerdiği origin access control (OAC) arkasında gizli kalır: bir bucket ilkesi nesneleri yalnızca dağıtımınızın okumasına izin verir. Ortak anahtarları güvenilir bir anahtar grubuna kaydedersiniz ve eşleşen özel anahtarla imzalarsınız.

  • İmzalı URL’ler tek tek dosyalara uygundur. Özel bir ilkeyle bir başlangıç zamanı ve bir IP aralığı da belirleyebilir, joker karakterlerle tek bir ilkeyi birçok dosya için yeniden kullanabilirsiniz. Kısa ömürlü olabilir veya yıllarca sürebilirler.
  • İmzalı çerezler, URL’lerinizi değiştirmeden aynı anda birçok dosyaya (bir videonun tüm parçaları gibi) uygundur.

Kullanıcıları zaten doğrulayan ve büyük ölçekte içerik sunan bir uygulama çalıştırdığınızda doğru araç budur. Ekibinizin dışındaki kişilere birkaç dosya vermek için ise bir dağıtım kurmak, anahtarları yönetmek ve her isteği imzalayan kod yazmak anlamına gelir.

Bir bucket ilkesini sabit bir IP aralığıyla kısıtlamak başka bir yerel seçenektir, ancak yalnızca alıcıların ağlarını bildiğinizde işe yarar; kuruluşunuzun dışındaki kişilerde bu nadiren geçerlidir.

Seçenek 3: Nubbo ile paylaşım bağlantıları

Nubbo bucket’ınıza bağlanır ve size kod yazmadan, presigned URL’lerin eksik olduğu kontrollere sahip paylaşım bağlantıları verir. Arka planda yine presigned URL’ler kullanır: Nubbo önce bağlantının kurallarını kontrol eder ve ancak ondan sonra kısa ömürlü bir URL verir, böylece tek dosyalar doğrudan bucket’ınızdan alıcının tarayıcısına gider.

Adım 1: Bucket’ınızı bağlayın

Ücretsiz kaydolun, e-postanızı doğrulayın, ardından Bucket’lar sayfasını açın ve Bucket bağla’ya basın. Sihirbaz sağlayıcınızı (Amazon S3, Cloudflare R2, DigitalOcean Spaces, Wasabi, Backblaze B2 veya özel bir S3 uyumlu endpoint), bağlantı şeklini (tam erişimli bir anahtarla otomatik kurulum veya tek bir bucket ile sınırlı bir anahtar), anahtarınızı ve bucket’ınızı sorar. Anahtarı ve bucket’ı kontrol eder ve tarayıcınızdan gerçek bir yüklemeyle CORS’u test ederek bitirir. Bucket gizli kalır ve anahtarlarınız AES-256-GCM ile şifrelenmiş olarak saklanır. Ücretsiz plan 2 bağlantı içerir.

Adım 2: Dosyayı veya klasörü seçin

Öğeyi gezginde bulun ve Paylaş’ı seçin. Ayrıca Paylaşılanlar sayfasına gidip Yeni bağlantı’ya basabilir, bucket’ı ve dosyayı veya klasörü orada seçebilirsiniz.

Adım 3: Korumayı ayarlayın

Üç kontrolün hepsi isteğe bağlıdır ve her planda kullanılabilir:

KontrolNasıl çalışır
Parola4 ila 50 karakter. 10 yanlış denemeden sonra bağlantı 15 dakika kilitlenir.
Son kullanma tarihiVarsayılan olarak kapalı: dosya veya klasör depolama alanınızda olduğu sürece bağlantı etkin kalır.
Maksimum indirme sayısıBoş bırakmak sınırsız demektir. Sayıya ulaşıldığında bağlantı dosyayı sunmayı bırakır.

Adım 4: Bağlantıyı oluşturun ve gönderin

Bağlantı oluştur’a basın, bağlantıyı kopyalayın ve e-posta, sohbet veya ne kullanıyorsanız onunla gönderin. Alıcı temiz bir indirme sayfası açar ve hesaba ihtiyaç duymaz. Bir klasör bağlantısı, klasöre göz atmasına, tek dosyalar indirmesine veya her şeyi ZIP olarak almasına izin verir; bu ZIP’i alıcının tarayıcısı, her dosyayı doğrudan bucket’ınızdan indirerek oluşturur.

Adım 5: Parolayı ayrı gönderin

Parolayı bağlantıyla aynı mesajda göndermek amacı boşa çıkarır. Bağlantının parolası varsa, Parolayı e-posta ile gönder onu tek kullanımlık bir gösterme bağlantısı olarak iletir: parola bir kez gösterilir, gösterme bağlantısının süresi 24 saat, 3 gün veya 7 gün sonra dolar ve kısa bir not ekleyebilirsiniz. Açıldığında size bildirim gelir.

Adım 6: Takip edin ve iptal edin

Paylaşılanlar sayfası her bağlantıyı durumu ve indirme sayısıyla listeler. Parolayı, süreyi veya sınırı düzenleyebilir, bir bağlantıyı devre dışı bırakabilir (yeni indirme URL’leri vermeyi hemen durdurur) ve daha sonra aynı adresle yeniden açabilirsiniz.

Bağlantı yerine belirli kişilerle paylaşmak

Bir bağlantı, ona sahip olan herkes için çalışır. Yalnızca adı belirli kişilerin girmesini istediğinizde Nubbo’nun Kişilerle paylaş özelliği (Personal ve Pro planlarında), bir dosya veya klasörü görüntüleme veya indirme izniyle, isteğe bağlı bir süre ve indirme sınırıyla belirli e-posta adreslerine gönderir ve her erişimi kaydeder. Alıcıların bir Nubbo hesabına ihtiyacı vardır ve öğeyi Benimle paylaşılanlar altında bulurlar. Personal öğe başına 10 kişiye ve 50 etkin paylaşıma, Pro ise 50 ve 500’e izin verir.

Ücretli planlar şifreli bağlantılar da sunar: tarayıcı dosyanın mühürlü bir kopyasını oluşturur ve anahtar yalnızca bağlantının kendisinde taşınır, bu yüzden Nubbo onu okuyamaz.

Hangi seçeneği kullanmalısınız?

  • Tek dosya, bir kez ve AWS CLI’ınız yapılandırılmışsa: presigned URL en hızlı yoldur.
  • Kullanıcıların zaten oturum açtığı ve çok fazla içerik sunan bir uygulama: CloudFront imzalı URL’leri veya çerezleri.
  • Ekibinizin dışındaki kişilerle düzenli paylaşım, klasörlerin tamamı veya parola ya da sınır gerektiren her şey: bir paylaşım bağlantısı zaman ve hata kazandırır.

Tek bir bağlantının ötesinde

İlgili iki özellik diğer yaygın durumları karşılar. Dosya istekleri, insanların içindeki başka hiçbir şeyi görmeden bucket’ınıza dosya gönderebilmesi için size herkese açık bir yükleme bağlantısı verir. Galeriler, bir fotoğraf veya video klasörünü düzenler, filigran ve kendi parolasıyla göz atılabilir bir sayfaya dönüştürür. Ücretsiz planda her birinden 3 tane ve sınırsız paylaşım bağlantısı alırsınız; Personal ve Pro bu sınırları kaldırır. Dürüst bir not: küçük resimler Nubbo sunucusunda oluşturulur ve kendi bucket’ınızda .nubbo-thumbs/ altında saklanır.

Sıkça sorulan sorular

Bir dosyayı S3'ten herkese açık yapmadan nasıl paylaşırım?

Bucket'ı gizli tutun ve bunun yerine imzalı erişim verin: tek bir nesne için bir presigned URL (AWS CLI'dan veya bir SDK'dan), bucket'ı zaten CloudFront üzerinden sunuyorsanız bir CloudFront imzalı URL'si veya çerezi ya da presigned URL'lerin üzerine parola, süre ve indirme sınırı ekleyen Nubbo gibi bir aracın paylaşım bağlantısı.

Amazon S3 dosya paylaşımı için güvenli mi?

Evet, bucket gizli kaldığı sürece. Yeni bucket'lar varsayılan olarak herkese açık erişime izin vermez ve S3 Block Public Access, kimsenin onları sonradan açmasını engeller. Risk, nesneleri herkese açık yapmaktan veya süresi dolana kadar ona sahip herkes için çalışan imzalı bağlantıları sızdırmaktan gelir.

Yeni S3 bucket'ları varsayılan olarak gizli mi?

Evet. AWS, yeni bucket'ların, erişim noktalarının ve nesnelerin varsayılan olarak herkese açık erişime izin vermediğini belirtir; dört Block Public Access ayarı da onları sonradan açacak her ilkeyi veya ACL'yi geçersiz kılar.

Alıcının bir AWS veya Nubbo hesabına ihtiyacı var mı?

Hayır. Bir presigned URL, bir CloudFront imzalı URL'si ve bir Nubbo paylaşım bağlantısı, hesap olmadan her tarayıcıda çalışır. Yalnızca bir öğeyi adı belirli kişilere gönderen Kişilerle paylaş, onların bir Nubbo hesabına sahip olmasını gerektirir.

Paylaşılan bir S3 bağlantısı ne kadar sürebilir?

Bir presigned URL, IAM kullanıcı anahtarlarıyla imzalandığında en fazla 7 gün, geçici kimlik bilgileriyle daha az sürer. CloudFront imzalı URL'leri ilkenizin belirttiği kadar sürer. Bir Nubbo paylaşım bağlantısının siz belirlemedikçe süresi dolmaz, çünkü her indirmede yeni ve kısa ömürlü bir URL verir.

Biri paylaşılan bir bağlantıyı indirdiğinde dosyalar Nubbo'dan geçiyor mu?

Hayır: tarayıcı tek dosyaları bir presigned URL ile doğrudan bucket'ınızdan indirir. Çok dosyalı ZIP indirmeleri, her dosyayı doğrudan bucket'ınızdan indiren tarayıcıda oluşturulur: Nubbo içeriği asla görmez.

Kaynaklar

Fiyatlar ve sınırlar aşağıdaki resmi sayfalardan alınmıştır. Sağlayıcılar bunları değiştirebilir, karar vermeden önce kontrol edin.