Menggunakan permintaan yang ditandatangani

Untuk membuat permintaan bertanda tangan, tulis string yang menyertakan parameter yang jelaskan 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 mengambil tindakan berdasarkan data tersebut.

Persyaratan permintaan yang ditandatangani

Permintaan yang ditandatangani harus memenuhi persyaratan berikut:

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

  • Menetapkan waktu habis masa berlaku di masa mendatang. Karena potensi jam perbedaan sinkronisasi, serta kondisi jaringan klien (untuk Misalnya, memutuskan koneksi dan mencoba ulang), sebaiknya tetapkan stempel waktu, kurang dari satu menit pada waktu yang akan datang, 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 yang ditandatangani 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 telah kedaluwarsa atau memiliki URL tidak cocok atau kunci salah. Tanda tangan atau token yang tidak valid ditolak di edge CDN. HTTP 403
Ya Ya REQUIRE_SIGNATURES atau REQUIRE_TOKENS Validasi tanda tangan atau token dan respons dengan konten dari atau pengambilan dari origin. HTTP 200
Ya Ya Tidak ada atau DISABLED Tidak ada validasi yang dilakukan, dan respons disajikan kepada pengguna secara langsung. HTTP 200
Ya Tidak Tidak ada atau DISABLED Tidak ada validasi yang dilakukan, dan respons disajikan kepada pengguna secara langsung. HTTP 200

Bila aplikasi mendeteksi tanda tangan yang tidak valid, pastikan bahwa aplikasi 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 data bertanda tangan permintaan.

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 mengizinkan hanya permintaan yang ditandatangani untuk mengakses resource, Anda dapat melampirkan daftar kunci ke rute dan tetapkan 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 pada rute mengharuskan semua permintaan ditandatangani atau menampilkan token. Permintaan tanpa tanda tangan yang valid (misalnya kunci yang tidak valid nama, tanda tangan atau token kedaluwarsa, tanda tangan tidak cocok, dan sebagainya), gagal.

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

Jika signedRequestMode ditetapkan ke REQUIRE_SIGNATURES atau REQUIRE_TOKENS, Media CDN memvalidasi cache ditemukan dan cache tidak ditemukan. Hal ini mencakup semua terhadap origin.

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

gcloud edge-cache services describe prod-media-service
{i>Output<i}:
...
  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 menyetel signedRequestMode ke DISABLED dan menghapus referensi ke signedRequestKeyset.

Memvalidasi permintaan di asal

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

Untuk mencegah kasus kesalahan konfigurasi penandatanganan, dan ketika pengguna mencoba mengakses origin Anda secara langsung, sebaiknya memvalidasi bahwa permintaan juga ditandatangani di tempat asal. Pertahanan mendalam Pendekatan terhadap perlindungan konten membantu mencegah akses dan download yang tidak sah konten berlisensi dan berbayar Anda.

Untuk metode penandatanganan berbasis URL, dengan tanda tangan sebagai bagian dari kueri parameter khusus atau disematkan sebagai komponen jalur URL, tanda tangan dan parameter dihapus dari URL sebelum permintaan dikirim ke tempat asal. Hal ini mencegah tanda tangan menyebabkan masalah perutean saat origin akan menangani permintaan. Untuk memvalidasi permintaan ini, Anda dapat memeriksa Header permintaan x-client-request-url, yang menyertakan header asli (ditandatangani) URL permintaan klien 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 kunci dan karena rotasi kunci.

Merotasi kunci

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

Langkah selanjutnya

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

  • Untuk mengonfigurasi Media CDN dan bucket Cloud Storage pribadi, lihat Perlindungan dan konektivitas origin.