Menggunakan permintaan yang ditandatangani

Untuk membuat permintaan yang ditandatangani, tulis string yang menyertakan parameter yang menjelaskan konten yang ingin Anda lindungi dan waktu habis masa berlaku nilai yang ditandatangani. Anda kemudian menyertakan string yang telah disusun dalam permintaan. Media CDN kemudian memverifikasi bahwa permintaan Anda yang ditandatangani valid sebelum menindaklanjutinya.

Persyaratan permintaan yang ditandatangani

Permintaan yang ditandatangani harus memenuhi persyaratan berikut:

  • Memiliki metode HTTP GET, HEAD, atau OPTIONS. Metode lainnya tidak didukung.

  • Menetapkan waktu habis masa berlaku di masa mendatang. Karena adanya perbedaan sinkronisasi jam potensial, serta kondisi jaringan klien (misalnya, pemutusan koneksi dan percobaan ulang), sebaiknya setel stempel waktu tidak kurang dari satu menit ke depan, atau tidak kurang dari durasi streaming video, mana saja yang lebih besar.

  • Memiliki tanda tangan yang dapat diverifikasi dengan kunci atau rahasia dalam EdgeCacheKeyset.

Anda tidak dapat menandatangani metode HTTP lainnya, seperti permintaan POST, PUT, atau DELETE. Jika Anda perlu menerbitkan URL bertanda tangan untuk upload yang ditampilkan kepada pengguna, lihat dokumentasi Cloud Storage untuk URL yang ditandatangani.

Pertimbangan keamanan

Media CDN memvalidasi semua permintaan yang cocok dengan rute yang dikonfigurasi dengan cdnPolicy.signedRequestMode dari REQUIRE_SIGNATURES atau REQUIRE_TOKENS.

Tabel berikut menjelaskan skenario saat Media CDN memvalidasi permintaan:

Permintaan memiliki tanda tangan Tanda tangan valid? signedRequestMode Perilaku Response code
Tidak T/A REQUIRE_SIGNATURES atau REQUIRE_TOKENS Permintaan tanpa tanda tangan atau token diperlakukan seolah-olah tanda tangan tersebut tidak valid. HTTP 403
Ya Tidak REQUIRE_SIGNATURES atau REQUIRE_TOKENS Tanda tangan atau token dianggap tidak valid jika sudah tidak berlaku lagi, atau memiliki URL yang tidak cocok atau kunci yang salah. Tanda tangan atau token yang tidak valid akan ditolak di edge CDN. HTTP 403
Ya Ya REQUIRE_SIGNATURES atau REQUIRE_TOKENS Validasi tanda tangan atau token dan respons dengan konten dari cache atau pengambilan dari asal. HTTP 200
Ya Ya Tidak ada atau DISABLED Tidak ada validasi yang dilakukan, dan respons disajikan secara langsung kepada pengguna. HTTP 200
Ya Tidak Tidak ada atau DISABLED Tidak ada validasi yang dilakukan, dan respons disajikan secara langsung kepada pengguna. HTTP 200

Saat aplikasi mendeteksi tanda tangan yang tidak valid, pastikan aplikasi Anda merespons dengan kode respons HTTP 403 (Forbidden). Kode respons HTTP 403 tidak dapat di-cache.

Mengonfigurasi permintaan yang ditandatangani

Bagian berikut menjelaskan cara mengonfigurasi, menandatangani, dan memvalidasi permintaan yang ditandatangani.

Buat kunci

Buat kunci yang digunakan Media CDN untuk menandatangani permintaan.

Membuat keyset

Buat keyset yang digunakan Media CDN untuk permintaan yang ditandatangani.

Mewajibkan permintaan yang ditandatangani

Untuk hanya mengizinkan permintaan yang ditandatangani untuk mengakses resource, Anda dapat melampirkan daftar kunci ke rute dan menetapkan signedRequestMode ke salah satu opsi berikut:

  • REQUIRE_SIGNATURES untuk permintaan bertanda tangan yang tidak menggunakan token.

  • REQUIRE_TOKENS untuk permintaan yang ditandatangani menggunakan token.

Mengaktifkan permintaan yang ditandatangani di rute akan mewajibkan semua permintaan ditandatangani atau memberikan token. Permintaan tanpa tanda tangan yang valid (seperti nama kunci yang tidak valid, tanda tangan atau token yang sudah tidak berlaku, tanda tangan tidak cocok, dan sebagainya), akan gagal.

EdgeCacheKeyset dapat berisi beberapa kunci untuk memungkinkan rotasi kunci. Permintaan valid yang ditandatangani dengan kunci yang tercantum diterima, dan kunci dicoba secara berurutan. Untuk mengetahui informasi selengkapnya tentang rotasi kunci, lihat Merotasi rahasia.

Jika signedRequestMode ditetapkan ke REQUIRE_SIGNATURES atau REQUIRE_TOKENS, Media CDN memvalidasi cache yang ditemukan dan cache yang tidak ditemukan. Ini termasuk semua permintaan ke origin.

Berikut adalah contoh konfigurasi Media CDN yang memberlakukan permintaan bertanda tangan pada PathMatcher (rute) tertentu:

gcloud edge-cache services describe prod-media-service
Output:
...
  routeAction:
    cdnPolicy:
      cacheMode: CACHE_ALL_STATIC
      signedRequestMode: REQUIRE_SIGNATURES
      signedRequestKeyset: prod-vod-keyset

Guna mengetahui informasi tentang cara membuat token untuk permintaan yang ditandatangani, lihat Membuat token.

Untuk menonaktifkan penandatanganan permintaan, Anda dapat menetapkan signedRequestMode ke DISABLED dan menghapus referensi ke signedRequestKeyset.

Memvalidasi permintaan di asal

Saat rute dikonfigurasi dengan mode penandatanganan REQUIRE_SIGNATURES, Media CDN memvalidasi bahwa setiap permintaan yang cocok memiliki tanda tangan yang valid. Tidak adanya tanda tangan dianggap sebagai tanda tangan yang tidak valid untuk rute ini.

Untuk mencegah kasus ketika penandatanganan salah dikonfigurasi, dan saat pengguna mencoba mengakses origin secara langsung, sebaiknya Anda juga memvalidasi bahwa permintaan juga ditandatangani di asal. Pendekatan defense in depth terhadap perlindungan konten membantu mencegah akses tidak sah dan download konten berlisensi dan berbayar Anda.

Untuk metode penandatanganan berbasis URL, dengan tanda tangan merupakan bagian dari parameter kueri atau disematkan sebagai komponen jalur URL, tanda tangan dan parameter terkait tersebut akan dihapus dari URL sebelum permintaan dikirim ke origin. Tindakan ini mencegah tanda tangan menyebabkan masalah perutean saat origin menangani permintaan. Untuk memvalidasi permintaan ini, Anda dapat memeriksa header permintaan x-client-request-url, yang menyertakan URL permintaan klien asli (yang ditandatangani) sebelum penghapusan komponen yang ditandatangani.

Untuk memvalidasi permintaan di asal, gunakan kode validasi yang sama sebagai bagian dari endpoint penandatanganan permintaan Anda, yang juga membantu mengurangi ketidakcocokan dan masalah kunci akibat rotasi kunci.

Merotasi kunci

Sebagai praktik terbaik, putar atau perbarui rahasia yang digunakan oleh Media CDN secara rutin. Sebaiknya rotasi kunci setiap 30 hingga 60 hari, tetapi hal ini tidak wajib.

Langkah selanjutnya

  • Untuk membaca lebih lanjut cara mengaktifkan dan mengakses log Media CDN, termasuk cara memfilter dan membuat kueri di seluruh log Anda, lihat Logging.

  • Untuk mengonfigurasi Media CDN dan bucket Cloud Storage pribadi, lihat Konektivitas dan perisai origin.