Menggunakan autentikasi token ganda

Untuk menerapkan autentikasi token ganda saat pelihat mengakses resource streaming, Anda mengonfigurasi rute terpisah. Rute adalah konfigurasi yang cocok untuk Media CDN dan mengarahkan traffic HTTP ke origin. Media CDN mendukung rute untuk live streaming HTTP (HLS) atau Referensi Dynamic Adaptive Streaming over HTTP (DASH). Untuk informasi selengkapnya tentang rute di Media CDN, lihat Mengonfigurasi rute layanan.

Untuk streaming HLS, Media CDN mendukung autentikasi dual-token melalui cookie dan parameter kueri URL (tanpa cookie). Untuk aliran data DASH, Media CDN hanya mendukung autentikasi dual-token berbasis cookie.

Halaman ini menjelaskan cara mengonfigurasi rute Media CDN untuk membantu melindungi konten dengan menggunakan otentikasi token ganda.

Sebelum memulai

Lakukan tindakan berikut:

  1. Untuk token berdurasi singkat, pilih salah satu algoritma tanda tangan berikut:

    • Tanda tangan Ed25519
    • Kode autentikasi pesan berbasis hash (HMAC) simetris

    Anda dapat mengaktifkan algoritma penandatanganan HMAC simetris hanya untuk rute yang dikonfigurasi untuk menghasilkan token berdurasi panjang yang baru. Sebaiknya gunakan Ed25519 ciri khas untuk performa dan keamanan yang optimal serta HMAC kunci simetris hanya jika diperlukan untuk kompatibilitas dengan CDN lain.

  2. Sertakan kunci yang diperlukan dalam resource EdgeCacheKeyset.

    Token harus ditandatangani atau diverifikasi dengan kunci dalam EdgeCacheKeyset resource Anda Keyset harus menyertakan kunci yang benar untuk kunci yang dipilih algoritma tanda tangan. Tabel berikut menjelaskan setiap tanda tangan algoritma dan kunci yang diperlukan.

    Algoritme tanda tangan Kunci yang diperlukan dalam keyset
    Ed25519 Kunci publik
    HMAC-SHA1 Kunci bersama validasi
    HMAC-SHA256 Kunci bersama validasi

    Sebagai praktik terbaik, buat dua {i>keyset <i}terpisah, satu untuk token berdurasi singkat dan token lain untuk token berdurasi panjang.

    Namun, jika Anda menggunakan DASH dan deskripsi presentasi media dinamis (MPD), Anda harus menggunakan set tombol yang sama untuk token berdurasi panjang dan jangka pendek.

  3. Untuk token berdurasi panjang, pilih salah satu format token berikut:

    • Cookie
    • Parameter kueri URL

Menyiapkan token berdurasi singkat

Bergantung pada algoritma tanda tangan yang ingin Anda gunakan, siapkan video berdurasi singkat token dengan menggunakan salah satu opsi berikut.

Tanda tangan Ed25519

  1. Buat kunci pribadi:

    openssl genpkey -algorithm ed25519 -outform PEM -out SSL_KEY_NAME.private.key
    

    Ganti SSL_KEY_NAME dengan nama kunci.

  2. Buat kunci publik dari kunci pribadi:

    openssl pkey -outform DER -pubout -in SSL_KEY_NAME.private.key |\
    tail -c +13 |\
    python3 -c "import base64, sys; print(('%s' % base64.urlsafe_b64encode(sys.stdin.buffer.read()))[2:-1])"
    
  3. Buat keyset baru dengan satu kunci publik:

    Konsol

    1. Di konsol Google Cloud, buka halaman Media CDN.

      Buka Media CDN

    2. Klik tab Keysets.

    3. Klik Create keyset.

    4. Untuk Name, masukkan nama keyset yang unik.

    5. Opsional: Untuk Description, masukkan deskripsi untuk kumpulan kunci Anda.

    6. Opsional: Klik Tambahkan label, lalu masukkan satu atau beberapa nilai kunci pasangan untuk {i>keyset <i}Anda.

    7. Klik Add public key, lalu lakukan langkah berikut:

      1. Untuk ID, masukkan ID alfanumerik.
      2. Pilih Enter the value, lalu tentukan ID yang dienkode dengan base64 kunci publik Ed25519 Anda.
    8. Klik Create keyset.

    gcloud

    Gunakan perintah gcloud edge-cache keysets create.

    gcloud edge-cache keysets create SHORT_KEYSET_NAME \
      --public-key='id=SSL_PUBLIC_KEY_NAME,value=SSL_PUBLIC_KEY_VALUE'
    

    Ganti kode berikut:

    • SHORT_KEYSET_NAME: keyset unik nama—misalnya, prod-vod-keyset
    • SSL_PUBLIC_KEY_NAME: nama Kunci publik SSL
    • SSL_PUBLIC_KEY_VALUE: nilai Kunci publik SSL

    Untuk meninjau kunci yang terkait dengan set kunci tersebut, gunakan metode Perintah gcloud edge-cache keysets describe.

    gcloud edge-cache keysets describe prod-vod-keyset
    

    Outputnya mirip dengan hal berikut ini:

    name: prod-vod-keyset
    description: "Keyset for prod.example.com"
    publicKeys:
    - id: "key-20200918"
      value: "DThVLjhAKm3VYOvLBAwFZ5XbjVyF98Ias8NZU0WEM9w"
    - id: "key-20200808"
      value: "Lw7LDSaDUrbDdqpPA6JEmMF5BA5GPtd7sAjvsnh7uDA="
    

    Terraform

    resource "google_network_services_edge_cache_keyset" "default" {
      name        = "prod-vod-keyset"
      description = "Keyset for prod.example.com"
      public_key {
        id    = "key-20200918"
        value = "FHsTyFHNmvNpw4o7-rp-M1yqMyBF8vXSBRkZtkQ0RKY" # Update Ed25519 public key
      }
      public_key {
        id    = "key-20200808"
        value = "Lw7LDSaDUrbDdqpPA6JEmMF5BA5GPtd7sAjvsnh7uDA=" # Update Ed25519 public key
      }
    }

