Untuk menerapkan autentikasi token ganda saat penonton mengakses resource streaming, Anda harus mengonfigurasi rute terpisah. Rute adalah konfigurasi yang cocok dengan 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 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:
Untuk token berdurasi singkat, pilih salah satu algoritma tanda tangan berikut:
- Tanda tangan Ed25519
- Message authentication code (HMAC) berbasis hash kunci simetris
Anda dapat mengaktifkan algoritma penandatanganan HMAC simetris hanya untuk rute yang dikonfigurasi untuk menghasilkan token berdurasi lama yang baru. Sebaiknya gunakan tanda tangan Ed25519 untuk performa dan keamanan yang optimal serta HMAC kunci simetris hanya jika diperlukan untuk kompatibilitas dengan CDN lain.
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 durasi singkat dan satu lagi untuk token durasi panjang.
Namun, jika menggunakan file DASH dan deskripsi presentasi media dinamis (MPD), Anda harus menggunakan kumpulan kunci yang sama untuk token berdurasi panjang dan berdurasi singkat.
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 durasi singkat menggunakan salah satu opsi berikut.
Tanda tangan Ed25519
Buat kunci pribadi:
openssl genpkey -algorithm ed25519 -outform PEM -out SSL_KEY_NAME.private.key
Ganti
SSL_KEY_NAME
dengan nama kunci.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])"
Buat kumpulan kunci baru dengan satu kunci publik:
Konsol
Di konsol Google Cloud, buka halaman Media CDN.
Klik tab Keyset.
Klik
Buat keyset.Untuk Name, masukkan nama set kunci yang unik.
Opsional: Untuk Deskripsi, masukkan deskripsi untuk kumpulan kunci Anda.
Opsional: Klik Tambahkan label, lalu masukkan satu atau beberapa pasangan nilai kunci untuk kumpulan kunci Anda.
Klik Tambahkan kunci publik, lalu lakukan tindakan berikut:
- Untuk ID, masukkan ID alfanumerik.
- Pilih Masukkan nilai, lalu tentukan nilai berenkode base64 dari kunci publik Ed25519 Anda.
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
: nama kumpulan kunci unik—misalnya,prod-vod-keyset
SSL_PUBLIC_KEY_NAME
: nama kunci publik SSL AndaSSL_PUBLIC_KEY_VALUE
: nilai kunci publik SSL Anda
Untuk meninjau kunci yang terkait dengan kumpulan 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
HMAC kunci simetris
Jika Anda belum pernah menggunakan Secret Manager, konfigurasi Secret Manager.
Menambahkan versi secret dalam format biner.
Berikan peran Secret Manager Access (
roles/secretmanager.secretAccessor
) ke akun layanan Media CDN:Konsol
Di konsol Google Cloud, buka halaman Secret Manager.
Centang kotak di samping nama secret.
Klik Tampilkan Panel Info.
Di panel info, klik Tambah akun utama.
Untuk Akun utama baru, masukkan akun layanan Media CDN dalam format ini:
service-PROJECT_NUMBER@gcp-sa-mediaedgefill.iam.gserviceaccount.com
Ganti
PROJECT_NUMBER
dengan nomor project Anda.Untuk Pilih peran, 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.iam.gserviceaccount.com" \ --role="roles/secretmanager.secretAccessor"
Ganti kode berikut:
PROJECT_NUMBER
: nomor project AndaSECRET_ID
: ID secret
Akses versi secret Anda dan salin jalur secret, termasuk nomor versi.
Buat kumpulan kunci baru dengan secret bersama dalam kunci bersama validasi:
Konsol
Di konsol Google Cloud, buka halaman Media CDN.
Klik tab Keyset.
Klik
Buat keyset.Untuk Name, masukkan nama set kunci yang unik.
Opsional: Untuk Deskripsi, masukkan deskripsi untuk kumpulan kunci Anda.
Opsional: Klik Tambahkan label, lalu masukkan satu atau beberapa pasangan nilai kunci untuk kumpulan kunci Anda.
Untuk menentukan kunci bersama validasi, klik Tambahkan kunci bersama validasi, lalu lakukan tindakan berikut:
Untuk Secret, pilih secret dari daftar, masukkan secret secara manual dengan menentukan ID resource-nya, atau buat secret baru, lalu pilih secret tersebut.
Untuk Versi secret, pilih versi dari daftar atau buat versi secret baru, lalu pilih.
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 kunci—misalnya,prod-vod-keyset
PROJECT_NUMBER
: project ID AndaSECRET_ID
: ID resource secretKEY_VERSION
: versi secret yang ingin Anda gunakan
Menyiapkan token berdurasi panjang
Kunci yang dikelola Google dicakup oleh kumpulan kunci. Artinya, dua kumpulan kunci yang berbeda memiliki kunci yang dikelola Google yang berbeda. Kunci yang dikelola Google dirotasi secara rutin.
Siapkan token berdurasi panjang menggunakan salah satu opsi berikut:
Konsol
Di bagian Kunci, pilih Gunakan kunci yang dikelola Google 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, misalnyaprod-vod-keyset-long
.Mengubah kumpulan kunci yang ada:
Ekspor kumpulan 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
Di editor teks atau di alat pengelolaan konfigurasi, edit konfigurasi kumpulan kunci 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
Impor kumpulan kunci 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 kumpulan kunci token berdurasi panjang. Kumpulan kunci dapat memiliki maksimal tiga kunci publik. Dalam praktiknya, hal ini berarti bahwa kumpulan kunci 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 menggunakan permintaan yang ditandatangani 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 untuk mewajibkan token berdurasi singkat
Konfigurasikan Media CDN untuk mewajibkan token berdurasi singkat di rute manifes utama.
Konsol
Aktifkan autentikasi token berdurasi singkat di rute manifes utama:
Di konsol Google Cloud, buka halaman Media CDN.
Untuk membuka halaman Details layanan, klik nama layanan.
Untuk beralih ke mode edit, klik tombol Edit.
Untuk membuka bagian Pemilihan rute, klik Berikutnya.
Luaskan aturan host tempat Anda ingin menambahkan aturan rute manifes utama.
Klik Tambahkan aturan rute.
Atau, untuk mengedit aturan rute, klik
Edit pada baris masing-masing.Di panel Edit route rule, untuk Priority, tetapkan nilai—misalnya,
1
.Untuk Deskripsi, berikan deskripsi singkat yang dapat membantu mengidentifikasi aturan dalam daftar aturan.
Di bagian Pencocokan, klik Tambahkan kondisi pencocokan. Kemudian, lakukan hal berikut:
- Untuk Jenis pencocokan, pilih Pencocokan template jalur.
- Untuk Pencocokan jalur, tentukan nama atau template jalur untuk file playlist utama HLS (M3U8) atau manifes DASH (MPD). Untuk mengetahui informasi selengkapnya, lihat Pencocokan jalur.
Klik Advanced configurations.
Di bagian Tindakan rute, klik Tambahkan item.
Untuk Jenis, pilih Kebijakan CDN.
Di bagian Signed request, untuk Signed request mode, pilih Require tokens.
Di bagian Signed request keyset, lakukan hal berikut:
Untuk menentukan kumpulan kunci untuk token berdurasi singkat, klik Pilih kumpulan kunci, lalu pilih kumpulan kunci token berdurasi singkat.
Atau, untuk membuat kumpulan kunci baru yang memiliki kunci yang Anda butuhkan, klik Buat kumpulan kunci baru. Kemudian, pilih aplikasi.
Untuk Signature algorithm, pilih Ed25519 using public keys.
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 token permintaan disimpan.
Untuk Max time to live, tentukan masa aktif maksimum token permintaan masuk, dalam detik.
Untuk menyimpan perubahan di bagian Tindakan rute, klik Selesai.
Untuk menyimpan perubahan pada aturan rute, klik Simpan.
gcloud dan YAML
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
Untuk mengaktifkan autentikasi token berdurasi singkat dalam aturan rute manifes utama, di bagian
cdnPolicy
rute file YAML, tentukan konfigurasisignedTokensOptions
.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 ruteROUTE_DESCRIPTION
: deskripsi aturan ruteORIGIN_NAME
: nama asalMANIFEST_OR_PLAYLIST
: nama file playlist utama (M3U8) atau manifes DASH (MPD) HLS. Untuk mengetahui informasi selengkapnya, lihat Pencocokan jalur.SHORT_KEYSET_NAME
: nama kumpulan kunci yang akan digunakan untuk token berdurasi singkatSIGNED_REQUEST_MAXIMUM_EXPIRATION_TIME
: waktu habis masa berlaku untuk permintaan yang ditandatangani—misalnya,600s
. Untuk mengetahui informasi selengkapnya, lihatsignedRequestMaximumExpirationTtl
.- Opsional:
SHORT_TOKEN_NAME
: parameter kueri tempat token singkat ditemukan. Nilai defaultnya adalahedge-cache-token
. Untuk informasi selengkapnya, lihatSignedTokenOptions
.
Saat menggunakan HMAC kunci simetris, di bagian
signedTokenOptions
, tambahkanallowedSignatureAlgorithms
dengan nilainya sebagaiHMAC_SHA_256
:allowedSignatureAlgorithms: - HMAC_SHA_256
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
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
Konfigurasikan Media CDN untuk membuat token berdurasi panjang di rute manifes utama. Pilih cookie atau parameter kueri URL untuk membuat token ini.
Konsol
Ubah aturan rute manifes utama agar Media CDN dapat membuat token berdurasi panjang di rute:
- Di halaman Edit route rule, klik Advanced configurations.
- Untuk Jenis, pilih Kebijakan CDN.
- Luaskan Autentikasi token ganda.
- Untuk Signature action, pilih Generate new long-duration token.
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 berdurasi panjang ke setiap URL.
- melalui cookie (untuk streaming HLS dan DASH): mengonfigurasi Media CDN untuk menampilkan
Di bagian Buat token berdurasi panjang baru, lakukan hal berikut:
Untuk menentukan kumpulan kunci untuk token berdurasi panjang, klik Pilih kumpulan kunci, lalu pilih kumpulan kunci token berdurasi panjang.
Atau, klik Buat kumpulan kunci baru untuk membuat kumpulan kunci baru yang memiliki kunci yang Anda perlukan. Kemudian, pilih aplikasi.
Untuk Token TTL, tentukan masa aktif maksimum dalam detik untuk token berdurasi lama.
Untuk Jenis tanda tangan, jika Anda memilih opsi melalui cookie, lalu, di bagian Parameter yang disalin, pilih parameter yang ingin Anda salin dari token durasi singkat ke token durasi panjang oleh Media CDN. Untuk menggunakan autentikasi token ganda, Anda harus memilih
PathGlobs
(atau salah satu aliasnya,acl
ataupaths
) atauURLPrefix
.Jika Anda memilih opsi melalui parameter kueri URL manifes HLS, untuk Parameter kueri token, pertahankan nilai default,
edge-cache-token
.
Untuk menyimpan perubahan di bagian Tindakan rute, klik Selesai.
Untuk menyimpan perubahan pada aturan rute, klik Simpan.
Pesan akan muncul yang menanyakan apakah Anda ingin membuat rute untuk playlist dan segmen 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 panjangTOKEN_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 menampilkanEdge-Cache-Cookie
dengan respons manifes utamacopiedParameters.PathGlobs
: mengonfigurasi Media CDN untuk menyalinPathGlobs
dari token berdurasi singkat ke token berdurasi panjang. Untuk menggunakan autentikasi token ganda, Anda harus menggunakancopiedParameters.PathGlobs
ataucopiedParameters.URLPrefix
. Untuk mengetahui informasi selengkapnya, lihatcopiedParameters
.Opsional:
copiedParameters.SessionID
: mengonfigurasi Media CDN untuk menyalinSessionID
dari token durasi singkat ke token durasi 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 kumpulan kunci berdurasi panjangTOKEN_EXPIRATION_TIME
: waktu masa berlaku token berdurasi panjang—misalnya,86400s
untuk waktu masa berlaku 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 berdurasi panjang ke setiap URI yang ada.copiedParameters.PathGlobs
: mengonfigurasi Media CDN untuk menyalinPathGlobs
dari token berdurasi singkat ke token berdurasi panjang. Untuk menggunakan autentikasi token ganda, Anda harus menggunakan salah satu daricopiedParameters.PathGlobs
ataucopiedParameters.URLPrefix
. Untuk mengetahui informasi selengkapnya, lihatcopiedParameters
.Opsional:
copiedParameters.SessionID
: mengonfigurasi Media CDN untuk menyalinSessionID
dari token durasi singkat ke token durasi panjang.Opsional:
LONG_TOKEN_NAME
: parameter kueri tempat token panjang yang dihasilkan akan ditempatkan. Nilai defaultnya adalahedge-cache-token
. Untuk informasi selengkapnya, lihattokenQueryParameter
.
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 di
parameter kueri LONG_TOKEN_NAME
.
Mengonfigurasi rute segmen dan playlist media agar mewajibkan token berdurasi panjang
Konfigurasikan playlist media dan rute segmen agar memerlukan token durasi panjang.
Konsol
Cookie
Buat aturan rute untuk playlist media dan rute segmen:
- Di halaman Edit Edge Cache service, di bagian Routing, klik aturan host yang memiliki rute manifes utama.
- Klik Tambahkan aturan rute.
- Di panel Edit route rule, untuk Priority, tetapkan nilai yang
lebih besar dari rute manifes utama—misalnya,
2
. Nilai yang lebih tinggi menunjukkan prioritas yang lebih rendah. - Untuk Deskripsi, berikan deskripsi singkat yang dapat membantu mengidentifikasi aturan dalam daftar aturan.
Tetapkan kolom berikut seperti yang disarankan:
- Pilih origin: sama seperti untuk aturan rute manifes utama
- Menambahkan kondisi kecocokan: sama seperti aturan rute manifes utama
- Jenis: Kebijakan CDN
- Mode permintaan yang ditandatangani: Memerlukan token
- Pilih kumpulan kunci: sama seperti untuk token berdurasi panjang
- Algoritma tanda tangan: sama seperti untuk aturan rute manifes utama
Luaskan Autentikasi token ganda.
Untuk Tindakan tanda tangan, pertahankan nilai default None.
Klik Selesai, lalu klik Simpan.
Parameter kueri URL
Buat aturan rute untuk playlist media.
- Di halaman Edit Edge Cache service, di bagian Routing, klik aturan host yang memiliki rute manifes utama.
- Klik Tambahkan aturan rute.
- Di panel Edit route rule, untuk Priority, tetapkan nilai
yang lebih besar dari rute manifes utama—misalnya,
2
. Nilai yang lebih tinggi menunjukkan prioritas yang lebih rendah. - Untuk Deskripsi, berikan deskripsi singkat yang dapat membantu mengidentifikasi aturan dalam daftar aturan.
Tetapkan kolom berikut seperti yang disarankan:
- Select an origin: sama seperti aturan rute manifes utama
- Menambahkan kondisi kecocokan: sama seperti aturan rute manifes utama
- Jenis: Kebijakan CDN
- Mode permintaan yang ditandatangani: Memerlukan token
- Pilih kumpulan kunci: sama seperti untuk token berdurasi panjang
- Algoritma tanda tangan: sama seperti untuk aturan rute manifes utama
- Parameter kueri token: sama seperti untuk token durasi lama
Luaskan Autentikasi token ganda.
Untuk Signature action, pilih Propagate existing long-duration token.
Opsi ini hanya diaktifkan setelah Media CDN memverifikasi bahwa token berdurasi panjang dibuat menggunakan jenis tanda tangan melalui parameter kueri URL manifes HLS (tanpa cookie).
Untuk Parameter kueri token, pertahankan nilai default,
edge-cache-token
.Klik Selesai, lalu klik Simpan.
Buat aturan rute untuk segmen media.
Rute ini mirip dengan rute untuk playlist media, dengan perbedaan utama berikut:
- Untuk Prioritas, tetapkan nilai yang lebih besar dari 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.
- Untuk Prioritas, tetapkan nilai yang lebih besar dari aturan rute playlist
media—misalnya,
gcloud dan YAML
Edit file YAML:
Cookie
Konfigurasikan 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 apa pun yang diakhiri dengan.m3u8
, prioritas untuk rute tersebut harus lebih rendah dari 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), kumpulan kunci panjang dan singkat mungkin berbeda. Jika Anda menggunakan file MPD dinamis, kumpulan kunci panjang dan pendek harus sama.signedRequestKeyset: LONG_KEYSET_NAME
: Media CDN menggunakan keyset berdurasi panjang untuk memvalidasi cookie berdurasi panjang yang disediakan oleh agen pengguna untuk permintaan playlist media dan segmen media.
Parameter kueri URL
Tambahkan dua konfigurasi rute:
Konfigurasikan rute manifes media HLS untuk menyebarkan token durasi lama:
- 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 apa pun yang diakhiri dengan.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), kumpulan kunci panjang dan pendek mungkin berbeda. Jika Anda menggunakan file MPD dinamis, kumpulan kunci panjang dan pendek harus sama.signedRequestKeyset: LONG_KEYSET_NAME
: Media CDN menggunakan keyset berdurasi panjang untuk memvalidasi cookie berdurasi 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 berdurasi panjang ke URI segmen media di playlist media.
Konfigurasikan 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 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 sebelumnya Anda buat untuk playlist media.signedRequestMode: REQUIRE_TOKENS
: menerapkan token untuk playlist media dan segmen media.signedRequestKeyset: LONG_KEYSET_NAME
: Media CDN menggunakan keyset berdurasi panjang untuk memvalidasi token bertanda tangan berdurasi 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 informasi tentang cara membuat token, lihat Membuat token.
Menerapkan perlindungan konten defense-in-depth
Sebagai praktik terbaik, aktifkan autentikasi asal sebagai berikut:
Untuk Cloud Storage, gunakan izin Identity and Access Management dengan bucket Cloud Storage pribadi.
Untuk penyedia penyimpanan yang kompatibel dengan AWS, gunakan Signature AWS Versi 4. Menggunakan autentikasi origin akan memblokir permintaan yang mencoba mengakali Media CDN dan mengakses origin Anda secara langsung.