Artikel

Cara berbagi file S3 tanpa menjadikan bucket publik

Berbagi file S3 dengan aman dari bucket privat: presigned URL, signed URL CloudFront atau tautan dengan kata sandi, masa berlaku dan batas unduhan.

Anda dapat berbagi file dari Amazon S3 tanpa pernah menjadikan bucket publik. Biarkan bucket tetap privat, biarkan Block Public Access aktif dan berikan orang akses bertanda tangan ke objek tertentu sebagai gantinya: presigned URL untuk file sekali pakai, signed URL CloudFront saat Anda sudah menjalankan CDN di depan bucket, atau tautan berbagi yang menambahkan kata sandi, tanggal kedaluwarsa dan batas unduhan. Ketiganya bekerja dengan cara yang sama di provider kompatibel S3 seperti Cloudflare R2, DigitalOcean Spaces, Wasabi dan Backblaze B2 (CloudFront hanya untuk AWS).

Sekilas opsi berbagi file S3 yang aman

MetodePaling cocok untukKata sandiBatas unduhanCabut satu tautanSeluruh folderPerlu kode
Objek atau bucket publikAset yang benar-benar publik (situs web)TidakTidakTidakYaTidak
Presigned URLSatu file, sekali, dari CLI atau aplikasi AndaTidakTidakTidakTidakCLI atau SDK
Signed URL CloudFrontAplikasi yang sudah mengautentikasi penggunaTidakTidakTidakDengan signed cookieYa
Tautan berbagi NubboBerbagi rutin dengan orang di luar tim AndaYaYaYaYa, dengan ZIPTidak

Mengapa tidak menjadikan file publik saja

Cara tercepat untuk berbagi file dari S3 adalah menjadikannya publik dan mengirim URL objeknya. Ini juga cara yang paling berisiko: apa pun yang publik dapat diambil oleh siapa saja yang menemukan atau menebak alamatnya, tanpa kata sandi, tanpa masa berlaku dan tanpa catatan siapa yang mengambilnya. Bucket publik yang terlupakan adalah sumber klasik kebocoran data, dan mengekspos nama file sekaligus isinya.

AWS menyatakan bahwa bucket, access point dan objek baru tidak mengizinkan akses publik secara default. Selain itu, S3 Block Public Access memiliki empat pengaturan (BlockPublicAcls, IgnorePublicAcls, BlockPublicPolicy dan RestrictPublicBuckets) yang mengesampingkan kebijakan atau ACL apa pun yang akan membuka bucket di kemudian hari. Pengaturan ini dapat diterapkan per bucket, per akun atau untuk seluruh AWS Organization, dan S3 menerapkan kombinasi yang paling ketat. AWS merekomendasikan untuk mengaktifkan keempatnya di tingkat akun kecuali Anda benar-benar meng-host konten publik, seperti situs web statis.

Biarkan pengaturan itu tetap aktif. Semua yang dijelaskan di bawah ini berfungsi dengan pengaturan tersebut aktif.

Opsi 1: presigned URL

Presigned URL adalah URL objek dengan tanda tangan di query string. URL ini memberikan satu operasi (biasanya unduhan) pada satu objek hingga kedaluwarsa, dan S3 memeriksa tanda tangannya di setiap permintaan.

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

URL tersebut berfungsi selama 24 jam. Default CLI adalah satu jam dan maksimumnya 604.800 detik (7 hari) saat Anda menandatangani dengan key pengguna IAM. Jika Anda menandatangani dengan kredensial sementara, seperti role yang di-assume, URL mati saat kredensial tersebut kedaluwarsa.

Yang Anda dapatkan:

  • Tidak ada perubahan pada bucket atau kebijakannya.
  • Kontrol yang presisi: satu objek, satu metode, satu masa berlaku.
  • Berfungsi di provider mana pun yang mendukung presigning SigV4.

Yang tidak Anda dapatkan:

  • Tidak ada kata sandi. Siapa pun yang memiliki URL dapat menggunakannya, sesering yang mereka mau, hingga kedaluwarsa.
  • Tidak ada batas unduhan dan tidak ada pencabutan per tautan. Anda hanya dapat mematikan URL lebih awal dengan mencabut key yang menandatanganinya.
  • Tidak ada folder. Anda menandatangani objek satu per satu, sehingga berbagi folder berisi 300 file berarti 300 URL.
  • Privasi nama. URL menampilkan nama bucket, key objek dan ID access key Anda.

Untuk mekanismenya secara mendalam, termasuk unggahan, setiap parameter X-Amz-* dan kode SDK, lihat penjelasan presigned URL S3.

Jika Anda sudah menyajikan bucket melalui Amazon CloudFront, Anda dapat mewajibkan signed URL atau signed cookie pada cache behavior. Bucket tetap privat di balik origin access control (OAC), yang direkomendasikan AWS dibandingkan origin access identity yang lebih lama: kebijakan bucket hanya mengizinkan distribusi Anda membaca objek. Anda mendaftarkan public key di trusted key group dan menandatangani dengan private key yang sesuai.

  • Signed URL cocok untuk file individual. Dengan kebijakan kustom, Anda juga dapat menetapkan waktu mulai dan rentang IP, serta menggunakan ulang satu kebijakan untuk banyak file dengan wildcard. Masa berlakunya bisa singkat atau bertahun-tahun.
  • Signed cookie cocok untuk banyak file sekaligus, seperti setiap segmen video, tanpa mengubah URL Anda.

Ini adalah alat yang tepat saat Anda menjalankan aplikasi yang sudah mengautentikasi pengguna dan menyajikan konten dalam skala besar. Untuk memberikan beberapa file kepada orang di luar tim Anda, ini berarti menyiapkan distribusi, mengelola key dan menulis kode yang menandatangani setiap permintaan.

Membatasi kebijakan bucket ke rentang IP tetap adalah opsi bawaan lainnya, tetapi hanya membantu jika Anda mengetahui jaringan penerima, yang jarang terjadi pada orang di luar organisasi Anda.

Opsi 3: tautan berbagi dengan Nubbo

Nubbo terhubung ke bucket Anda dan memberi Anda tautan berbagi dengan kontrol yang tidak dimiliki presigned URL, tanpa menulis kode. Di baliknya, Nubbo tetap menggunakan presigned URL: Nubbo memeriksa aturan tautan terlebih dahulu dan baru kemudian menerbitkan URL berumur pendek, sehingga file tunggal berpindah langsung dari bucket Anda ke browser penerima.

Langkah 1: Hubungkan bucket Anda

Daftar gratis, verifikasi email Anda, lalu buka Bucket dan tekan Hubungkan bucket. Wizard menanyakan provider Anda (Amazon S3, Cloudflare R2, DigitalOcean Spaces, Wasabi, Backblaze B2 atau endpoint kompatibel S3 kustom), cara menghubungkan (penyiapan otomatis dengan key akses penuh, atau key yang dibatasi ke satu bucket), key Anda dan bucket Anda. Wizard memeriksa key dan bucket, lalu diakhiri dengan menguji CORS melalui unggahan nyata dari browser Anda. Bucket tetap privat dan key Anda disimpan terenkripsi dengan AES-256-GCM. Paket Gratis mencakup 2 koneksi.

Langkah 2: Pilih file atau folder

Temukan item di explorer dan pilih Bagikan. Anda juga dapat membuka halaman Dibagikan, menekan Tautan baru dan memilih bucket serta file atau folder di sana.

Langkah 3: Atur perlindungannya

Ketiga kontrol bersifat opsional dan tersedia di setiap paket:

KontrolCara kerjanya
Kata sandi4 hingga 50 karakter. Setelah 10 percobaan yang salah, tautan terkunci selama 15 menit.
Tanggal kedaluwarsaNonaktif secara default: tautan tetap aktif selama file atau folder ada di penyimpanan Anda.
Maksimal unduhanKosong berarti tanpa batas. Saat jumlahnya tercapai, tautan berhenti menyajikan file.

Langkah 4: Buat dan kirim tautan

Tekan Buat tautan, salin dan kirim melalui email, obrolan atau apa pun yang Anda gunakan. Penerima membuka halaman unduhan yang bersih dan tidak memerlukan akun. Tautan folder memungkinkan mereka menjelajah folder, mengunduh file satu per satu atau mengambil semuanya sebagai ZIP, yang disusun oleh browser mereka dengan mengunduh setiap file langsung dari bucket Anda.

Langkah 5: Kirim kata sandi secara terpisah

Mengirim kata sandi dalam pesan yang sama dengan tautan menghilangkan manfaatnya. Jika tautan memiliki kata sandi, Kirim kata sandi melalui email mengirimkannya sebagai tautan sekali lihat: kata sandi ditampilkan satu kali, tautan tersebut kedaluwarsa setelah 24 jam, 3 hari atau 7 hari, dan Anda dapat menambahkan catatan singkat. Anda akan diberi tahu saat tautan itu dibuka.

Langkah 6: Pantau dan cabut

Halaman Dibagikan mencantumkan setiap tautan beserta status dan jumlah unduhannya. Anda dapat mengedit kata sandi, masa berlaku atau batasnya, menonaktifkan tautan (tautan langsung berhenti menerbitkan URL unduhan baru) dan membukanya kembali nanti dengan alamat yang sama.

Berbagi dengan orang tertentu alih-alih tautan

Tautan berfungsi bagi siapa pun yang memilikinya. Saat Anda hanya ingin orang tertentu yang dapat masuk, fitur Bagikan dengan orang di Nubbo (di paket Personal dan Pro) mengirim file atau folder ke alamat email tertentu dengan izin lihat atau unduh, masa berlaku opsional dan batas unduhan, serta mencatat setiap akses. Penerima memerlukan akun Nubbo dan menemukan item tersebut di Dibagikan kepada saya. Personal mengizinkan 10 orang per item dan 50 berbagi aktif; Pro mengizinkan 50 dan 500.

Paket berbayar juga menawarkan tautan terenkripsi: browser membuat salinan file yang tersegel dan key-nya hanya berpindah di dalam tautan itu sendiri, sehingga Nubbo tidak dapat membacanya.

Opsi mana yang sebaiknya Anda gunakan?

  • Satu file, sekali, dan AWS CLI Anda sudah dikonfigurasi: presigned URL adalah cara tercepat.
  • Aplikasi yang sudah memproses login pengguna dan menyajikan banyak konten: signed URL atau cookie CloudFront.
  • Berbagi rutin dengan orang di luar tim Anda, seluruh folder atau apa pun yang memerlukan kata sandi atau batas: tautan berbagi menghemat waktu dan mencegah kesalahan.

Lebih dari satu tautan

Dua fitur terkait mencakup kasus umum lainnya. Permintaan file memberi Anda tautan unggah publik agar orang dapat mengirim file ke bucket Anda tanpa melihat isi lainnya. Galeri mengubah folder foto atau video menjadi halaman yang dapat dijelajahi dengan berbagai tata letak, watermark dan kata sandinya sendiri. Di paket Gratis, Anda mendapatkan masing-masing 3 dan tautan berbagi tanpa batas; Personal dan Pro menghapus batas tersebut. Satu catatan jujur: thumbnail dibuat di server Nubbo dan disimpan di bucket Anda sendiri di .nubbo-thumbs/.

Pertanyaan yang sering diajukan

Bagaimana cara berbagi file dari S3 tanpa menjadikannya publik?

Biarkan bucket tetap privat dan berikan akses bertanda tangan sebagai gantinya: presigned URL untuk satu objek (dari AWS CLI atau SDK), signed URL atau cookie CloudFront jika Anda sudah menyajikan bucket melalui CloudFront, atau tautan berbagi dari alat seperti Nubbo yang menambahkan kata sandi, masa berlaku dan batas unduhan di atas presigned URL.

Apakah Amazon S3 aman untuk berbagi file?

Ya, selama bucket tetap privat. Bucket baru tidak mengizinkan akses publik secara default dan S3 Block Public Access mencegah siapa pun membukanya di kemudian hari. Risikonya berasal dari menjadikan objek publik atau dari bocornya tautan bertanda tangan, yang berfungsi bagi siapa pun yang memilikinya hingga kedaluwarsa.

Apakah bucket S3 baru bersifat privat secara default?

Ya. AWS menyatakan bahwa bucket, access point dan objek baru tidak mengizinkan akses publik secara default, dan empat pengaturan Block Public Access mengesampingkan kebijakan atau ACL apa pun yang akan membukanya di kemudian hari.

Apakah penerima memerlukan akun AWS atau Nubbo?

Tidak. Presigned URL, signed URL CloudFront dan tautan berbagi Nubbo semuanya berfungsi di browser mana pun tanpa akun. Hanya Bagikan dengan orang, yang mengirim item kepada orang tertentu, yang mengharuskan mereka memiliki akun Nubbo.

Berapa lama tautan S3 yang dibagikan dapat bertahan?

Presigned URL bertahan paling lama 7 hari jika ditandatangani dengan key pengguna IAM, dan lebih singkat dengan kredensial sementara. Signed URL CloudFront bertahan selama yang ditentukan kebijakan Anda. Tautan berbagi Nubbo tidak memiliki masa berlaku kecuali Anda mengaturnya, karena tautan ini menerbitkan URL baru berumur pendek di setiap unduhan.

Apakah file melewati Nubbo saat seseorang mengunduh tautan yang dibagikan?

Tidak: browser mengunduh file tunggal langsung dari bucket Anda dengan presigned URL. Unduhan ZIP multi-file disusun di browser, yang mengunduh setiap file langsung dari bucket Anda: Nubbo tidak pernah melihat isinya.

Sumber

Harga dan batas berasal dari halaman resmi di bawah ini. Provider dapat mengubahnya, jadi periksa sebelum Anda memutuskan.