HMAC kunci simetris

  1. Jika Anda belum pernah menggunakan Secret Manager sebelumnya, mengonfigurasi Secret Manager.

  2. Membuat secret.

  3. Menambahkan versi rahasia dalam format biner.

  4. Memberikan peran Akses Secret Manager (roles/secretmanager.secretAccessor) ke Media CDN akun layanan:

    Konsol

    1. Di konsol Google Cloud, buka halaman Secret Manager.

      Buka Secret Manager

    2. Pilih kotak centang di samping nama rahasia.

    3. Klik Tampilkan Panel Info.

    4. Di panel info, klik Tambah akun utama.

    5. Untuk New principals, masukkan layanan Media CDN akun dalam format ini:

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

      Ganti PROJECT_NUMBER dengan project Anda angka

    6. Untuk Select a role, pilih Secret Manager, lalu pilih Aksesor Rahasia Secret Manager.

    gcloud

    Gunakan perintah gcloud secrets add-iam-policy-binding.

    gcloud secrets add-iam-policy-binding projects/PROJECT_NUMBER/secrets/SECRET_ID \
      --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-mediaedgefill.iam.gserviceaccount.com" \
      --role="roles/secretmanager.secretAccessor"
    

    Ganti kode berikut:

    • PROJECT_NUMBER: nomor project Anda
    • SECRET_ID: ID rahasia
  5. Mengakses versi secret Anda dan menyalin jalur rahasia, termasuk nomor versinya.

  6. Buat keyset baru dengan rahasia bersama dalam kunci bersama validasi:

    Konsol

    1. Di konsol Google Cloud, buka halaman Media CDN.

      Buka Media CDN

    2. Klik tab Keysets.

    3. Klik Create keyset.

    4. Untuk Name, masukkan nama keyset yang unik.

    5. Opsional: Untuk Description, masukkan deskripsi untuk kumpulan kunci Anda.

    6. Opsional: Klik Tambahkan label, lalu masukkan satu atau beberapa nilai kunci pasangan untuk {i>keyset <i}Anda.

    7. Untuk menentukan kunci bersama validasi, klik Tambahkan kunci bersama validasi, lalu lakukan hal berikut:

      1. Untuk Secret, pilih rahasia dari daftar, masukkan rahasia secara manual dengan menentukan buat secret baru dan kemudian memilihnya.

      2. Untuk Secret Version, pilih versi dari daftar atau buat versi secret baru dan kemudian memilihnya.

    8. Klik Create keyset.

    gcloud

    Gunakan perintah gcloud edge-cache keysets create.

    gcloud edge-cache keysets create SHORT_KEYSET_NAME \
      --validation-shared-key='secret_version=projects/PROJECT_NUMBER/secrets/SECRET_ID/versions/KEY_VERSION'
    

    Ganti kode berikut:

    • SHORT_KEYSET_NAME: nama unik untuk kumpulan tombol—misalnya, prod-vod-keyset
    • PROJECT_NUMBER: project ID Anda
    • SECRET_ID: ID resource rahasia
    • KEY_VERSION: versi rahasia yang yang ingin Anda gunakan

Menyiapkan token berdurasi panjang

Kunci yang dikelola Google dicakup berdasarkan keyset. Itu berarti bahwa dua {i>keyset <i}yang berbeda memiliki kunci yang dikelola Google dan berbeda. Kunci yang dikelola Google dirotasi secara berkala.

Siapkan token berdurasi panjang menggunakan salah satu opsi berikut:

Konsol

  1. Membuat atau mengubah kumpulan kunci.

  2. Di bagian Kunci, pilih Gunakan kunci yang dikelola Google untuk token ganda autentikasi.

gcloud dan YAML

Gunakan salah satu opsi berikut:

  • Buat kunci penandatanganan yang dikelola Google:

    gcloud edge-cache keysets create LONG_KEYSET_NAME \
        --public-key='id=google-managed-key,managed=true'
    

    Ganti LONG_KEYSET_NAME dengan kunci nama—misalnya, prod-vod-keyset-long.

  • Mengubah keyset yang ada:

    1. Ekspor keyset Anda ke file YAML. Gunakan perintah gcloud edge-cache keysets export.

      gcloud edge-cache keysets export LONG_KEYSET_NAME \
         --destination=prod-vod-keyset-long.yaml
      
    2. Di editor teks atau alat manajemen konfigurasi Anda, edit konfigurasi keyset agar terlihat mirip dengan berikut ini:

      name: projects/my-project/locations/global/edgeCacheKeysets/LONG_KEYSET_NAME
      publicKeys:
      - id: some-key
        value: MC4CAQAwBQYDK2VwBCIEINV2iYugIWBuvGBJUQ_Ab69E4v4zcVqvgYHw-iZxGzcd
      - id: google-managed-key
        managed: true
      
    3. Impor keyset yang diedit. Gunakan perintah gcloud edge-cache keysets import:

      gcloud edge-cache keysets import LONG_KEYSET_NAME \
          --source=prod-vod-keyset-long.yaml
      

Anda dapat menyertakan kunci publik tambahan dalam keyset token berdurasi panjang. Tujuan {i>keyset<i} dapat memiliki paling banyak tiga kunci publik. Dalam praktiknya, ini berarti bahwa dapat memiliki dua kunci yang dikelola pengguna dan satu kunci yang dikelola Google.

Media CDN selalu menggunakan kunci yang dikelola Google untuk membuat token. Kunci yang dikelola pengguna hanya dapat digunakan untuk verifikasi.

Menyertakan kunci publik tambahan berguna untuk memungkinkan aplikasi pemutar Anda mengakses playlist media dan segmen media dengan menggunakan permintaan bertanda tangan yang yang dihasilkan oleh kunci pribadi Anda.

Mengonfigurasi pertukaran token

Bagian ini menunjukkan cara mengonfigurasi pertukaran token dengan membuat beberapa rute. Rute memungkinkan Anda mengoptimalkan perilaku berdasarkan jenis konten, klien, dan persyaratan keaktualan Anda. Dalam contoh berikut, kami menggunakan rute untuk mengonfigurasi pertukaran token untuk setiap bagian permintaan media.

Mengonfigurasi rute manifes utama untuk mewajibkan token berdurasi singkat

Konfigurasi Media CDN untuk mewajibkan token berdurasi singkat di rute manifes utama.

Konsol

Aktifkan autentikasi token berdurasi singkat di rute manifes utama:

  1. Di konsol Google Cloud, buka halaman Media CDN.

    Buka Media CDN

  2. Untuk membuka halaman Details layanan, klik nama layanan.

  3. Untuk beralih ke mode edit, klik tombol Edit.

  4. Untuk membuka bagian Routing, klik Next.

  5. Luaskan aturan host tempat Anda ingin menambahkan manifes utama aturan rute.

  6. Klik Tambahkan aturan rute.

    Atau, untuk mengedit aturan rute, klik Edit di baris masing-masing.

  7. Di panel Edit route rule, untuk Priority, tetapkan nilai—untuk contoh, 1.

  8. Untuk Description, berikan deskripsi singkat yang dapat membantu mengidentifikasi aturan dalam daftar aturan.

  9. Di bagian Pencocokan, klik Tambahkan kondisi pencocokan. Lalu, lakukan berikut ini:

    1. Untuk Jenis pencocokan, pilih Pencocokan template jalur.
    2. Untuk Pencocokan jalur, tentukan nama atau template jalur untuk File playlist utama HLS (M3U8) atau DASH (MPD). Untuk selengkapnya informasi selengkapnya, lihat Pencocokan jalur.
  10. Klik Advanced configurations.

  11. Di bagian Tindakan rute, klik Tambahkan item.

  12. Untuk Jenis, pilih Kebijakan CDN.

  13. Di bagian Permintaan yang ditandatangani, untuk Mode permintaan yang ditandatangani, pilih Mewajibkan token.

  14. Di bagian Signed request keyset, lakukan hal berikut:

    1. Untuk menentukan set kunci untuk token berdurasi singkat, klik Pilih keyset lalu pilih keyset token berdurasi singkat.

      Atau, untuk membuat {i>keyset<i} baru yang memiliki kunci yang Anda butuhkan, klik Create new keyset. Kemudian, pilih.

    2. Untuk SignatureAlgorithm, pilih Ed25519 using public key.

    3. Untuk Parameter kueri token, pertahankan nilai default, edge-cache-token.

      Atau, jika Anda berencana menggunakan parameter kueri URL manifes HLS alih-alih cookie untuk otentikasi, tentukan parameter dalam tempat untuk menyimpan token permintaan.

    4. Untuk Max time to live, tentukan, dalam detik, masa aktif maksimum token permintaan masuk.

  15. Untuk menyimpan perubahan di bagian Tindakan rute, klik Selesai.

  16. Untuk menyimpan perubahan pada aturan rute, klik Simpan.

