Menggunakan autentikasi token ganda

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

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

Halaman ini menjelaskan cara mengonfigurasi rute Media CDN untuk membantu melindungi konten menggunakan autentikasi 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) kunci simetris

    Anda dapat mengaktifkan algoritma penandatanganan HMAC simetris hanya untuk rute yang dikonfigurasi untuk membuat token durasi panjang baru. Sebaiknya gunakan tanda tangan Ed25519 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 resource EdgeCacheKeyset. Kumpulan kunci harus menyertakan kunci yang benar untuk algoritma tanda tangan yang dipilih. Tabel berikut menjelaskan setiap algoritma tanda tangan 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 set kunci terpisah, satu untuk token berdurasi pendek dan satu lagi untuk token berdurasi panjang.

    Namun, jika Anda menggunakan DASH dan file deskripsi presentasi media (MPD) dinamis, Anda harus menggunakan set kunci yang sama untuk token berdurasi panjang dan berdurasi singkat.

  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 token berdurasi singkat 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 set kunci baru dengan satu kunci publik:

    Konsol

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

      Buka Media CDN

    2. Klik tab Keysets.

    3. Klik Buat keyset.

    4. Untuk Name, masukkan nama set kunci yang unik.

    5. Opsional: Untuk Deskripsi, masukkan deskripsi untuk set kunci Anda.

    6. Opsional: Klik Tambahkan label, lalu masukkan satu atau beberapa pasangan nilai kunci untuk set kunci Anda.

    7. Klik Tambahkan kunci publik, lalu lakukan tindakan berikut:

      1. Untuk ID, masukkan ID alfanumerik.
      2. Pilih Masukkan nilai, lalu tentukan nilai berenkode base64 dari kunci publik Ed25519 Anda.
    8. Klik Buat 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: nama set kunci unik—misalnya, prod-vod-keyset
    • SSL_PUBLIC_KEY_NAME: nama kunci publik SSL Anda
    • SSL_PUBLIC_KEY_VALUE: nilai kunci publik SSL Anda

    Untuk meninjau kunci yang terkait dengan set kunci, gunakan 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, konfigurasi Secret Manager.

  2. Buat secret.

  3. Tambahkan versi secret dalam format biner.

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

    Konsol

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

      Buka Secret Manager

    2. Centang kotak di samping nama secret.

    3. Klik Tampilkan Panel Info.

    4. Di panel info, klik Tambah akun utama.

    5. Untuk Akun utama baru, masukkan akun layanan Media CDN dalam format ini:

      service-PROJECT_NUMBER@gcp-sa-mediaedgefill.
      

      Ganti PROJECT_NUMBER dengan nomor project Anda.

    6. Untuk Select a role, pilih Secret Manager, lalu pilih Secret Manager Secret Accessor.

    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." \
      --role="roles/secretmanager.secretAccessor"
    

    Ganti kode berikut:

    • PROJECT_NUMBER: nomor project Anda
    • SECRET_ID: ID secret
  5. Akses versi rahasia Anda dan salin jalur rahasia, termasuk nomor versi.

  6. Buat set kunci baru dengan rahasia bersama di kunci bersama validasi:

    Konsol

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

      Buka Media CDN

    2. Klik tab Keysets.

    3. Klik Buat keyset.

    4. Untuk Name, masukkan nama set kunci yang unik.

    5. Opsional: Untuk Deskripsi, masukkan deskripsi untuk set kunci Anda.

    6. Opsional: Klik Tambahkan label, lalu masukkan satu atau beberapa pasangan nilai kunci untuk set kunci Anda.

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

      1. Untuk Secret, pilih secret dari daftar, masukkan secret secara manual dengan menentukan ID resource-nya, atau buat secret baru, lalu pilih secret tersebut.

      2. Untuk Secret version, pilih versi dari daftar atau buat versi secret baru lalu pilih versi tersebut.

    8. Klik Buat 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 set kunci—misalnya, prod-vod-keyset
    • PROJECT_NUMBER: project ID Anda
    • SECRET_ID: ID resource rahasia
    • KEY_VERSION: versi secret yang ingin Anda gunakan

