Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Membuat tanda tangan URL menggunakan kebijakan kustom
Untuk membuat tanda tangan URL menggunakan kebijakan khusus, selesaikan prosedur berikut.
Untuk membuat tanda tangan URL menggunakan kebijakan kustom
-
Jika Anda menggunakan. NETatau Java untuk membuat ditandatanganiURLs, dan jika Anda belum memformat ulang kunci pribadi untuk key pair Anda dari format.pem default ke format yang kompatibel dengannya. NETatau dengan Java, lakukan sekarang. Untuk informasi selengkapnya, lihat Memformat ulang kunci pribadi (. NETdan Java saja).
-
Menggabungkan nilai-nilai berikut dalam urutan yang tercantum, mereplikasi format yang ditunjukkan dalam contoh ini ditandatangani: URL
https://d111111abcdef8.cloudfront.net/image.jpg
?color=red&size=medium&
Policy=eyANCiAgICEXAMPLEW1lbnQiOiBbeyANCiAgICAgICJSZXNvdXJjZSI6Imh0dHA6Ly9kemJlc3FtN3VuMW0wLmNsb3VkZnJvbnQubmV0L2RlbW8ucGhwIiwgDQogICAgICAiQ29uZGl0aW9uIjp7IA0KICAgICAgICAgIklwQWRkcmVzcyI6eyJBV1M6U291cmNlSXAiOiIyMDcuMTcxLjE4MC4xMDEvMzIifSwNCiAgICAgICAgICJEYXRlR3JlYXRlclRoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTI5Njg2MDE3Nn0sDQogICAgICAgICAiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjEyOTY4NjAyMjZ9DQogICAgICB9IA0KICAgfV0gDQp9DQo
&Signature=nitfHRCrtziwO2HwPfWw~yYDhUF5EwRunQA-j19DzZrvDh6hQ73lDx~-ar3UocvvRQVw6EkC~GdpGQyyOSKQim-TxAnW7d8F5Kkai9HVx0FIu-5jcQb0UEmatEXAMPLE3ReXySpLSMj0yCd3ZAB4UcBCAqEijkytL6f3fVYNGQI6
&Key-Pair-Id=K2JCJMDEHXQW5F
Hapus semua spasi kosong (termasuk tab dan karakter baris baru). Anda mungkin harus memasukkan karakter escape dalam string di kode aplikasi. Semua nilai memiliki tipe
String
.- 1.
Base URL for the file
-
Dasarnya URL adalah CloudFront URL yang akan Anda gunakan untuk mengakses file jika Anda tidak menggunakan tanda tanganURLs, termasuk parameter string kueri Anda sendiri, jika ada. Dalam contoh sebelumnya, basisnya URL adalah.
https://d111111abcdef8.cloudfront.net/image.jpg
Untuk informasi selengkapnya tentang format URLs untuk distribusi, lihatKustomisasi URL format untuk file di CloudFront.Contoh berikut menunjukkan nilai yang Anda tentukan untuk distribusi.
-
Berikut CloudFront URL ini adalah untuk file gambar dalam distribusi (menggunakan nama CloudFront domain). Perhatikan bahwa
image.jpg
dalamimages
direktori. Jalur ke file di URL harus cocok dengan jalur ke file di HTTP server Anda atau di bucket Amazon S3 Anda.https://d111111abcdef8.cloudfront.net/images/image.jpg
-
Berikut ini CloudFront URL termasuk string query:
https://d111111abcdef8.cloudfront.net/images/image.jpg?size=large
-
Berikut ini CloudFront URLs adalah untuk file gambar dalam distribusi. Keduanya menggunakan nama domain alternatif; yang kedua menyertakan string kueri:
https://www.example.com/images/image.jpg
https://www.example.com/images/image.jpg?color=red
-
Berikut CloudFront URL ini adalah untuk file gambar dalam distribusi yang menggunakan nama domain alternatif dan HTTPS protokol:
https://www.example.com/images/image.jpg
-
- 2.
?
-
?
Ini menunjukkan bahwa parameter string kueri mengikuti basisURL. Sertakan?
bahkan jika Anda tidak memiliki parameter string kueri Anda sendiri. - 3.
Your query string parameters, if any
&
-
Nilai ini bersifat opsional. Jika Anda ingin menambahkan parameter string kueri Anda sendiri, misalnya:
color=red&size=medium
kemudian tambahkan mereka setelah
?
dan sebelumPolicy
parameter. Dalam keadaan tertentu yang jarang terjadi, Anda mungkin perlu menempatkan parameter string pencarian Anda setelahKey-Pair-Id
.penting
Parameter Anda tidak dapat diberi nama
Policy
,Signature
, atauKey-Pair-Id
.Jika Anda menambahkan parameter Anda sendiri, tambahkan
&
setelah masing-masing, termasuk yang terakhir. - 4.
Policy=
base64 encoded version of policy statement
-
Pernyataan kebijakan Anda dalam JSON format, dengan spasi kosong dihapus, lalu base64 dikodekan. Untuk informasi selengkapnya, lihat Membuat pernyataan kebijakan untuk tanda tangan URL yang menggunakan kebijakan kustom.
Pernyataan kebijakan mengontrol akses yang diberikan tanda URL tangan kepada pengguna. Ini termasuk file, tanggal kedaluwarsa dan waktu, tanggal dan waktu opsional yang URL menjadi valid, dan alamat IP opsional atau rentang alamat IP yang diizinkan untuk mengakses file. URL
- 5.
&Signature=
hashed and signed version of the policy statement
-
Versi pernyataan kebijakan yang di-hash, ditandatangani, dan dikodekan base64. JSON Untuk informasi selengkapnya, lihat Membuat tanda tangan untuk tanda tangan URL yang menggunakan kebijakan kustom.
- 6.
&Key-Pair-Id=
public key ID for the CloudFront public key whose corresponding private key you're using to generate the signature
-
ID untuk kunci CloudFront publik, misalnya,
K2JCJMDEHXQW5F
. ID kunci publik memberi tahu kunci publik CloudFront mana yang akan digunakan untuk memvalidasi yang ditandatanganiURL. CloudFront membandingkan informasi dalam tanda tangan dengan informasi dalam pernyataan kebijakan untuk memverifikasi bahwa URL belum dirusak.Kunci publik ini harus dimiliki oleh kelompok kunci yang merupakan signer tepercaya dalam distribusi. Untuk informasi selengkapnya, lihat Tentukan penandatangan yang dapat membuat cookie yang ditandatangani URLs dan ditandatangani.
- 1.
Membuat pernyataan kebijakan untuk tanda tangan URL yang menggunakan kebijakan kustom
Selesaikan langkah-langkah berikut untuk membuat pernyataan kebijakan untuk tanda tangan URL yang menggunakan kebijakan khusus.
Misalnya pernyataan kebijakan yang mengontrol akses ke file dalam berbagai cara, lihatContoh pernyataan kebijakan untuk tanda tangan URL yang menggunakan kebijakan kustom.
Untuk membuat pernyataan kebijakan untuk tanda tangan URL yang menggunakan kebijakan kustom
-
Buat pernyataan kebijakan menggunakan JSON format berikut. Ganti simbol kurang dari (
<
) dan lebih besar dari (>
), dan deskripsi di dalamnya, dengan nilai Anda sendiri. Untuk informasi selengkapnya, lihat Nilai yang Anda tentukan dalam pernyataan kebijakan untuk tanda tangan URL yang menggunakan kebijakan kustom.{ "Statement": [ { "Resource": "<Optional but recommended: URL of the file>", "Condition": { "DateLessThan": { "AWS:EpochTime": <Required: ending date and time in Unix time format and UTC> }, "DateGreaterThan": { "AWS:EpochTime": <Optional: beginning date and time in Unix time format and UTC> }, "IpAddress": { "AWS:SourceIp": "<Optional: IP address>" } } } ] }
Perhatikan hal berikut:
-
Anda hanya dapat memasukkan satu pernyataan dalam kebijakan.
-
Gunakan UTF pengkodean karakter -8.
-
Sertakan semua nama tanda baca dan parameter persis seperti yang ditentukan. Singkatan untuk nama parameter tidak diterima.
-
Urutan parameter di
Condition
tidak masalah. -
Untuk informasi tentang nilai untuk
Resource
,DateLessThan
,DateGreaterThan
, danIpAddress
, lihat Nilai yang Anda tentukan dalam pernyataan kebijakan untuk tanda tangan URL yang menggunakan kebijakan kustom.
-
-
Hapus semua spasi kosong (termasuk tab dan karakter baris baru) dari pernyataan kebijakan. Anda mungkin harus memasukkan karakter escape dalam string di kode aplikasi.
-
Base64-encode pernyataan kebijakan menggunakan MIME pengkodean base64. Untuk informasi selengkapnya, lihat Bagian 6.8, Base64 Content-Transfer-Encoding
di RFC2045, MIME (Ekstensi Email Internet Serbaguna) Bagian Satu: Format Badan Pesan Internet. -
Ganti karakter yang tidak valid dalam string URL kueri dengan karakter yang valid. Tabel berikut mencantumkan karakter yang tidak valid dan valid.
Ganti karakter tidak valid ini Dengan karakter valid ini +
- (tanda hubung)
=
_ (garis bawah)
/
~ (tilde)
-
Tambahkan nilai yang dihasilkan ke tanda tangan Anda URL setelahnya
Policy=
. -
Buat tanda tangan untuk tanda tangan yang ditandatangani URL dengan hashing, penandatanganan, dan base64 yang menyandikan pernyataan kebijakan. Untuk informasi selengkapnya, lihat Membuat tanda tangan untuk tanda tangan URL yang menggunakan kebijakan kustom.
Nilai yang Anda tentukan dalam pernyataan kebijakan untuk tanda tangan URL yang menggunakan kebijakan kustom
Saat Anda membuat pernyataan kebijakan untuk kebijakan kustom, Anda menentukan nilai berikut.
- Sumber Daya
-
ItuURL, termasuk string kueri apa pun, tetapi tidak termasuk CloudFront
Policy
,Signature
, danKey-Pair-Id
parameter. Sebagai contoh:https://d111111abcdef8.cloudfront.net/images/horizon.jpg\?size=large&license=yes
Anda hanya dapat menentukan satu URL nilai untuk
Resource
.penting
Anda dapat menghilangkan
Resource
parameter dalam kebijakan, tetapi melakukannya berarti siapa pun yang memiliki tanda tangan URL dapat mengakses semua file dalam distribusi apa pun yang terkait dengan key pair yang Anda gunakan untuk membuat tanda tanganURL.Perhatikan hal berikut:
-
Protokol – Nilai harus dimulai dengan
http://
,https://
, atau*://
. -
Parameter string kueri — Jika URL memiliki parameter string kueri, gunakan karakter garis miring terbalik (
\
) untuk menghindari karakter tanda tanya (?
) yang memulai string kueri. Sebagai contoh:https://d111111abcdef8.cloudfront.net/images/horizon.jpg\?size=large&license=yes
-
Karakter wildcard — Anda dapat menggunakan karakter wildcard URL dalam kebijakan. Karakter wildcard berikut didukung:
-
asterisk (
*
), yang cocok dengan nol atau lebih karakter -
tanda tanya (
?
), yang cocok persis dengan satu karakter
Jika CloudFront sesuai dengan kebijakan URL dalam HTTP permintaan, URL dalam kebijakan dibagi menjadi empat bagian—protokol, domain, jalur, dan string kueri—sebagai berikut: URL
[protocol]://[domain]/[path]\?[query string]
Bila Anda menggunakan karakter wildcard dalam kebijakan, pencocokan wildcard hanya berlaku dalam batas-batas bagian yang berisi wildcard. URL Misalnya, pertimbangkan ini URL dalam kebijakan:
https://www.example.com/hello*world
Dalam contoh ini, wildcard asterisk (
*
) hanya berlaku di dalam bagian jalur, sehingga cocok dengan URLshttps://www.example.com/helloworld
danhttps://www.example.com/hello-world
, tetapi tidak cocok dengan. URLhttps://www.example.net/hello?world
Pengecualian berikut berlaku untuk batas bagian untuk pencocokan wildcard:
-
Tanda bintang di bagian jalur menyiratkan tanda bintang di bagian string kueri. Misalnya,
http://example.com/hello*
setara denganhttp://example.com/hello*\?*
. -
Tanda bintang tertinggal di bagian domain menyiratkan tanda bintang di bagian jalur dan string kueri. Misalnya,
http://example.com*
setara denganhttp://example.com*/*\?*
. -
A URL dalam kebijakan dapat menghilangkan bagian protokol dan mulai dengan tanda bintang di bagian domain. Dalam hal ini, bagian protokol secara implisit diatur ke tanda bintang. Misalnya, URL
*example.com
dalam kebijakan setara dengan*://*example.com/
. -
Tanda bintang dengan sendirinya (
"Resource": "*"
) cocok dengan apa punURL.
Misalnya, nilai:
https://d111111abcdef8.cloudfront.net/*game_download.zip*
dalam kebijakan cocok dengan semua hal berikutURLs:-
https://d111111abcdef8.cloudfront.net/game_download.zip
-
https://d111111abcdef8.cloudfront.net/example_game_download.zip?license=yes
-
https://d111111abcdef8.cloudfront.net/test_game_download.zip?license=temp
-
-
Nama domain alternatif — Jika Anda menentukan nama domain alternatif (CNAME) URL dalam kebijakan, HTTP permintaan harus menggunakan nama domain alternatif di halaman web atau aplikasi Anda. Jangan tentukan Amazon S3 URL untuk file dalam kebijakan.
-
- DateLessThan
-
Tanggal kedaluwarsa dan waktu untuk URL dalam format waktu Unix (dalam detik) dan Waktu Universal Terkoordinasi (). UTC Dalam kebijakan, jangan lampirkan nilai dalam tanda kutip. Untuk selengkapnyaUTC, lihat Tanggal dan Waktu di Internet: Stempel
Waktu. Misalnya, 31 Januari 2023 10:00 UTC mengonversi ke 1675159200 dalam format waktu Unix.
Ini adalah satu-satunya parameter yang diperlukan di
Condition
bagian ini. CloudFront memerlukan nilai ini untuk mencegah pengguna memiliki akses permanen ke konten pribadi Anda.Untuk informasi selengkapnya, silakan lihat Saat CloudFront memeriksa tanggal kedaluwarsa dan waktu dalam tanda tangan URL
- DateGreaterThan (Opsional)
-
Tanggal dan waktu mulai opsional untuk format waktu URL dalam Unix (dalam detik) dan Waktu Universal Terkoordinasi (UTC). Pengguna tidak diizinkan untuk mengakses file pada atau sebelum tanggal dan waktu yang ditentukan. Jangan melampirkan nilai dalam tanda petik.
- IpAddress (Opsional)
-
Alamat IP klien yang membuat HTTP permintaan. Perhatikan hal berikut:
-
Untuk mengizinkan alamat IP mengakses file, hapus
IpAddress
parameter. -
Anda dapat menentukan salah satu alamat IP atau satu rentang alamat IP. Anda tidak dapat menggunakan kebijakan untuk mengizinkan akses jika alamat IP klien berada di salah satu dari dua rentang terpisah.
-
Untuk memungkinkan akses dari satu alamat IP, Anda menentukan:
"
IPv4 IP address
/32"
-
Anda harus menentukan rentang alamat IP dalam IPv4 CIDR format standar (misalnya,
192.0.2.0/24
). Untuk informasi selengkapnya, lihat Perutean Antar Domain Tanpa Kelas (CIDR): Rencana Penetapan dan Agregasi Alamat Internet. penting
Alamat IP dalam IPv6 format, seperti 2001:0 db 8:85 a3: :8a2e: 0370:7334, tidak didukung.
Jika Anda menggunakan kebijakan khusus yang menyertakan
IpAddress
, jangan aktifkan IPv6 distribusi. Jika Anda ingin membatasi akses ke beberapa konten berdasarkan alamat IP dan IPv6 permintaan dukungan untuk konten lain, Anda dapat membuat dua distribusi. Untuk informasi selengkapnya, lihat Aktifkan IPv6 dalam topik Referensi pengaturan distribusi.
-
Contoh pernyataan kebijakan untuk tanda tangan URL yang menggunakan kebijakan kustom
Contoh pernyataan kebijakan berikut menunjukkan cara mengontrol akses ke file tertentu, semua file di direktori, atau semua file yang terkait dengan ID pasangan kunci. Contoh juga menunjukkan cara mengontrol akses dari alamat IP individual atau berbagai alamat IP, dan bagaimana mencegah pengguna menggunakan tanda tangan URL setelah tanggal dan waktu yang ditentukan.
Jika Anda menyalin dan menempelkan salah satu contoh ini, hapus spasi kosong (termasuk tab dan karakter baris baru), ganti nilai dengan nilai Anda sendiri, dan sertakan karakter baris baru setelah tanda kurung kurung penutup (). }
Untuk informasi selengkapnya, lihat Nilai yang Anda tentukan dalam pernyataan kebijakan untuk tanda tangan URL yang menggunakan kebijakan kustom.
Topik
Contoh pernyataan kebijakan: Akses satu file dari berbagai alamat IP
Contoh kebijakan kustom berikut dalam tanda tangan URL menetapkan bahwa pengguna dapat mengakses file https://d111111abcdef8.cloudfront.net/game_download.zip
dari alamat IP dalam rentang 192.0.2.0/24
hingga 31 Januari 2023 10:00: UTC
{ "Statement": [ { "Resource": "https://d111111abcdef8.cloudfront.net/game_download.zip", "Condition": { "IpAddress": { "AWS:SourceIp": "192.0.2.0/24" }, "DateLessThan": { "AWS:EpochTime": 1675159200 } } } ] }
Contoh pernyataan kebijakan: Akses semua file dalam direktori dari berbagai alamat IP
Contoh kebijakan kustom berikut memungkinkan Anda membuat tanda tangan URLs untuk file apa pun di training
direktori, seperti yang ditunjukkan oleh karakter wildcard asterisk (*
) dalam parameter. Resource
Pengguna dapat mengakses file dari alamat IP dalam kisaran 192.0.2.0/24
hingga 31 Januari 2023 10:00: UTC
{ "Statement": [ { "Resource": "https://d111111abcdef8.cloudfront.net/training/*", "Condition": { "IpAddress": { "AWS:SourceIp": "192.0.2.0/24" }, "DateLessThan": { "AWS:EpochTime": 1675159200 } } } ] }
Setiap yang ditandatangani URL dengan mana Anda menggunakan kebijakan ini memiliki URL yang mengidentifikasi file tertentu, misalnya:
https://d111111abcdef8.cloudfront.net/training/orientation.pdf
Contoh pernyataan kebijakan: Akses semua file yang terkait dengan ID key pair dari satu alamat IP
Contoh kebijakan kustom berikut memungkinkan Anda membuat tanda tangan URLs untuk file apa pun yang terkait dengan distribusi apa pun, seperti yang ditunjukkan oleh karakter wildcard asterisk (*
) dalam parameter. Resource
Yang ditandatangani URL harus menggunakan https://
protokol, bukanhttp://
. Pengguna harus menggunakan alamat IP 192.0.2.10/32
. (Nilai 192.0.2.10/32
dalam CIDR notasi mengacu pada satu alamat IP,192.0.2.10
.) File hanya tersedia mulai 31 Januari 2023 10:00 UTC hingga 2 Februari 2023 10:00: UTC
{ "Statement": [ { "Resource": "https://*", "Condition": { "IpAddress": { "AWS:SourceIp": "192.0.2.10/32" }, "DateGreaterThan": { "AWS:EpochTime": 1675159200 }, "DateLessThan": { "AWS:EpochTime": 1675332000 } } } ] }
Setiap yang ditandatangani URL dengan mana Anda menggunakan kebijakan ini memiliki URL yang mengidentifikasi file tertentu dalam CloudFront distribusi tertentu, misalnya:
https://d111111abcdef8.cloudfront.net/training/orientation.pdf
Tanda tangan URL juga menyertakan ID key pair, yang harus dikaitkan dengan grup kunci tepercaya dalam distribusi (d111111abcdef8.cloudfront.net) yang Anda tentukan di. URL
Membuat tanda tangan untuk tanda tangan URL yang menggunakan kebijakan kustom
Tanda tangan untuk tanda tangan URL yang menggunakan kebijakan kustom adalah versi pernyataan kebijakan yang di-hash, ditandatangani, dan dikodekan base64. Untuk membuat tanda tangan untuk kebijakan kustom, selesaikan langkah berikut.
Untuk informasi tambahan dan contoh cara membuat, menandatangani, dan mengkode pernyataan kebijakan, lihat:
Opsi 1: Untuk membuat tanda tangan dengan menggunakan kebijakan khusus
-
Gunakan fungsi hash SHA -1 dan RSA hash dan tandatangani pernyataan JSON kebijakan yang Anda buat dalam prosedur. Untuk membuat pernyataan kebijakan untuk tanda tangan URL yang menggunakan kebijakan kustom Gunakan versi pernyataan kebijakan yang tidak lagi menyertakan spasi kosong tetapi belum dikodekan base64.
Untuk kunci privat yang diperlukan oleh fungsi hash, gunakan kunci pribadi yang kunci publiknya berada dalam grup kunci yang dipercaya aktif untuk distribusi.
catatan
Metode yang Anda gunakan untuk men-emuk dan menandatangani pernyataan kebijakan tergantung pada bahasa pemrograman dan platform Anda. Untuk kode sampel, lihat Contoh kode untuk membuat tanda tangan untuk ditandatangani URL.
-
Hapus spasi kosong (termasuk tab dan karakter baris baru) dari string hash dan ditandatangani.
-
Base64-encode string menggunakan MIME base64 encoding. Untuk informasi selengkapnya, lihat Bagian 6.8, Base64 Content-Transfer-Encoding
di RFC2045, MIME (Ekstensi Email Internet Serbaguna) Bagian Satu: Format Badan Pesan Internet. -
Ganti karakter yang tidak valid dalam string URL kueri dengan karakter yang valid. Tabel berikut mencantumkan karakter yang tidak valid dan valid.
Ganti karakter tidak valid ini Dengan karakter valid ini +
- (tanda hubung)
=
_ (garis bawah)
/
~ (tilde)
-
Tambahkan nilai yang dihasilkan ke tanda tangan Anda URL setelahnya
&Signature=
, dan kembali Untuk membuat tanda tangan URL menggunakan kebijakan kustom ke selesai menggabungkan bagian-bagian yang Anda tandatangani. URL