gcloud dan YAML

  1. Mengekspor konfigurasi Media CDN menjadi file YAML. Gunakan Perintah gcloud edge-cache services export.

    gcloud edge-cache services export SERVICE_NAME \
        --destination=FILENAME.yaml
    

    Ganti kode berikut:

    • SERVICE_NAME: Nama layanan Anda.
    • FILENAME : nama file YAML Anda
  2. Untuk mengaktifkan autentikasi token berdurasi singkat di manifes utama aturan rute, di bagian cdnPolicy rute pada file YAML, menentukan konfigurasi signedTokensOptions.

      pathMatchers:
      - name: "ROUTE_NAME"
        routeRules:
        - priority: 1
          description: "ROUTE_DESCRIPTION"
          origin: "ORIGIN_NAME"
          matchRules:
          - pathTemplateMatch: "/MANIFEST_OR_PLAYLIST"
          routeAction:
            cdnPolicy:
              cacheMode: CACHE_ALL_STATIC
              signedRequestMode: REQUIRE_TOKENS
              signedRequestKeyset: SHORT_KEYSET_NAME
              signedRequestMaximumExpirationTtl: SIGNED_REQUEST_MAXIMUM_EXPIRATION_TIME
              signedTokenOptions:
                tokenQueryParameter: SHORT_TOKEN_NAME
    

    Ganti kode berikut:

    • ROUTE_NAME: nama aturan rute
    • ROUTE_DESCRIPTION: deskripsi aturan rute
    • ORIGIN_NAME: nama origin
    • MANIFEST_OR_PLAYLIST: nama HLS file primary playlist (M3U8) atau DASH manifest (MPD). Untuk selengkapnya informasi selengkapnya, lihat Pencocokan jalur.
    • SHORT_KEYSET_NAME: nama keyset yang akan digunakan untuk token berdurasi singkat
    • SIGNED_REQUEST_MAXIMUM_EXPIRATION_TIME: waktu habis masa berlaku untuk permintaan yang ditandatangani—misalnya, 600s. Sebagai informasi selengkapnya, lihat signedRequestMaximumExpirationTtl.
    • Opsional: SHORT_TOKEN_NAME: kueri parameter untuk menemukan token pendek. Nilai defaultnya adalah edge-cache-token. Untuk informasi selengkapnya, lihat SignedTokenOptions.

    Saat menggunakan HMAC kunci simetris, di bagian signedTokenOptions, tambahkan allowedSignatureAlgorithms dengan nilainya sebagai HMAC_SHA_256:

           allowedSignatureAlgorithms:
           - HMAC_SHA_256
    
  3. Untuk mengupdate layanan, impor konfigurasi Media CDN Anda dari file YAML. Gunakan Perintah gcloud edge-cache services import.

    gcloud edge-cache services import SERVICE_NAME \
        --source=FILENAME.yaml
    

Tindakan ini akan menyelesaikan proses pengaktifan autentikasi token tunggal.

Untuk mengonfigurasi autentikasi dual-token, lanjutkan ke bagian berikut.

Mengonfigurasi aturan rute manifes utama untuk menghasilkan token berdurasi panjang

Konfigurasi Media CDN untuk menghasilkan token berdurasi panjang di rute manifes utama. Pilih cookie atau parameter kueri URL untuk menghasilkan token-token tersebut.

Konsol