Menyiapkan token berdurasi panjang

Google-owned and managed keys dicakupkan menurut keyset. Artinya, dua set kunci yang berbeda memilikiGoogle-owned and managed keysyang berbeda. Google-owned and managed keys dirotasi secara rutin.

Siapkan token berdurasi panjang menggunakan salah satu opsi berikut:

Konsol

  1. Buat atau ubah keyset.

  2. Di bagian Kunci, pilih Gunakan Google-owned and managed key untuk autentikasi token ganda.

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 nama kunci—misalnya, prod-vod-keyset-long.

  • Mengubah set kunci yang ada:

    1. Ekspor set kunci 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 di alat pengelolaan konfigurasi, edit konfigurasi set kunci Anda agar terlihat mirip dengan berikut:

      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 set kunci yang telah 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 set kunci token durasi panjang. Kumpulan kunci dapat memiliki maksimal tiga kunci publik. Dalam praktiknya, hal ini berarti kumpulan kunci dapat memiliki dua kunci yang dikelola pengguna dan satu Google-owned and managed key.

Media CDN selalu menggunakan Google-owned and managed key 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 menggunakan permintaan bertanda tangan yang dibuat oleh kunci pribadi Anda sendiri.

Mengonfigurasi pertukaran token

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

Mengonfigurasi rute manifes utama agar memerlukan token berdurasi singkat

Konfigurasi Media CDN agar memerlukan token durasi singkat di rute manifes utama.

Konsol

Aktifkan autentikasi token durasi singkat di rute manifes utama:

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

    Buka Media CDN

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

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

  4. Untuk membuka bagian Pemilihan rute, klik Berikutnya.

  5. Perluas aturan host yang ingin Anda tambahi aturan rute manifes utama.

  6. Klik Tambahkan aturan rute.

    Atau, untuk mengedit aturan rute, klik Edit di baris yang sesuai.

  7. Di panel Edit aturan rute, untuk Prioritas, tetapkan nilai—misalnya, 1.

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

  9. Di bagian Pencocokan, klik Tambahkan kondisi pencocokan. Kemudian, lakukan hal berikut:

    1. Untuk Jenis pencocokan, pilih Pencocokan template jalur.
    2. Untuk Pencocokan jalur, tentukan nama atau template jalur untuk file playlist utama HLS (M3U8) atau file manifes DASH (MPD). Untuk mengetahui informasi selengkapnya, lihat Pencocokan jalur.
  10. Klik Konfigurasi lanjutan.

  11. Di bagian Route action, klik Add an item.

  12. Untuk Type, pilih CDN policy.

  13. Di bagian Permintaan bertanda tangan, untuk Mode permintaan bertanda tangan, pilih Wajibkan token.

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

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

      Atau, untuk membuat set kunci baru yang memiliki kunci yang Anda butuhkan, klik Buat set kunci baru. Kemudian, pilih.

    2. Untuk Signature algorithm, pilih Ed25519 using public keys.

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

      Atau, jika Anda berencana menggunakan parameter kueri URL manifes HLS, bukan cookie, untuk autentikasi, tentukan parameter tempat menyimpan token permintaan.

    4. Untuk Waktu maksimum untuk aktif, tentukan, dalam detik, masa aktif maksimum token permintaan masuk.

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

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

gcloud dan YAML

  1. Ekspor konfigurasi Media CDN Anda ke dalam 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 dalam aturan rute manifes utama, di bagian cdnPolicy rute pada file YAML, tentukan 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 asal
    • MANIFEST_OR_PLAYLIST: nama file playlist utama HLS (M3U8) atau file manifes DASH (MPD). Untuk mengetahui informasi selengkapnya, lihat Pencocokan jalur.
    • SHORT_KEYSET_NAME: nama set kunci yang akan digunakan untuk token berdurasi singkat
    • SIGNED_REQUEST_MAXIMUM_EXPIRATION_TIME: waktu habis masa berlaku untuk permintaan bertanda tangan—misalnya, 600s. Untuk mengetahui informasi selengkapnya, lihat signedRequestMaximumExpirationTtl.
    • Opsional: SHORT_TOKEN_NAME: parameter kueri tempat menemukan token singkat. Nilai defaultnya adalah edge-cache-token. Untuk mengetahui 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 memperbarui 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
    

