Mencegah distribusi tanpa izin

Halaman ini menjelaskan secara singkat opsi yang disediakan Media CDN untuk membantu mencegah distribusi konten Anda yang tidak sah.

Media CDN menawarkan opsi berikut untuk membantu melindungi konten Anda dari distribusi yang tidak sah.

  • Token (pendekatan yang direkomendasikan): Media CDN menggunakan token untuk membantu melindungi konten.

    Token adalah media pertukaran permintaan yang ditandatangani, seperti cookie yang ditandatangani, URI dengan parameter kueri, atau komponen jalur. Token valid yang ditampilkan oleh penonton digunakan untuk mengautentikasi akses ke konten Anda. Penonton dengan token yang tidak valid atau token yang hilang akan dicegah mengakses konten Anda.

    Anda dapat memilih untuk menggunakan autentikasi token tunggal atau token ganda. Token diperlukan untuk autentikasi token ganda.

    Saat autentikasi token ganda digunakan, Media CDN menggunakan dua token, token berdurasi singkat dan token berdurasi panjang.

    Google merekomendasikan token untuk integrasi baru karena menawarkan keuntungan berikut:

    • Memberikan kompatibilitas dengan jaringan penayangan konten (CDN) non-Google.
    • Mendukung penandatanganan khusus jalur.
    • Mengaktifkan penandatanganan beberapa header.
    • Menawarkan kontrol akses dan pencabutan terperinci.
    • Meminimalkan dampak token yang disusupi.
    • Dapat menyematkan data arbitrer dan ID sesi.
  • Tanda tangan: Media CDN menggunakan satu tanda tangan untuk membantu melindungi konten. Tanda tangan memungkinkan Anda melakukan penandatanganan URL lengkap, termasuk host dan protokol.

Anda dapat menggunakan kedua opsi tersebut secara bersamaan untuk membantu melindungi konten Anda.

Cara kerja autentikasi token ganda

Autentikasi token ganda menggunakan dua token untuk mengautentikasi permintaan ke konten Anda: token berdurasi singkat untuk memulai pemutaran, dan token berdurasi panjang untuk sisa sesi pemutaran.

Untuk menggunakan autentikasi token ganda, Anda mengonfigurasi server aplikasi untuk mengeluarkan token berdurasi singkat ke agen pengguna. Kemudian, Anda mengonfigurasi Media CDN untuk merespons token berdurasi singkat. Anda dapat menempatkan token dalam parameter kueri pilihan Anda, atau menempatkan token dalam cookie. Untuk informasi selengkapnya, lihat Menggunakan autentikasi token ganda.

Token berdurasi singkat yang dihasilkan oleh server aplikasi Anda membantu melindungi manifes utama (terkadang disebut playlist multivarian). Masa berlaku permintaan yang ditandatangani cukup singkat untuk meminta manifes utama, tetapi tidak untuk menonton semua konten yang terdapat dalam manifes.

Saat menerima permintaan dengan token durasi singkat yang diotorisasi, Media CDN akan membuat token durasi panjang yang ditandatangani. Anda dapat menggunakan token dalam parameter kueri bernama tunggal atau dalam cookie. Token berdurasi panjang mendukung penayangan program berdurasi penuh. Token berdurasi panjang yang ditandatangani yang dihasilkan oleh Media CDN menggunakan tanda tangan Ed25519 yang ditandatangani dengan kunci yang dikelola Google yang terkait dengan resource EdgeCacheKeyset.

Anda dapat menyesuaikan waktu habis masa berlaku token berdurasi pendek dan panjang. Sebagai praktik terbaik, Google merekomendasikan agar Anda mengonfigurasi waktu habis masa berlaku token berdurasi singkat yang dihasilkan di server aplikasi menjadi satu menit. Anda harus menetapkan waktu habis masa berlaku token berdurasi panjang yang dihasilkan Media CDN ke durasi yang lebih besar dari durasi konten Anda, hingga maksimum satu hari.

Alur permintaan untuk autentikasi token ganda

Berikut ini penjelasan alur permintaan:

  1. Pelihat meminta metadata dari server aplikasi Anda untuk media yang ingin mereka lihat. Server aplikasi Anda menampilkan URI manifes utama yang ditandatangani dengan token berdurasi singkat.

  2. Aplikasi pemutar Anda meminta manifes utama dari Media CDN. Permintaan menyertakan token durasi singkat sebagai nilai parameter kueri URI dalam format parameter kueri dengan nama tunggal.

  3. Media CDN memverifikasi token berdurasi singkat dan parameter yang ditandatangani token.

    1. Jika token valid, Media CDN akan membuat token tanda tangan berdurasi panjang. Media CDN menampilkan token dalam header Set-Cookie, atau dengan mengubah URI manifes dan segmen dalam manifes utama untuk menyertakan token.
    2. Jika token tidak valid, Media CDN akan merespons dengan respons HTTP 403 Forbidden.
  4. Aplikasi pemutar menerima manifes utama dari Media CDN, lalu meminta playlist media atau segmen media yang dirujuk dalam manifes utama. Permintaan harus menyertakan token berdurasi panjang, baik sebagai cookie yang ditandatangani maupun sebagai parameter URI.

  5. Media CDN memverifikasi token tanda tangan berdurasi panjang:

    1. Jika token berdurasi panjang valid untuk permintaan tertentu, Media CDN akan menayangkan konten yang diminta.
    2. Jika token berdurasi panjang tidak valid (karena token sudah tidak berlaku atau jalur tidak valid), Media CDN akan merespons dengan respons HTTP 403 Forbidden.
  6. Proses ini diulang hingga pemutaran media berakhir atau masa berlaku tanda tangan durasi lama berakhir.

Format token yang didukung untuk permintaan yang ditandatangani dengan token ganda

Permintaan yang ditandatangani dengan token ganda CDN Media mendukung beberapa format, bergantung pada jenis token.

Permintaan ditandatangani berdurasi singkat

Untuk permintaan bertanda tangan berdurasi singkat, Media CDN mendukung token yang ditandatangani dengan tanda tangan Ed25519 secara default. Anda juga dapat menggunakan kode autentikasi pesan berbasis hash (HMAC) dengan kunci simetris untuk kompatibilitas dengan kode aplikasi yang ada dan CDN lainnya.

Untuk menggunakan HMAC, Anda menggunakan Secret Manager untuk menyimpan secret HMAC. Kemudian, Anda memberikan akses ke akun layanan Media CDN untuk mengakses secret yang disimpan. Sebagai praktik terbaik, Google merekomendasikan penggunaan penandatanganan asimetris dengan tanda tangan Ed25519 untuk keamanan dan performa.

Akun layanan Media CDN dimiliki oleh project Media CDN, dan tidak ditampilkan dalam daftar akun layanan project Anda. Akun layanan hanya memberikan akses ke resource Media CDN di project yang Anda izinkan secara eksplisit.

Akun layanan memiliki format berikut:

service-PROJECT_NUMBER@gcp-sa-mediaedgefill.iam.gserviceaccount.com

Dengan PROJECT_NUMBER sebagai nomor project Anda.

Untuk mengaktifkan akun layanan Media CDN, buat setidaknya satu resource Media CDN, seperti EdgeCacheOrigin.

Permintaan yang ditandatangani berdurasi lama

Untuk permintaan yang ditandatangani berdurasi lama, Media CDN menggunakan tanda tangan Ed25519 yang ditandatangani dengan kunci yang dikelola Google dan dikaitkan dengan resource EdgeCacheKeyset.

CDN Media mendukung format token tunggal untuk token berdurasi panjang, yang dapat digunakan dalam parameter kueri bernama tunggal untuk streaming HLS, atau dalam cookie.

Cara kerja permintaan yang ditandatangani

Permintaan yang ditandatangani menggunakan tanda tangan atau token untuk memverifikasi bahwa setiap pelihat telah diautentikasi untuk mengakses konten. Anda dapat mengonfigurasi Media CDN agar aksesnya dicakup ke salah satu hal berikut:

  • URI persis atau awalan URI untuk waktu terbatas
  • Klien tertentu
  • Untuk permintaan yang ditandatangani menggunakan token, hingga lima jalur dengan karakter pengganti

Untuk menggunakan permintaan yang ditandatangani, Anda membuat kunci untuk menandatangani dan memverifikasi tanda tangan. Kemudian, Anda mengonfigurasi rute, yang memungkinkan Anda mengoptimalkan perilaku berdasarkan jenis konten, atribut klien, dan persyaratan keaktualan Anda. Permintaan yang ditandatangani dapat diterapkan berdasarkan per rute, yang membantu Anda melindungi endpoint tertentu.

Setiap layanan Media CDN dapat menggunakan kumpulan beberapa kunci. Kumpulan kunci juga dikenal sebagai kumpulan kunci. Keyset memungkinkan Anda memutar kunci dan mendistribusikan kunci pribadi di seluruh infrastruktur Anda sendiri tanpa gangguan.

Anda dapat mengonfigurasi Media CDN untuk menggunakan permintaan atau token yang ditandatangani untuk membantu melindungi konten.

