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, sertakan string yang dibuat dalam permintaan Anda. Media CDN kemudian akan 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 pada masa mendatang. Karena potensi perbedaan sinkronisasi jam, serta kondisi jaringan klien (misalnya, koneksi terputus dan percobaan ulang), sebaiknya tetapkan stempel waktu minimal satu menit ke depan, atau minimal durasi streaming video, mana pun yang lebih besar.

  • Memiliki tanda tangan yang dapat diverifikasi oleh kunci atau rahasia di EdgeCacheKeyset.

Anda tidak dapat menandatangani metode HTTP lainnya, seperti permintaan POST, PUT, atau DELETE. Jika Anda perlu menerbitkan URL yang ditandatangani untuk upload yang dilihat 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.

Mewajibkan permintaan yang ditandatangani

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

  • REQUIRE_SIGNATURES untuk permintaan yang ditandatangani yang tidak menggunakan token.

  • REQUIRE_TOKENS untuk permintaan yang ditandatangani yang menggunakan token.

Mengaktifkan permintaan yang ditandatangani pada rute akan mewajibkan semua permintaan ditandatangani atau memiliki token. Permintaan tanpa tanda tangan yang valid (seperti nama kunci yang tidak valid, tanda tangan atau token yang habis masa berlakunya, 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 Merotasi rahasia.

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

Berikut adalah contoh konfigurasi Media CDN yang mewajibkan 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 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 server asal

Jika 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 akan dianggap sebagai tanda tangan yang tidak valid untuk rute ini.

Untuk mencegah kasus saat penandatanganan salah dikonfigurasi, dan saat pengguna mencoba mengakses server asal Anda secara langsung, sebaiknya validasi bahwa permintaan juga ditandatangani di server asal. Pendekatan pertahanan mendalam untuk perlindungan konten membantu mencegah akses dan download konten berlisensi dan berbayar Anda yang tidak sah.

Untuk metode penandatanganan berbasis URL, di mana tanda tangan menjadi bagian dari parameter kueri atau disematkan sebagai komponen jalur URL, tanda tangan dan parameter terkait akan dihapus dari URL sebelum permintaan dikirim ke server asal. Tindakan ini akan mencegah tanda tangan menyebabkan masalah perutean saat server asal menangani permintaan. Untuk memvalidasi permintaan ini, Anda dapat menginspeksi header permintaan x-client-request-url, yang mencakup URL permintaan klien asli (bertanda tangan) sebelum penghapusan komponen bertanda tangan tersebut.

Untuk memvalidasi permintaan di server asal, 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 rahasia yang digunakan oleh Media CDN secara rutin. Sebaiknya rotasi kunci setiap 30 hingga 60 hari, tetapi hal ini tidak diwajibkan.

Langkah berikutnya

  • 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 a bucket Cloud Storage pribadi, lihat Konektivitas dan perlindungan server asal.