Dengan ini, proses pengaktifan autentikasi token tunggal telah selesai.

Untuk mengonfigurasi autentikasi token ganda, lanjutkan ke bagian berikut.

Mengonfigurasi aturan rute manifes utama untuk membuat token berdurasi panjang

Konfigurasi Media CDN untuk membuat token durasi panjang di rute manifes utama. Pilih cookie atau parameter kueri URL untuk membuat token ini.

Konsol

Ubah aturan rute manifes utama sehingga Media CDN dapat membuat token berdurasi panjang di rute:

  1. Di halaman Edit aturan rute, klik Konfigurasi lanjutan.
  2. Untuk Type, pilih CDN policy.
  3. Luaskan Autentikasi token ganda.
  4. Untuk Signature action, pilih Generate new long-duration token.
  5. Untuk Jenis tanda tangan, 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 durasi panjang ke setiap URL.
  6. Di bagian Generate new long-duration token, lakukan hal berikut:

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

      Atau, klik Buat set kunci baru untuk membuat set kunci baru yang memiliki kunci yang Anda butuhkan. Kemudian, pilih.

    2. Untuk TTL Token, tentukan, dalam detik, masa aktif maksimum token berdurasi panjang.

    3. Untuk Jenis tanda tangan, jika Anda memilih opsi melalui cookie, maka, di bagian Parameter yang disalin, pilih parameter yang ingin Anda salin oleh Media CDN dari token berdurasi pendek ke token berdurasi panjang. Untuk menggunakan autentikasi token ganda, Anda harus memilih 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 di aturan rute, klik Simpan.

    Pesan akan muncul dan menanyakan apakah Anda ingin membuat rute untuk segmen dan playlist media 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 opsi manual, lanjutkan ke bagian berikutnya.

gcloud dan YAML

Ubah bagian addSignatures dari aturan rute manifes utama sehingga 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 kumpulan kunci token berdurasi panjang Anda

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

Contoh kode ini menerapkan 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 token berdurasi panjang. Untuk menggunakan autentikasi token ganda, Anda harus menggunakan copiedParameters.PathGlobs atau copiedParameters.URLPrefix. Untuk mengetahui informasi selengkapnya, lihat copiedParameters.

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

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

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 kunci berdurasi panjang Anda

  • TOKEN_EXPIRATION_TIME: waktu berakhirnya token berdurasi panjang—misalnya, 86400s untuk waktu berakhir satu hari

Contoh kode ini menerapkan perubahan berikut:

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

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

  • Opsional: copiedParameters.SessionID: mengonfigurasi Media CDN untuk menyalin SessionID dari token durasi pendek ke token durasi panjang.

  • Opsional: LONG_TOKEN_NAME: parameter kueri tempat menempatkan token panjang yang dihasilkan. Nilai defaultnya adalah edge-cache-token. Untuk mengetahui informasi selengkapnya, lihat tokenQueryParameter.

File manifes berikut menunjukkan tindakan GENERATE_TOKEN_HLS_COOKIELESS yang 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 membuat dan menyimpan token berdurasi panjang dalam parameter kueri LONG_TOKEN_NAME.

Mengonfigurasi rute segmen dan playlist media agar memerlukan token durasi panjang

Konfigurasi rute segmen dan playlist media agar memerlukan token berdurasi panjang.

Konsol

Cookie

