Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Batasi akses ke asal Amazon S3
CloudFront menyediakan dua cara untuk mengirim permintaan yang diautentikasi ke sumber Amazon S3: kontrol akses asal (OAC) dan identitas akses asal (OAI). OAC membantu Anda mengamankan asal Anda, seperti Amazon S3.
Se baiknya gunakan OAC sebagai gantinya karena mendukung fitur-fitur berikut:
-
Semua bucket Amazon S3 secara keseluruhan Wilayah AWS, termasuk Wilayah pilihan yang diluncurkan setelah Desember 2022
-
Enkripsi sisi server Amazon S3 dengan () AWS KMS SSE-KMS
-
Permintaan dinamis (
PUTdanDELETE) ke Amazon S3
OAI tidak mendukung fitur-fitur ini atau memerlukan solusi tambahan dalam skenario tersebut. Jika Anda sudah menggunakan OAI dan ingin bermigrasi, lihatBermigrasi dari identitas akses asal (OAI) ke kontrol akses asal (OAC).
Catatan
-
Saat menggunakan CloudFront OAC dengan sumber bucket Amazon S3, Anda harus menyetel Kep emilikan Objek Amazon S3 ke Bucket owner, default untuk bucket Amazon S3 baru. Jika Anda memerlukan ACL, gunakan setelan pilihan pemilik Bucket untuk mempertahankan kontrol atas objek yang diunggah melalui CloudFront.
-
Jika asal Anda adalah bucket Amazon S3 yang dikonfigurasi sebagai titik akhir situs web, Anda harus mengatur CloudFront nya sebagai asal khusus. Itu berarti Anda tidak dapat menggunakan OAC (atau OAI). OAC tidak mendukung pengalihan asal dengan menggunakan Lambda @Edge.
-
Jika Anda menggunakan Titik Multi-Region Akses Amazon S3 sebagai CloudFront sumber, lihatMembatasi akses ke asal Titik Multi-Region Akses Amazon S3. S3 Multi-Region Access Points memerlukan konfigurasi OAC yang berbeda.
Topik berikut menjelaskan cara menggunakan OAC dengan asal Amazon S3.
Topik
Buat kontrol akses asal baru
Selesaikan langkah-langkah yang dijelaskan dalam topik berikut untuk mengatur kontrol akses asal baru di CloudFront.
Prasyarat
Sebelum membuat dan mengatur kontrol akses asal (OAC), Anda harus memiliki CloudFront distribusi dengan sumber bucket Amazon S3. Origin ini harus berupa bucket S3 biasa, bukan bucket yang dikonfigurasi sebagai titik akhir situs web. Untuk informasi selengkapnya tentang menyiapkan CloudFront distribusi dengan asal bucket S3, lihatMemulai dengan distribusi CloudFront standar.
penting
Saat Anda menggunakan OAC untuk mengamankan asal Amazon S3 Anda, komunikasi antara CloudFront dan Amazon S3 selalu melalui HTTPS, tetapi hanya jika Anda memilih untuk selalu menandatangani permintaan. Anda harus memilih Permintaan tanda tangan (disarankan) di konsol atau tent always ukan di CloudFront API, AWS CLI, atau CloudFormation.
Jika Anda memilih opsi Jangan menandatangani permintaan atau Jangan mengganti header otorisasi sebagai gantinya, CloudFront gunakan protokol koneksi yang Anda tentukan dalam kebijakan berikut:
-
Kebijakan protokol asal (hanya asal khusus)
Misalnya, jika Anda memilih Jangan mengganti header otorisasi dan ingin menggunakan HTTPS antara CloudFront dan asal Amazon S3 Anda, gunakan Arahkan HTTP ke HTTPS atau HTTPS hanya untuk kebijakan protokol penampil.
Ber CloudFront ikan izin untuk mengakses bucket S3
Sebelum Anda membuat kontrol akses asal (OAC) atau mengaturnya dalam CloudFront distribusi, pastikan bahwa kontrol tersebut CloudFront memiliki izin untuk mengakses sumber bucket S3. Lakukan ini setelah membuat CloudFront distribusi, tetapi sebelum menambahkan OAC ke asal S3 dalam konfigurasi distribusi.
Gunakan kebijakan bucket S3 untuk mengiz CloudFront inkan service principal (cloudfront.amazonaws.com) mengakses bucket. Gunakan Condition elemen dalam kebijakan CloudFront untuk mengizinkan akses bucket hanya jika permintaan tersebut atas nama CloudFront distribusi yang berisi asal S3. Ini adalah distribusi dengan asal S3 yang ingin Anda tambahkan OAC.
Untuk informasi tentang menambahkan atau memodifikasi kebijakan bucket, lihat Men ambahkan kebijakan bucket menggunakan konsol Amazon S3 di Panduan Pengguna Amazon S3.
Berikut ini adalah contoh kebijakan bucket S3 yang memungkinkan CloudFront distribusi dengan akses yang diaktifkan OAC ke asal S3.
contoh Kebijakan bucket S3 yang memungkinkan akses read-only untuk CloudFront distribusi dengan OAC diaktifkan
contoh Kebijakan bucket S3 yang memungkinkan akses baca dan tulis untuk CloudFront distribusi dengan OAC diaktifkan
SSE-KMS
Jika objek di asal bucket S3 dienkripsi menggunakan en kripsi sisi server dengan AWS Key Management Service (SSE-KMS), Anda harus memastikan bahwa CloudFront distribusi memiliki izin untuk menggunakan kunci. AWS KMS Untuk memberikan izin CloudFront distribusi untuk menggunakan kunci KMS, tambahkan pernyataan ke kebijakan kunci KMS. Untuk informasi tentang cara mengubah kebijakan kunci, lihat Meng ubah kebijakan kunci di Panduan Peng AWS Key Management Service embang.
contoh Pernyataan kebijakan utama KMS
Contoh berikut menunjukkan pernyataan AWS KMS kebijakan yang memungkinkan CloudFront distribusi dengan OAC untuk mengakses kunci KMS untuk. SSE-KMS
{ "Sid": "AllowCloudFrontServicePrincipalSSE-KMS", "Effect": "Allow", "Principal": { "Service": [ "cloudfront.amazonaws.com" ] }, "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:cloudfront::111122223333:distribution/<CloudFront distribution ID>" } } }
Buat kontrol akses asal
Untuk membuat kontrol akses asal (OAC), Anda dapat menggunakan Konsol Manajemen AWS, CloudFormation, AWS CLI, atau CloudFront API.
Hapus distribusi dengan OAC yang terpasang ke bucket S3
Jika Anda perlu menghapus distribusi dengan OAC yang terpasang ke bucket S3, Anda harus menghapus distribusi sebelum menghapus asal bucket S3. Atau, sertakan Wilayah dalam nama domain asal. Jika ini tidak memungkinkan, Anda dapat menghapus OAC dari distribusi dengan beralih ke publik sebelum dihapus. Untuk informasi selengkapnya, lihat Menghapus sebuah distribusi.
Bermigrasi dari identitas akses asal (OAI) ke kontrol akses asal (OAC)
Untuk bermigrasi dari identitas akses asal warisan (OAI) ke kontrol akses asal (OAC), pertama-tama perbarui asal bucket S3 untuk memungkinkan OAI dan distribusi dengan OAC diaktifkan mengakses konten bucket. Ini memastikan bahwa CloudFront tidak pernah kehilangan akses ke bucket selama transisi. Untuk mengizinkan OAI dan distribusi dengan OAC diaktifkan mengakses bucket S3, perbarui kebijakan bucket untuk menyertakan dua pernyataan, satu untuk setiap jenis prinsipal.
Contoh kebijakan bucket S3 berikut memungkinkan OAI dan distribusi dengan OAC diaktifkan untuk mengakses asal S3.
contoh Kebijakan bucket S3 yang memungkinkan akses read-only untuk OAI dan CloudFront distribusi dengan OAC diaktifkan
Setelah memperbarui kebijakan bucket S3 origin untuk mengizinkan akses ke OAI dan OAC, Anda dapat memperbarui konfigurasi distribusi untuk menggunakan OAC alih-alih OAI. Untuk informasi selengkapnya, lihat Buat kontrol akses asal baru.
Setelah distribusi sepenuhnya diterapkan, Anda dapat menghapus pernyataan dalam kebijakan bucket yang memungkinkan akses ke OAI. Untuk informasi selengkapnya, lihat Ber CloudFront ikan izin untuk mengakses bucket S3.
Pengaturan lanjutan untuk kontrol akses asal
Fitur kontrol akses CloudFront asal mencakup pengaturan lanjutan yang dimaksudkan hanya untuk kasus penggunaan tertentu. Gunakan pengaturan yang disarankan kecuali Anda memiliki kebutuhan khusus untuk pengaturan lanjutan.
Kontrol akses asal berisi pengaturan bernama Perilaku penandatanganan (di konsol), atau SigningBehavior (di API, CLI, dan CloudFormation). Pengaturan ini menyediakan opsi berikut:
- Selalu tanda tangani permintaan asal (pengaturan yang disarankan)
-
Sebaiknya gunakan setelan ini, bernama Permintaan tanda tangani (disarankan) di konsol, atau
alwaysdi API, CLI, dan CloudFormation. Dengan pengaturan ini, CloudFront selalu menandatangani semua permintaan yang dikirim ke asal bucket S3. - Jangan pernah menandatangani permintaan asal
-
Setelan ini diberi nama Jangan menandatangani permintaan di konsol, atau
neverdi API, CLI, dan CloudFormation. Gunakan pengaturan ini untuk mematikan kontrol akses asal untuk semua asal di semua distribusi yang menggunakan kontrol akses asal ini. Ini dapat menghemat waktu dan tenaga dibandingkan dengan menghapus kontrol akses asal dari semua asal dan distribusi yang menggunakannya, satu per satu. Dengan pengaturan ini, CloudFront tidak menandatangani permintaan apa pun yang dikirim ke asal bucket S3.Awas
Untuk menggunakan setelan ini, asal bucket S3 harus dapat diakses publik. Jika Anda menggunakan setelan ini dengan sumber bucket S3 yang tidak dapat diakses publik, CloudFront tidak dapat mengakses asal. Origin bucket S3 mengembalikan kesalahan ke CloudFront dan mener CloudFront uskan kesalahan tersebut ke pemirsa.
- Jangan mengganti header penampil (klien)
Authorization -
Pengaturan ini diberi nama Jangan mengganti header otorisasi di konsol, atau
no-overridedi API, CLI, dan. CloudFormation Gunakan pengaturan ini jika Anda CloudFront ingin menandatangani permintaan asal hanya jika permintaan penampil yang sesuai tidak menyertakanAuthorizationheader. Dengan pengaturan ini CloudFront , meneruskanAuthorizationheader dari permintaan penampil ketika ada, tetapi menandatangani permintaan asal (menambahkanAuthorizationheader sendiri) ketika permintaan penampil tidak menyertakanAuthorizationheader.Awas
Untuk meneruskan
Authorizationheader dari permintaan penampil, Anda harus menambahkanAuthorizationheader ke kebijakan cache untuk semua perilaku cache yang menggunakan sumber bucket S3 yang terkait dengan kontrol akses asal ini.
Gunakan identitas akses asal (lama, tidak disarankan)
CloudFront identitas akses asal (OAI) menyediakan fungsionalitas serupa dengan kontrol akses asal (OAC), tetapi tidak berfungsi untuk semua skenario. Secara khusus, OAI tidak mendukung:
-
Bucket Amazon S3 di semua Wilayah AWS, termasuk Wilayah pilihan
-
Enkripsi sisi server Amazon S3 dengan () AWS KMS SSE-KMS
-
Permintaan dinamis (
PUTPOST,, atauDELETE) ke Amazon S3 -
Baru Wilayah AWS diluncurkan setelah Januari 2023
Tip
Kami menyarankan Anda menggunakan OAC sebagai gantinya. Untuk mengatur OAC, lihatBuat kontrol akses asal baru. Untuk informasi tentang cara bermigrasi dari OAI ke OAC, lihat. Bermigrasi dari identitas akses asal (OAI) ke kontrol akses asal (OAC)
Saat membuat OAI atau menambahkannya ke distribusi dengan CloudFront konsol, Anda dapat memperbarui kebijakan bucket Amazon S3 secara otomatis untuk memberikan izin OAI untuk mengakses bucket Anda. Atau, Anda dapat memilih untuk membuat atau memperbarui kebijakan bucket secara manual. Metode apa pun yang Anda gunakan, Anda masih harus meninjau izin untuk memastikan bahwa:
-
CloudFront OAI Anda dapat mengakses file dalam bucket atas nama pemirsa yang memintanya. CloudFront
-
Pemirsa tidak dapat menggunakan URL Amazon S3 untuk mengakses file Anda di luar CloudFront.
penting
Jika Anda mengonfigurasi CloudFront untuk menerima dan meneruskan semua metode HTTP yang CloudFront mendukung, pastikan Anda memberikan izin yang diinginkan CloudFront kepada OAI Anda. Misalnya, jika Anda mengonfigurasi CloudFront untuk menerima dan meneruskan permintaan yang menggunakan DELETE metode ini, konfigurasikan kebijakan bucket untuk menangani DELETE permintaan dengan tepat sehingga pemirsa hanya dapat menghapus file yang Anda inginkan.
Gunakan kebijakan bucket Amazon S3
Anda dapat memberikan akses CloudFront OAI ke file dalam bucket Amazon S3 dengan membuat atau memperbarui kebijakan bucket dengan cara berikut:
-
Menggunakan tab Izin bucket Amazon S3 di konsol Amazon S3
. -
Menggunakan PutBucketPolicy di API Amazon S3.
-
Menggunakan CloudFront konsol
. Saat menambahkan OAI ke setelan asal di CloudFront konsol, Anda dapat memilih Ya, perbarui kebijakan bucket untuk memberitahu CloudFront untuk memperbarui kebijakan bucket atas nama Anda.
Jika Anda memperbarui kebijakan keranjang secara manual, pastikan bahwa Anda:
-
Tentukan OAI yang tepat sebagai
Principaldalam kebijakan. -
Berikan izin yang diperlukan OAI untuk mengakses objek atas nama penampil.
Untuk informasi selengkapnya, silakan lihat bagian-bagian berikut ini.
Tentukan OAI sebagai Prinsi pal dalam kebijakan bucket
Untuk menentukan OAI sebagai kebijakan bucket Amazon S3, gunakan Nama Sumber Daya Amazon (ARN) OAI, yang menyertakan ID OAI. Principal Contoh:
"Principal": { "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity<origin access identity ID>" }
Temukan ID OAI di CloudFront konsol di bawah Keamanan, Akses A sal, Identitas (warisan). Atau, gunakan ListCloudFrontOriginAccessIdentities di CloudFront API.
Berikan izin ke OAI
Untuk memberikan izin kepada OAI untuk mengakses objek di bucket Amazon S3 Anda, gunakan tindakan dalam kebijakan yang terkait dengan operasi API Amazon S3 tertentu. Misalnya, s3:GetObject tindakan memungkinkan OAI untuk membaca objek di bucket. Untuk informasi selengkapnya, lihat contoh di bagian berikut, atau lihat tindakan Amazon S3 di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.
Contoh kebijakan bucket Amazon S3
Contoh berikut menunjukkan kebijakan bucket Amazon S3 yang memungkinkan CloudFront OAI mengakses bucket S3.
Temukan ID OAI di CloudFront konsol di bawah Keamanan, Akses A sal, Identitas (warisan). Atau, gunakan ListCloudFrontOriginAccessIdentities di CloudFront API.
contoh Kebijakan buket Amazon S3 yang memberikan akses baca OAI
Contoh berikut memungkinkan OAI untuk membaca objek dalam buket yang ditentukan (s3:GetObject).
contoh Kebijakan buket Amazon S3 yang memberikan akses baca dan tulis OAI
Contoh berikut memungkinkan OAI untuk membaca dan menulis objek dalam buket yang ditentukan (s3:GetObject dan s3:PutObject). Ini memungkinkan pemirsa untuk mengunggah file ke bucket Amazon S3 Anda melalui CloudFront.
Gunakan ACL objek Amazon S3 (tidak disarankan)
penting
Sebaiknya gunakan kebijakan bucket Amazon S3 untuk memberikan akses OAI ke bucket S3. Anda dapat menggunakan daftar kontrol akses (ACL) seperti yang dijelaskan di bagian ini, tetapi kami tidak merekomendasikannya.
Amazon S3 merekomendasikan pengaturan Kep emilikan Objek S3 ke bucket owner yang dipaksakan, yang berarti ACL dinonaktifkan untuk bucket dan objek di dalamnya. Saat menerapkan pengaturan ini untuk Kepemilikan Objek, Anda harus menggunakan kebijakan bucket untuk memberikan akses ke OAI (lihat bagian sebelumnya).
Bagian berikut ini hanya untuk kasus penggunaan lama yang memerlukan ACL.
Anda dapat memberikan akses CloudFront OAI ke file dalam bucket Amazon S3 dengan membuat atau memperbarui ACL file dengan cara berikut:
-
Menggunakan tab Izin objek Amazon S3 di konsol Amazon S3
. -
Menggunakan PutObjectAcl di API Amazon S3.
Ketika Anda memberikan akses ke OAI menggunakan ACL, Anda harus menentukan OAI menggunakan ID pengguna kanonik Amazon S3. Di CloudFront konsol, Anda dapat menemukan ID ini di bawah Keamanan, Akses A sal, Identitas (warisan). Jika Anda menggunakan CloudFront API, gunakan nilai S3CanonicalUserId elemen yang dikembalikan saat Anda membuat OAI, atau memanggil ListCloudFrontOriginAccessIdentities CloudFront API.
Wilayah Amazon S3 yang lebih baru mengharuskan Anda menggunakan Signature Version 4 untuk permintaan yang diautentikasi. (Untuk versi tanda tangan yang didukung di setiap Wilayah Amazon S3, lihat titik akhir dan kuota Layanan Penyimpanan Sederhana Amazon di Referensi Umum AWS.) Jika Anda menggunakan identitas akses asal dan jika bucket Anda berada di salah satu Wilayah yang memerlukan Tanda Tangan Versi 4, perhatikan hal berikut:
-
DELETE,GET,HEAD,OPTIONS, danPATCHpermintaan didukung tanpa kualifikasi. -
POSTpermintaan tidak didukung.