Mengubah aturan rute manifes utama sehingga Media CDN dapat menghasilkan token berdurasi panjang di rute:

  1. Di halaman Edit route rule, klik Advanced configurations.
  2. Untuk Jenis, pilih Kebijakan CDN.
  3. Luaskan Autentikasi token ganda.
  4. Untuk Tindakan tanda tangan, pilih Buat token berdurasi panjang baru.
  5. Untuk Signature type, pilih salah satu opsi berikut:

    • melalui cookie (untuk streaming HLS dan DASH): mengonfigurasi Media CDN untuk menampilkan Edge-Cache-Cookie dengan respons manifes utama.
    • melalui parameter kueri URL manifes HLS (tanpa cookie): mengonfigurasi Media CDN untuk memanipulasi manifes utama HLS dengan menambahkan token berdurasi panjang ke setiap URL.
  6. Di bagian Buat token berdurasi panjang baru, lakukan tindakan berikut:

    1. Untuk menentukan keyset untuk token berdurasi panjang, klik Pilih keyset lalu pilih keyset token berdurasi panjang.

      Atau, klik Create new keyset untuk membuat keyset baru yang memiliki kunci yang Anda butuhkan. Kemudian, pilih.

    2. Untuk Token TTL, tentukan, dalam detik, masa aktif maksimum token long-duration.

    3. Untuk Jenis tanda tangan, jika Anda memilih opsi melalui cookie, lalu, di bagian Parameter yang disalin, pilih parameter yang Anda inginkan untuk disalin oleh Media CDN dari sesi token ke token berdurasi panjang. Untuk menggunakan otentikasi token ganda, Anda harus memilih salah satu PathGlobs (atau salah satu aliasnya, acl atau paths) atau URLPrefix.

      Jika Anda memilih opsi melalui parameter kueri URL manifes HLS, untuk Parameter kueri token, pertahankan nilai default, edge-cache-token.

  7. Untuk menyimpan perubahan di bagian Tindakan rute, klik Selesai.

  8. Untuk menyimpan perubahan pada aturan rute, klik Simpan.

    Sebuah pesan akan muncul yang menanyakan apakah Anda ingin membuat rute untuk media {i>playlist<i} dan segmen secara otomatis atau manual. Jika Anda memilih opsi otomatis, satu rute baru akan dibuat untuk tanda tangan cookie dan dua rute untuk tanda tangan tanpa cookie. Jika Anda memilih manual , lanjutkan ke bagian berikutnya.

gcloud dan YAML

Ubah bagian addSignatures dari aturan rute manifes utama agar Media CDN dapat membuat token berdurasi panjang di rute:

Cookie

          addSignatures:
            actions:
              - GENERATE_COOKIE
            keyset: LONG_KEYSET_NAME
            tokenTtl: TOKEN_EXPIRATION_TIME
            copiedParameters:
              - PathGlobs
              - SessionID

Ganti kode berikut:

  • LONG_KEYSET_NAME: nama keyset token berdurasi panjang

  • TOKEN_EXPIRATION_TIME: waktu habis masa berlaku token berdurasi panjang—misalnya, 86400s untuk satu hari waktu habis masa berlaku

Contoh kode ini mengimplementasikan perubahan berikut:

  • addSignatures.actions: GENERATE_COOKIE: mengonfigurasi Media CDN untuk menampilkan Edge-Cache-Cookie dengan respons manifes utama

  • copiedParameters.PathGlobs: mengonfigurasi Media CDN untuk menyalin PathGlobs dari token berdurasi singkat ke durasi panjang sebelumnya yang benar. Untuk menggunakan autentikasi dual-token, Anda harus menggunakan copiedParameters.PathGlobs atau copiedParameters.URLPrefix. Untuk selengkapnya informasi selengkapnya, lihat copiedParameters.

  • Opsional: copiedParameters.SessionID: mengonfigurasi Media CDN untuk menyalin SessionID dari video berdurasi singkat token ke token berdurasi panjang

Saat tindakan GENERATE_COOKIE diterapkan, Media CDN menampilkan header Set-Cookie yang mirip dengan yang berikut ini dengan header respons manifes:

Set-Cookie: Edge-Cache-Cookie=PathGlobs=PATHS~SessionID=SESSION_ID~Expires=EXPIRATION~_GO=Generated~Signature=SIGNATURE

Parameter kueri URL

          addSignatures:
            actions:
              - GENERATE_TOKEN_HLS_COOKIELESS
            keyset: LONG_KEYSET_NAME
            tokenTtl: TOKEN_EXPIRATION_TIME
            copiedParameters:
              - PathGlobs
              - SessionID
            tokenQueryParameter: LONG_TOKEN_NAME

Ganti kode berikut:

  • LONG_KEYSET_NAME: nama set tombol durasi panjang

  • TOKEN_EXPIRATION_TIME: masa berlaku waktu token berdurasi panjang—misalnya, 86400s untuk waktu habis masa berlaku satu hari

Contoh kode ini mengimplementasikan perubahan berikut:

  • addSignatures.actions: GENERATE_TOKEN_HLS_COOKIELESS: mengonfigurasi Media CDN untuk memanipulasi peristiwa utama HLS manifes dengan menambahkan token berdurasi panjang ke setiap URI yang ada.

  • copiedParameters.PathGlobs: mengonfigurasi Media CDN untuk menyalin PathGlobs dari token berdurasi singkat ke durasi panjang sebelumnya yang benar. Untuk menggunakan otentikasi token ganda, Anda harus menggunakan salah satu copiedParameters.PathGlobs atau copiedParameters.URLPrefix. Untuk selengkapnya informasi selengkapnya, lihat copiedParameters.

  • Opsional: copiedParameters.SessionID: mengonfigurasi Media CDN untuk menyalin SessionID dari token berdurasi singkat ke token long-duration.

  • Opsional: LONG_TOKEN_NAME: kueri untuk memasukkan token panjang yang dihasilkan. Nilai defaultnya adalah edge-cache-token. Untuk informasi selengkapnya, lihat tokenQueryParameter.