Buat aturan rute untuk rute segmen dan playlist media:

  1. Di halaman Edit layanan Edge Cache, di bagian Routing, klik aturan host yang memiliki rute manifes utama.
  2. Klik Tambahkan aturan rute.
  3. Di panel Edit aturan rute, untuk Prioritas, tetapkan nilai yang lebih besar daripada rute manifes utama—misalnya, 2. Nilai yang lebih tinggi menunjukkan prioritas yang lebih rendah.
  4. Untuk Deskripsi, 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
    • Menambahkan kondisi kecocokan: sama seperti untuk aturan rute manifes utama
    • Jenis: Kebijakan CDN
    • Mode permintaan bertanda tangan: Memerlukan token
    • Pilih set kunci: sama seperti untuk token durasi 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 layanan Edge Cache, di bagian Routing, klik aturan host yang memiliki rute manifes utama.
    2. Klik Tambahkan aturan rute.
    3. Di panel Edit aturan rute, untuk Prioritas, tetapkan nilai yang lebih besar daripada rute manifes utama—misalnya, 2. Nilai yang lebih tinggi menunjukkan prioritas yang lebih rendah.
    4. Untuk Deskripsi, 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 kecocokan: sama seperti untuk aturan rute manifes utama
      • Jenis: Kebijakan CDN
      • Mode permintaan bertanda tangan: Memerlukan token
      • Pilih keyset: sama seperti untuk token berdurasi panjang
      • Algoritma tanda tangan: sama seperti untuk aturan rute manifes utama
      • Parameter kueri token: sama seperti untuk token berdurasi panjang
    6. Luaskan Autentikasi token ganda.

    7. Untuk Tindakan tanda tangan, pilih Sebarkan token durasi panjang yang ada.

      Opsi ini diaktifkan hanya setelah Media CDN memverifikasi bahwa token durasi panjang dibuat menggunakan jenis tanda tangan melalui 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 perbedaan utama berikut:

    • Untuk Prioritas, tetapkan nilai yang lebih besar daripada aturan rute playlist media—misalnya, 3.
    • Untuk Deskripsi, 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 agar memerlukan 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 menerapkan perubahan berikut:

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

Parameter kueri URL

Tambahkan dua konfigurasi rute:

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

       - 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 menerapkan perubahan berikut:

    • priority: 2: prioritas rute. Nilai yang lebih tinggi menunjukkan prioritas yang lebih rendah. Karena rute untuk playlist media Anda cocok dengan nama file yang berakhiran .m3u8, prioritas untuk rute harus lebih rendah daripada rute yang sebelumnya Anda buat untuk manifes utama.
    • signedRequestMode: REQUIRE_TOKENS: menerapkan token untuk playlist media dan segmen media. Jika Anda menggunakan file deskripsi presentasi media statis (MPD), set kunci panjang dan pendek mungkin berbeda. Jika Anda menggunakan file MPD dinamis, set kunci panjang dan pendek harus sama.
    • signedRequestKeyset: LONG_KEYSET_NAME: Media CDN menggunakan keyset durasi panjang untuk memvalidasi cookie durasi panjang yang disediakan oleh agen pengguna untuk permintaan playlist media dan segmen media.
    • addSignatures.actions: PROPAGATE_TOKEN_HLS_COOKIELESS: mengonfigurasi Media CDN untuk menyalin token durasi panjang ke URI segmen media dalam playlist media.
  2. Konfigurasi rute segmen untuk mewajibkan token durasi 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 menerapkan perubahan berikut:

    • priority: 3: prioritas rute. Nilai yang lebih tinggi menunjukkan prioritas yang lebih rendah. Prioritas untuk rute ini harus lebih rendah daripada rute yang Anda buat sebelumnya untuk playlist media.
    • signedRequestMode: REQUIRE_TOKENS: menerapkan token untuk playlist media dan segmen media.
    • signedRequestKeyset: LONG_KEYSET_NAME: Media CDN menggunakan keyset durasi panjang untuk memvalidasi token bertanda tangan durasi panjang yang disediakan oleh agen pengguna untuk permintaan playlist media 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 Anda

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

Menerapkan perlindungan konten defense-in-depth

Sebagai praktik terbaik, aktifkan autentikasi asal sebagai berikut: