Secara default, konten yang didistribusikan oleh CDN bersifat publik dan dapat diakses oleh siapa pun yang memiliki URL-nya. Untuk melindungi resource origin Anda dari akses tidak sah dan unduhan berbahaya, Anda dapat menggunakan URL signing selain metode kontrol akses lain seperti Perlindungan hotlink Referer dan daftar hitam/daftar putih IP. URL signing mengamankan konten Anda dengan memvalidasi string terenkripsi dan timestamp dalam URL yang ditandatangani.
Cara kerja
URL signing mencegah akses tidak sah ke resource origin Anda dengan mengoordinasikan permintaan antara POP Alibaba Cloud CDN dan origin Anda. Proses ini melibatkan tiga komponen utama:
Origin application server: Menghasilkan URL yang ditandatangani berdasarkan aturan penandatanganan yang telah ditentukan, termasuk algoritma dan kunci, lalu mengembalikannya ke client.
Client: Mengirimkan URL yang ditandatangani ke POP CDN untuk meminta resource.
POP CDN: Memvalidasi informasi dalam URL yang ditandatangani, seperti string signature dan timestamp.
Pelanggan CDN atau mengonfigurasi aturan pembuatan URL yang ditandatangani (termasuk algoritma penandatanganan dan kunci) pada origin application server.
Sebagai contoh, URL yang ditandatangani dapat memiliki format
http://DomainName/timestamp/md5hash/FileName.Saat client mengunjungi halaman pada aplikasi Anda, origin application server menghasilkan URL yang ditandatangani berdasarkan aturan yang telah dikonfigurasi dan menyematkannya dalam halaman yang dikembalikan ke client.
Client menggunakan URL yang ditandatangani tersebut untuk meminta resource dari POP CDN.
POP CDN memvalidasi informasi dalam URL yang ditandatangani, seperti string signature dan timestamp, untuk menentukan apakah permintaan tersebut sah.
Jika autentikasi gagal, POP menolak permintaan tersebut.
Jika autentikasi berhasil, POP menyajikan kontennya.
CatatanJika node CDN tidak memiliki sumber daya dalam cache, node CDN menghapus parameter otentikasi dari URL yang ditandatangani dan memulihkannya ke URL asli (misalnya,
http://DomainName/FileName), lalu menggunakan URL asli tersebut untuk menghasilkan kunci cache atau memulai permintaan origin-fetch.Setelah CDN mengautentikasi URL permintaan, sistem akan meng-encode karakter khusus dalam URL tersebut, seperti karakter Tionghoa atau karakter non-ASCII lainnya.
Catatan penggunaan
Setelah Anda mengonfigurasi Penandatanganan URL, permintaan yang gagal otentikasi masih dapat mencapai node CDN, tetapi ditolak oleh node CDN dan kode status 403 dikembalikan. Log CDN tetap mencatat permintaan otentikasi yang gagal ini.
URL signing memvalidasi permintaan di POP CDN. Oleh karena itu, mencegat permintaan berbahaya tetap mengonsumsi sejumlah kecil traffic yang dikenai biaya. Untuk Permintaan HTTPS, biaya tambahan berlaku karena POP CDN mengonsumsi sumber daya pemrosesan untuk melakukan pencegatan tersebut.
Konfigurasikan dan aktifkan URL signing
Pastikan Anda telah mengonfigurasi aturan pembuatan URL yang ditandatangani, termasuk algoritma penandatanganan dan kunci, pada origin application server Anda.
Logika URL signing yang dikonfigurasi di Konsol CDN harus sesuai dengan logika pada origin application server Anda.
-
Masuk ke CDN console.
-
Di panel navigasi kiri, klik Domain Names.
-
Pada halaman Domain Names, temukan nama domain target dan klik Manage di kolom Actions.
-
Di panel navigasi domain, klik Access Control.
Klik tab URL Signing.
Di bagian URL Signing, klik Modify.
Aktifkan sakelar Set URL Signing dan konfigurasikan parameter-parameter berikut.
Parameter
Deskripsi
Type
Alibaba Cloud CDN menyediakan empat metode penandatanganan. Anda dapat memilih tipe penandatanganan berdasarkan format URL yang ditandatangani untuk melindungi resource origin secara efektif. Tipe URL signing berikut tersedia:
CatatanJika URL signing gagal, error 403 dikembalikan:
Error perhitungan MD5
Contoh:
X-Tengine-Error:denied by req auth: invalid md5hash=de7bfdc915ced05e17380a149bd760beError terkait waktu
Contoh:
X-Tengine-Error:denied by req auth: expired timestamp=1439469547
Primary Key
Masukkan primary key untuk metode penandatanganan. Kunci harus terdiri dari 6 hingga 128 karakter dan dapat berisi huruf kapital, huruf kecil, dan angka.
Secondary Key
Masukkan secondary key untuk metode penandatanganan. Kunci harus terdiri dari 6 hingga 128 karakter dan dapat berisi huruf kapital, huruf kecil, dan angka. Anda harus menentukan setidaknya primary key atau secondary key.
TTL
Menentukan periode validitas URL yang ditandatangani. Client harus mengakses resource dalam periode timestamp + TTL. Permintaan yang dikirim setelah periode ini akan gagal dalam autentikasi.
Unit: detik
Nilai valid: 1 hingga 31536000
Nilai default: 1800 (30 menit)
Contoh: Jika server penandatanganan Anda menghasilkan URL yang ditandatangani pada pukul 15:00:00 (UTC+8) tanggal 15 Agustus 2020 dan TTL-nya adalah 1.800 detik, maka URL tersebut kedaluwarsa pada pukul 15:30:00 (UTC+8) tanggal 15 Agustus 2020.
Signature Parameter
Anda dapat menyesuaikan nama parameter signature. Ini hanya berlaku ketika tipe autentikasi diatur ke Method F.
Timestamp Parameter
Anda dapat menyesuaikan nama parameter timestamp. Ini hanya berlaku ketika tipe autentikasi diatur ke Type F.
Timestamp Format
Menetapkan format timestamp, yang dapat berupa desimal (Unix timestamp) atau heksadesimal (Unix timestamp). Pengaturan ini hanya berlaku ketika tipe autentikasi diatur ke Type F.
URL Encoding
Sakelar URL encoding dinonaktifkan secara default. Jika Anda mengaktifkan sakelar ini, sistem akan melakukan URL-encoding terhadap URL permintaan pengguna. Fitur ini hanya berlaku ketika tipe autentikasi diatur ke Method F.
Rule Condition
Rule condition memungkinkan suatu aturan diterapkan hanya jika permintaan memenuhi kriteria tertentu.
PentingKetika suatu fitur mereferensikan rule condition, urutan eksekusi mengikuti prioritas rule condition terkait, bukan urutan konfigurasi fitur tersebut.
-
Do not use: Menonaktifkan aturan kondisional.
-
Anda dapat menambah atau mengedit aturan kondisional di Rules engine.
Klik OK.
Verifikasi URL yang ditandatangani
Setelah Anda mengonfigurasi URL signing, gunakan Signed URL Generator di Konsol CDN untuk menghasilkan URL yang ditandatangani dan memverifikasi implementasinya. Proses ini memastikan bahwa logika penandatanganan server Anda benar.
Di bagian Signed URL Generator, tentukan Original URL (Unencoded) dan informasi penandatanganan lainnya.
Parameter
Deskripsi
Original URL (Unencoded)
Masukkan URL asli lengkap, misalnya,
https://www.aliyun.com. Tool ini secara otomatis melakukan encoding terhadap URL asli saat menghasilkan URL yang ditandatangani.Type
Pilih tipe URL signing berdasarkan pengaturan yang telah Anda konfigurasi di bagian Konfigurasikan dan aktifkan URL signing.
Cryptographic Key
Masukkan Primary Key atau Secondary Key yang telah Anda konfigurasi di bagian Konfigurasikan dan aktifkan URL signing.
TTL
Masukkan TTL untuk URL signing dalam satuan detik, berdasarkan pengaturan yang telah Anda konfigurasi di bagian Konfigurasikan dan aktifkan URL signing.
Klik Generate untuk mendapatkan Signed URL dan Timestamp.
Nonaktifkan URL signing
Jika Anda menonaktifkan URL signing di Konsol CDN, tetapi permintaan client masih berisi parameter penandatanganan, CDN tidak dapat mengembalikan URL permintaan ke format aslinya. Hal ini menyebabkan cache miss, sehingga semua permintaan tersebut dialihkan ke origin Anda. Akibatnya, lalu lintas origin dan biaya Anda meningkat secara signifikan. Oleh karena itu, untuk sepenuhnya menonaktifkan URL signing, Anda harus menghapus konfigurasi baik dari server aplikasi maupun dari Konsol CDN.
Di bagian URL Signing pada CDN console, klik Modify dan nonaktifkan sakelar URL signing.
Di server aplikasi Anda, hapus logika yang menambahkan parameter penandatanganan ke URL permintaan.