File manifes berikut menunjukkan GENERATE_TOKEN_HLS_COOKIELESS tindakan diterapkan:

#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=1280000,AVERAGE-BANDWIDTH=1000000
http://example.com/HLS_PRIMARY_PLAYLIST.m3u8?LONG_TOKEN_NAME=PathGlobs=PATHS~SessionID=SESSION_ID~Expires=EXPIRATION~_GO=Generated~Signature=SIGNATURE

Media CDN memverifikasi token berdurasi singkat, lalu akan menghasilkan dan menyimpan token berdurasi panjang Parameter kueri LONG_TOKEN_NAME.

Mengonfigurasi rute playlist dan segmen media yang memerlukan token berdurasi panjang

Mengonfigurasi rute playlist dan segmen media yang memerlukan durasi panjang token kata.

Konsol

Cookie

Buat aturan rute untuk playlist media dan rute segmen:

  1. Di halaman Edit Edge Cache service, di bagian Routing, klik aturan {i>host<i} yang memiliki rute manifes utama.
  2. Klik Tambahkan aturan rute.
  3. Di panel Edit route rule, untuk Priority, tetapkan nilai yang lebih besar daripada rute manifes utama—misalnya, 2. Nilai yang lebih tinggi menunjukkan prioritas yang lebih rendah.
  4. Untuk Description, berikan deskripsi singkat yang dapat membantu mengidentifikasi aturan dalam daftar aturan.
  5. Tetapkan kolom berikut seperti yang disarankan:

    • Pilih origin: sama seperti untuk aturan rute manifes utama
    • Tambahkan kondisi pencocokan: sama seperti untuk rute manifes utama aturan
    • Jenis: Kebijakan CDN
    • Mode permintaan yang ditandatangani: Memerlukan token
    • Pilih keyset: sama seperti untuk token berdurasi panjang
    • Algoritma tanda tangan: sama seperti untuk aturan rute manifes utama
  6. Luaskan Autentikasi token ganda.

  7. Untuk Tindakan tanda tangan, pertahankan nilai default Tidak ada.

  8. Klik Selesai, lalu klik Simpan.

Parameter kueri URL

  1. Buat aturan rute untuk playlist media.

    1. Di halaman Edit Edge Cache service, di bagian Routing, klik aturan {i>host<i} yang memiliki rute manifes utama.
    2. Klik Tambahkan aturan rute.
    3. Di panel Edit route rule, untuk Priority, tetapkan nilai lebih besar dari rute manifes utama—untuk contoh, 2. Nilai yang lebih tinggi menunjukkan prioritas yang lebih rendah.
    4. Untuk Description, berikan deskripsi singkat yang dapat membantu mengidentifikasi aturan dalam daftar aturan.
    5. Tetapkan kolom berikut seperti yang disarankan:

      • Pilih origin: sama seperti untuk rute manifes utama aturan
      • Tambahkan kondisi kecocokan: sama seperti untuk manifes utama aturan rute
      • Jenis: Kebijakan CDN
      • Mode permintaan yang ditandatangani: Memerlukan token
      • Pilih keyset: sama seperti untuk token berdurasi panjang
      • Algoritma tanda tangan: sama seperti untuk manifes utama aturan rute
      • Parameter kueri token: sama seperti untuk durasi panjang token
    6. Luaskan Autentikasi token ganda.

    7. Untuk Tindakan tanda tangan, pilih Terapkan berdurasi panjang yang sudah ada token tersebut.

      Opsi ini hanya diaktifkan setelah Media CDN memverifikasi token berdurasi panjang (long-duration) dibuat dengan menggunakan melalui tanda tangan parameter kueri URL manifes HLS (tanpa cookie) .

    8. Untuk Parameter kueri token, pertahankan nilai default, edge-cache-token.

    9. Klik Selesai, lalu klik Simpan.

  2. Buat aturan rute untuk segmen media.

    Rute ini seperti rute untuk playlist media, dengan hal berikut perbedaan utama:

    • Untuk Priority, tetapkan nilai yang lebih besar dari nilai media aturan rute playlist—misalnya, 3.
    • Untuk Description, berikan deskripsi singkat yang dapat membantu mengidentifikasi aturan dalam daftar aturan.
    • Di bagian Autentikasi token ganda, untuk Tindakan tanda tangan, pertahankan nilai default Tidak ada.

