Menggunakan permintaan yang ditandatangani

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

Persyaratan permintaan yang ditandatangani

Permintaan yang ditandatangani harus memenuhi persyaratan berikut:

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

  • Memiliki waktu habis masa berlaku yang ditetapkan di masa mendatang. Karena potensi perbedaan sinkronisasi jam, serta kondisi jaringan klien (misalnya, putus dan percobaan ulang), sebaiknya tetapkan 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 oleh kunci atau rahasia di EdgeCacheKeyset.

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

Mengonfigurasi permintaan yang ditandatangani

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

Membuat kunci

Buat kunci yang digunakan Media CDN untuk menandatangani permintaan.

Membuat keyset

Buat keyset yang digunakan Media CDN untuk permintaan yang ditandatangani.

Memerlukan permintaan yang ditandatangani

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

  • REQUIRE_SIGNATURES untuk permintaan yang ditandatangani yang tidak menggunakan token.

  • REQUIRE_TOKENS untuk permintaan yang ditandatangani menggunakan token.

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

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

Jika signedRequestMode disetel ke REQUIRE_SIGNATURES atau REQUIRE_TOKENS, Media CDN akan memvalidasi hit dan miss cache. Hal ini mencakup semua permintaan ke origin.

Berikut adalah contoh konfigurasi Media CDN yang menerapkan permintaan yang ditandatangani 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

Untuk 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 origin

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

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

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

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

Merotasi kunci

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

Langkah selanjutnya

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

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