Bekerja dengan URL yang telah ditandatangani - Amazon Simple Storage Service

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Bekerja dengan URL yang telah ditandatangani

Anda dapat menggunakan URL yang telah ditandatangani untuk memberikan akses terbatas waktu ke objek di Amazon S3 tanpa memperbarui kebijakan bucket Anda. URL yang telah ditandatangani dapat dimasukkan di dalam browser atau dapat digunakan oleh program untuk mengunduh objek. Kredensyal yang digunakan oleh URL presigned adalah milik AWS pengguna yang membuat URL.

Anda juga dapat menggunakan URL yang telah ditandatangani untuk mengizinkan seseorang mengunggah objek tertentu ke bucket Amazon S3 Anda. Ini memungkinkan unggahan tanpa mengharuskan pihak lain untuk memiliki kredensil atau izin AWS keamanan. Jika sebuah objek dengan kunci yang sama sudah ada di bucket seperti yang ditentukan dalam URL yang telah ditandatangani, Amazon S3 menggantikan objek yang sudah ada dengan objek yang diunggah.

Anda dapat menggunakan URL yang telah ditandatangani beberapa kali, hingga tanggal dan waktu kedaluwarsa.

Saat Anda membuat sebuah URL yang telah ditandatangani, Anda harus memberikan kredensial keamanan Anda, lalu menentukan berikut ini:

  • Bucket Amazon S3

  • Kunci objek (jika mengunduh objek ini akan ada di bucket Amazon S3 Anda, jika mengunggah ini adalah nama file yang akan diunggah)

  • Metode HTTP (GET untuk mengunduh objek atau PUT untuk mengunggah)

  • Interval waktu kedaluwarsa

Saat ini, URL yang telah ditandatangani Amazon S3 tidak mendukung penggunaan algoritma checksum integritas data berikut (CRC32, CRC32C, SHA-1, SHA-256) saat Anda mengunggah objek. Untuk memverifikasi integritas objek Anda setelah mengunggah, Anda dapat memberikan MD5 {i>digest<i} objek saat Anda mengunggahnya dengan URL yang telah ditandatangani. Untuk informasi selengkapnya tentang integritas objek, lihat Memeriksa integritas objek.

Siapa yang dapat membuat URL yang telah ditandatangani

Siapa pun yang memiliki kredensial keamanan yang valid dapat membuat sebuah URL yang telah ditandatangani. Tetapi untuk seseorang berhasil mengakses objek, URL yang telah ditandatangani harus dibuat oleh seseorang yang memiliki izin untuk melakukan operasi yang menjadi dasar dari URL yang telah ditandatangani.

Berikut ini adalah jenis kredensial yang dapat Anda gunakan untuk membuat URL yang telah ditandatangani:

  • Profil instans IAM–Valid hingga 6 jam.

  • AWS Security Token Service–Berlaku hingga maksimum 36 jam saat ditandatangani dengan kredensial keamanan jangka panjang atau durasi kredensial sementara, mana yang berakhir terlebih dulu.

  • Pengguna IAM - Berlaku hingga 7 hari saat Anda menggunakan AWS Signature Version 4.

    Untuk membuat sebuah URL yang telah ditandatangani yang valid hingga 7 hari, pertama-tama delegasikan kredensial pengguna IAM (kunci akses dan kunci rahasia) ke metode yang Anda gunakan untuk membuat URL yang telah ditandatangani.

catatan

Jika Anda membuat URL yang telah ditandatangani menggunakan kredensial sementara, URL tersebut akan kedaluwarsa saat kredensial-nya kedaluwarsa. Ini benar terjadi meskipun jika URL dibuat dengan waktu kedaluwarsa yang lebih lama. Untuk masa pakai kredensyal keamanan sementara, lihat Membandingkan operasi AWS STS API di Panduan Pengguna IAM.

Waktu kedaluwarsa untuk URL yang telah ditandatangani

URL yang telah ditandatangani tetap valid untuk jangka waktu yang ditentukan saat URL dibuat. Jika Anda membuat URL yang telah ditandatangani dengan konsol Amazon S3, waktu kedaluwarsa dapat diatur antara 1 menit dan 12 jam. Jika Anda menggunakan AWS CLI atau AWS SDK, waktu kedaluwarsa dapat diatur setinggi 7 hari.

Jika Anda membuat URL yang telah ditandatangani menggunakan token sementara, maka URL akan kedaluwarsa saat token kedaluwarsa, meskipun jika Anda membuat URL dengan waktu kedaluwarsa yang lebih lama. Untuk informasi selengkapnya tentang bagaimana kredensial yang Anda gunakan memengaruhi waktu kedaluwarsanya, lihat Siapa yang dapat membuat URL yang telah ditandatangani.