gcloud dan YAML

Edit file YAML:

Cookie

Konfigurasi playlist dan segmen media untuk mewajibkan cookie berdurasi panjang:

    - priority: 2
      description: "SEGMENTS_ROUTE_DESCRIPTION"
      origin: "ORIGIN_NAME"
      matchRules:
      - pathTemplateMatch: "/**.m3u8" # HLS media playlists
      - pathTemplateMatch: "/**.ts" # HLS segments
      - pathTemplateMatch: "/**.m4s" # DASH / CMAF segments
      routeAction:
        cdnPolicy:
          cacheMode: CACHE_ALL_STATIC
          signedRequestMode: REQUIRE_TOKENS
          signedRequestKeyset: LONG_KEYSET_NAME

Ganti SEGMENTS_ROUTE_DESCRIPTION dengan deskripsi rute.

Contoh kode ini mengimplementasikan perubahan berikut:

  • priority: 2: prioritas rute. Nilai yang lebih tinggi menunjukkan nilai yang lebih rendah prioritas Anda. Karena rute untuk playlist media dan segmen media Anda cocok dengan nama file apa pun yang diakhiri dengan .m3u8, prioritas untuk rute harus lebih rendah dari rute yang sebelumnya Anda buat untuk manifes utama.
  • signedRequestMode: REQUIRE_TOKENS: menerapkan token untuk media playlist dan segmen media. Jika Anda menggunakan media statis file deskripsi presentasi (MPD), maka set kunci panjang dan pendek mungkin berbeda. Jika Anda menggunakan file MPD dinamis, maka ukuran set tombol singkat harus sama.
  • signedRequestKeyset: LONG_KEYSET_NAME: Media CDN menggunakan keyset berdurasi panjang untuk memvalidasi cookie berdurasi panjang yang disediakan oleh agen pengguna untuk playlist media dan permintaan segmen media.

Parameter kueri URL

Tambahkan dua konfigurasi rute:

  1. Konfigurasi rute manifes media HLS untuk menyebarkan durasi panjang token:

       - priority: 2
         description: "PLAYLIST_ROUTE_DESCRIPTION"
         origin: "ORIGIN_NAME"
         matchRules:
         - pathTemplateMatch: "/**.m3u8" # HLS media playlists
         routeAction:
           cdnPolicy:
           cacheMode: CACHE_ALL_STATIC
           signedRequestMode: REQUIRE_TOKENS
           signedRequestKeyset: LONG_KEYSET_NAME
           addSignatures:
             actions:
             - PROPAGATE_TOKEN_HLS_COOKIELESS
    

    Ganti PLAYLIST_ROUTE_DESCRIPTION dengan deskripsi rute.

    Contoh kode ini mengimplementasikan perubahan berikut:

    • priority: 2: prioritas rute. Nilai yang lebih tinggi menunjukkan prioritas yang lebih rendah. Karena rute untuk playlist media Anda cocok nama file apa pun yang diakhiri dengan .m3u8, prioritas rute harus lebih rendah daripada rute yang sebelumnya Anda buat untuk manifes utama.
    • signedRequestMode: REQUIRE_TOKENS: menerapkan token untuk media playlist dan segmen media. Jika Anda menggunakan media statis file deskripsi presentasi (MPD), set kunci panjang dan pendek mungkin berbeda. Jika Anda menggunakan file MPD dinamis, maka dan set tombol yang pendek harus sama.
    • signedRequestKeyset: LONG_KEYSET_NAME: Media CDN menggunakan keyset berdurasi panjang untuk memvalidasi cookie berdurasi panjang yang disediakan oleh agen pengguna untuk playlist media dan permintaan segmen media.
    • addSignatures.actions: PROPAGATE_TOKEN_HLS_COOKIELESS: mengonfigurasi Media CDN untuk menyalin token berdurasi panjang ke media menyegmentasikan URI dalam playlist media.
  2. Konfigurasi rute segmen agar mewajibkan token berdurasi panjang:

       - priority: 3
         description: "SEGMENTS_ROUTE_DESCRIPTION"
         origin: "ORIGIN_NAME"
         matchRules:
         - pathTemplateMatch: "/**.ts" # HLS segments
         routeAction:
           cdnPolicy:
             cacheMode: CACHE_ALL_STATIC
             signedRequestMode: REQUIRE_TOKENS
             signedRequestKeyset: LONG_KEYSET_NAME
    

    Ganti SEGMENTS_ROUTE_DESCRIPTION dengan deskripsi rute.

    Contoh kode ini mengimplementasikan perubahan berikut:

    • priority: 3: prioritas rute. Nilai yang lebih tinggi menunjukkan prioritas yang lebih rendah. Prioritas untuk rute ini harus lebih rendah dari yang sebelumnya Anda buat untuk playlist media.
    • signedRequestMode: REQUIRE_TOKENS: menerapkan token untuk media playlist dan segmen media.
    • signedRequestKeyset: LONG_KEYSET_NAME: Media CDN menggunakan keyset berdurasi panjang untuk memvalidasi token bertanda tangan berdurasi lama yang disediakan oleh agen pengguna untuk media playlist dan segmen media.