Untuk permintaan yang ditandatangani menggunakan token, Anda dapat menempatkan token di salah satu hal berikut:

  • Dalam parameter kueri pilihan Anda
  • Dalam cookie

Untuk mengetahui informasi selengkapnya, lihat Membuat token.

Untuk permintaan yang ditandatangani menggunakan tanda tangan, Anda dapat menggunakan salah satu format berikut:

  • URI persis dengan parameter kueri: Anda menentukan URLPrefix dengan URI persis dan menambahkan parameter kueri yang sama ke beberapa URI.
  • Awalan URI dengan parameter kueri: Anda menentukan URLPrefix dengan awalan URI dan menambahkan parameter kueri yang sama ke beberapa URI.
  • Komponen jalur: Anda menentukan komponen jalur, yang memungkinkan URI manifes relatif mewarisi komponen URI yang ditandatangani.
  • Cookie yang ditandatangani: Anda menentukan awalan URI dalam cookie, yang memungkinkan akses ke URI apa pun dengan awalan yang Anda tentukan.

Untuk mengetahui informasi selengkapnya, lihat Membuat tanda tangan.

Pertimbangan

Bagian berikut membahas berbagai faktor yang perlu dipertimbangkan untuk membantu mencegah distribusi konten Anda tanpa izin.

Pertimbangan keamanan

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

Sebaiknya validasi permintaan di origin Anda. Meskipun Media CDN menolak permintaan yang tidak valid dan tidak ditandatangani untuk rute yang memerlukan tanda tangan, klien mungkin menemukan cara untuk mengakses origin Anda secara langsung. Lapisan validasi tambahan membantu memberikan pendekatan pertahanan menyeluruh untuk melindungi konten Anda.

Tabel berikut menjelaskan skenario saat Media CDN memvalidasi permintaan:

Permintaan memiliki tanda tangan Tanda tangan valid? signedRequestMode Perilaku Kode status
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 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 Tanda tangan atau token divalidasi, dan respons ditayangkan dengan konten dari cache atau asal. HTTP 200
Ya Ya Tidak ada atau DISABLED Tidak ada validasi yang dilakukan, dan respons ditayangkan kepada pengguna secara langsung. HTTP 200
Ya Tidak Tidak ada atau DISABLED Tidak ada validasi yang dilakukan, dan respons ditayangkan kepada pengguna secara langsung. HTTP 200

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

Jika aplikasi Anda mengirimkan kode status yang dapat di-cache ke permintaan yang tidak valid, permintaan mendatang yang valid mungkin salah ditolak.

Batas URI

Sebagian besar klien HTTP modern mendukung URI dengan panjang hingga 8.000 karakter. Namun, beberapa perangkat lama atau khusus mungkin memiliki batas yang lebih ketat. Secara umum, URI yang ditandatangani menambahkan sekitar 125 karakter ke URI permintaan, yang mencakup hal berikut:

  • Jika semua nama kolom digunakan, sekitar 67 karakter untuk setiap kolom (seperti Expires= dan KeyName=).
  • Untuk stempel waktu Unix, 10 karakter
  • Untuk KeyName, lima karakter
  • Untuk nilai Signature yang dienkode base64, 43 karakter

Sebagai praktik terbaik, pastikan URI tidak lebih dari 2.000 karakter menggunakan parameter kueri sebagai token. URI yang lebih pendek mencegah perangkat mengirim URI yang terpotong ke CDN Media.

Perangkat streaming video lama

Beberapa perangkat streaming video lama mungkin tidak sepenuhnya mendukung lampiran cookie ke permintaan segmen media atau manifes. Jika Anda memiliki perangkat dengan masalah umum dalam menangani cookie HTTP, konfigurasikan Media CDN untuk menggunakan parameter kueri untuk permintaan yang ditandatangani dan pertukaran token ganda.

Anda bertanggung jawab penuh atas kepatuhan izin dan privasi yang diperlukan saat menggunakan cookie untuk menukar token berdurasi singkat. Saat Media CDN dikonfigurasi untuk menggunakan permintaan yang ditandatangani dengan token ganda, Google akan menerbitkan dan mengelola cookie yang digunakan untuk token berdurasi lama.

Penagihan

Untuk mempelajari lebih lanjut cara penagihan Secret Manager, lihat Harga.

Pengambilan secret oleh Media CDN di-cache secara internal, sehingga secara signifikan mengurangi frekuensi pengambilan secret dari Secret Manager. Pengambilan yang dikurangi juga secara signifikan mengurangi frekuensi akses yang diamati dan ditagih oleh Secret Manager.

Untuk mengetahui informasi selengkapnya tentang penyimpanan secret ke dalam cache di Media CDN, lihat Ringkasan kunci.