Amazon S3 memeriksa tanggal dan waktu kedaluwarsa URL yang ditandatangani pada saat permintaan HTTP. Misalnya, jika klien mulai mengunduh file besar segera sebelum waktu kedaluwarsa, pengunduhan berlanjut meskipun waktu kedaluwarsa berlalu selama pengunduhan. Akan tetapi, jika koneksi menurun dan klien mencoba memulai ulang unduhan setelah waktu kedaluwarsa berlalu, pengunduhan gagal.

Pembatasan kemampuan URL yang telah ditandatangani

Kemampuan URL yang telah ditandatangani dibatasi oleh izin pengguna yang membuatnya. Pada intinya, URL yang telah ditandatangani adalah token pembawa yang memberikan akses kepada mereka yang memilikinya. Oleh karena itu, kami menyarankan agar Anda melindunginya sebagaimana mestinya. Berikut ini adalah beberapa metode yang dapat Anda gunakan untuk membatasi penggunaan URL yang telah ditandatangani Anda.

AWS Tanda Tangan Versi 4 (SiGv4)

Untuk menerapkan perilaku tertentu saat permintaan URL yang telah ditandatangani diautentikasi dengan menggunakan AWS Signature Version 4 (SigV4), Anda dapat menggunakan kunci kondisi dalam kebijakan bucket dan kebijakan titik akses. Contoh, kebijakan bucket berikut menggunakan s3:signatureAge kondisi untuk menolak permintaan URL yang telah ditandatangani Amazon S3 pada objek di DOC-EXAMPLE-BUCKET1 bucket jika tanda tangannya sudah lebih dari 10 menit. Untuk menggunakan contoh ini, ganti user input placeholders dengan informasi Anda sendiri.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Deny a presigned URL request if the signature is more than 10 min old", "Effect": "Deny", "Principal": {"AWS":"*"}, "Action": "s3:*", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET1/*", "Condition": { "NumericGreaterThan": { "s3:signatureAge": 600000 } } } ] }

Untuk informasi selengkapnya tentang kunci kebijakan terkait AWS Tanda Tangan Versi 4, lihat Otentikasi AWS Tanda Tangan Versi 4 di Referensi API Amazon Simple Storage Service.

Pembatasan jalur jaringan

Jika Anda ingin membatasi penggunaan URL yang telah ditetapkan sebelumnya dan semua akses Amazon S3 ke jalur jaringan tertentu, Anda dapat menulis AWS Identity and Access Management kebijakan (IAM). Anda dapat mengatur kebijakan ini pada pengguna utama IAM yang melakukan panggilan, bucket Amazon S3, atau keduanya.

Pembatasan jalur jaringan pada pengguna utama IAM mengharuskan pengguna kredensial tersebut untuk membuat permintaan dari jaringan yang ditentukan. Pembatasan pada bucket atau titik akses mengharuskan semua permintaan ke sumber daya tersebut berasal dari jaringan tertentu. Pembatasan ini juga berlaku di luar skenario URL yang telah ditandatangani sebelumnya.

Kunci kondisi global IAM yang Anda gunakan bergantung pada jenis titik akhir. Jika Anda menggunakan titik akhir publik untuk Amazon S3, gunakan aws:SourceIp. Jika Anda menggunakan titik akhir cloud privat virtual (VPC) ke Amazon S3, gunakan aws:SourceVpc atau aws:SourceVpce.

Pernyataan kebijakan IAM berikut mengharuskan prinsipal untuk mengakses AWS hanya dari rentang jaringan yang ditentukan. Dengan pernyataan kebijakan ini, semua akses harus berasal dari rentang itu. Kebijakan ini juga termasuk kasus seseorang yang menggunakan URL yang telah ditandatangani sebelumnya untuk Amazon S3. Untuk menggunakan contoh ini, ganti user input placeholders dengan informasi Anda sendiri.

{ "Sid": "NetworkRestrictionForIAMPrincipal", "Effect": "Deny", "Action": "*", "Resource": "*", "Condition": { "NotIpAddressIfExists": {"aws:SourceIp": "IP-address-range"}, "BoolIfExists": {"aws:ViaAWSService": "false"} } }

Untuk contoh kebijakan bucket tambahan yang menggunakan kunci kondisi aws:SourceIp AWS global untuk membatasi akses ke bucket Amazon S3 ke rentang jaringan tertentu, lihat. Mengelola akses berdasarkan alamat IP tertentu