Contoh file konfigurasi

Contoh kode berikut menunjukkan file konfigurasi yang sudah selesai:

Cookie

name: SERVICE_NAME
routing:
  hostRules:
  - hosts:
    - DOMAIN_NAME
    pathMatcher: routes
  pathMatchers:
    - name: "ROUTE_NAME"
      routeRules:
      - priority: 1
        description: "ROUTE_DESCRIPTION"
        origin: "ORIGIN_NAME"
        matchRules:
        - pathTemplateMatch: "/HLS_MASTER_PLAYLIST.m3u8" # HLS primary playlists
        - pathTemplateMatch: "/DASH_MANIFESTS.mpd" # DASH manifests
        routeAction:
          cdnPolicy:
            cacheMode: CACHE_ALL_STATIC
            signedRequestMode: REQUIRE_TOKENS
            signedRequestKeyset: SHORT_KEYSET_NAME
            signedRequestMaximumExpirationTtl: SIGNED_REQUEST_MAXIMUM_EXPIRATION_TIME
            addSignatures:
              actions:
                - GENERATE_COOKIE
              keyset: LONG_KEYSET_NAME
              tokenTtl: TOKEN_EXPIRATION_TIME
              copiedParameters:
                - PathGlobs
                - SessionID
      - priority: 2
        description: "SEGMENTS_ROUTE_DESCRIPTION"
        origin: "ORIGN_NAME"
        matchRules:
        - pathTemplateMatch: "/**.m3u8" # HLS media playlists
        - pathTemplateMatch: "/**.ts" # HLS segments
        - pathTemplateMatch: "/**.m4s" # DASH / CMAF segments
        routeAction:
          cdnPolicy:
            cacheMode: CACHE_ALL_STATIC
            signedRequestMode: REQUIRE_TOKENS
            signedRequestKeyset: LONG_KEYSET_NAME

Parameter kueri URL

name: SERVICE_NAME
routing:
  hostRules:
  - hosts:
    - DOMAIN_NAME
    pathMatcher: routes
  pathMatchers:
    - name: "ROUTE_NAME"
      routeRules:
      - priority: 1
        description: "ROUTE_DESCRIPTION"
        origin: "ORIGIN_NAME"
        matchRules:
        - pathTemplateMatch: "/HLS_PRIMARY_PLAYLIST.m3u8" # HLS primary playlists
        routeAction:
          cdnPolicy:
            cacheMode: CACHE_ALL_STATIC
            signedRequestMode: REQUIRE_TOKENS
            signedRequestKeyset: SHORT_KEYSET_NAME
            signedRequestMaximumExpirationTtl: SIGNED_REQUEST_MAXIMUM_EXPIRATION_TIME
            signedTokenOptions:
              tokenQueryParameter: SHORT_TOKEN_NAME
            addSignatures:
              actions:
                - GENERATE_TOKEN_HLS_COOKIELESS
              keyset: LONG_KEYSET_NAME
              tokenTtl: TOKEN_EXPIRATION_TIME
              tokenQueryParameter: LONG_TOKEN_NAME
              copiedParameters:
                - PathGlobs
                - SessionID
      - priority: 2
        description: "PLAYLIST_ROUTE_DESCRIPTION"
        origin: "ORIGIN_NAME"
        matchRules:
        - pathTemplateMatch: "/**.m3u8" # HLS media playlists
        routeAction:
          cdnPolicy:
            cacheMode: CACHE_ALL_STATIC
            signedRequestMode: REQUIRE_TOKENS
            signedRequestKeyset: LONG_KEYSET_NAME
            addSignatures:
              actions:
                - PROPAGATE_TOKEN_HLS_COOKIELESS
      - priority: 3
        description: "SEGMENTS_ROUTE_DESCRIPTION"
        origin: "ORIGIN_NAME"
        matchRules:
        - pathTemplateMatch: "/**.ts" # HLS segments
        routeAction:
          cdnPolicy:
            cacheMode: CACHE_ALL_STATIC
            signedRequestMode: REQUIRE_TOKENS
            signedRequestKeyset: LONG_KEYSET_NAME

Membuat token berdurasi singkat di server aplikasi

Untuk mengetahui informasi tentang cara membuat token, lihat Membuat token.

Menerapkan perlindungan konten defense-in-depth

Sebagai praktik terbaik, aktifkan autentikasi origin sebagai berikut: