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 Simple Storage Service
CloudFront menyediakan dua cara untuk mengirim permintaan yang diautentikasi ke asal Amazon S3: kontrol akses asal (OAC) dan identitas akses asal (OAI). OAC membantu Anda mengamankan asal Anda, seperti untuk Amazon S3. Kami merekomendasikan menggunakan OAC karena mendukung:
-
Semua bucket Amazon S3 secara keseluruhan Wilayah AWS, termasuk Wilayah keikutsertaan diluncurkan setelah Desember 2022
-
Enkripsi sisi server Amazon S3 dengan (SSE-KMS) AWS KMS
-
Permintaan dinamis (
PUT
danDELETE
) ke Amazon S3
Origin access identity (OAI) tidak berfungsi untuk skenario di daftar sebelumnya, atau memerlukan solusi tambahan dalam skenario tersebut. Topik berikut menjelaskan cara menggunakan kontrol akses asal (OAC) dengan asal Amazon S3. Untuk informasi tentang cara bermigrasi dari Origin Access Identity (OAI) ke Origin Access Control (OAC), lihat. Migrasi dari Origin Access Identity (OAI) ke Origin Access Control (OAC)
Catatan
-
Saat menggunakan CloudFront OAC dengan asal bucket Amazon S3, Anda harus menyetel Kepemilikan Objek Amazon S3 ke pemilik Bucket yang diberlakukan, 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 mengaturnya CloudFront sebagai asal khusus. Itu berarti Anda tidak dapat menggunakan OAC (atau OAI). OAC tidak mendukung pengalihan asal dengan menggunakan Lambda @Edge.
Topik
Buat kontrol akses asal baru
Selesaikan langkah-langkah yang dijelaskan dalam topik berikut untuk menyiapkan kontrol akses asal baru CloudFront.
Prasyarat
Sebelum membuat dan mengatur kontrol akses asal (OAC), Anda harus memiliki CloudFront distribusi dengan asal bucket Amazon S3. Asal 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 CloudFront distribusi dasar.
catatan
Saat Anda menggunakan OAC untuk mengamankan asal bucket S3, komunikasi antara CloudFront dan Amazon S3 selalu melalui HTTPS, terlepas dari pengaturan spesifik Anda.
Berikan izin kontrol akses asal untuk mengakses bucket S3
Sebelum Anda membuat kontrol akses asal (OAC) atau mengaturnya dalam CloudFront distribusi, pastikan OAC memiliki izin untuk mengakses asal bucket S3. Lakukan ini setelah membuat CloudFront distribusi, tetapi sebelum menambahkan OAC ke asal S3 dalam konfigurasi distribusi.
Untuk memberikan izin kepada OAC untuk mengakses bucket S3, gunakan kebijakan bucket S3 untuk mengizinkan CloudFront 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.
Untuk informasi tentang menambahkan atau memodifikasi kebijakan bucket, lihat Menambahkan kebijakan bucket menggunakan konsol Amazon S3 di Panduan Pengguna Amazon S3.
Berikut ini adalah contoh kebijakan bucket S3 yang memungkinkan CloudFront OAC mengakses asal S3.
contoh Kebijakan bucket S3 yang memungkinkan akses hanya-baca ke OAC CloudFront
{ "Version": "2012-10-17", "Statement": { "Sid": "AllowCloudFrontServicePrincipalReadOnly", "Effect": "Allow", "Principal": { "Service": "cloudfront.amazonaws.com" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::
<S3 bucket name>
/*", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:cloudfront::111122223333
:distribution/<CloudFront distribution ID>
" } } } }
contoh Kebijakan bucket S3 yang memungkinkan akses baca dan tulis ke OAC CloudFront
{ "Version": "2012-10-17", "Statement": { "Sid": "AllowCloudFrontServicePrincipalReadWrite", "Effect": "Allow", "Principal": { "Service": "cloudfront.amazonaws.com" }, "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": "arn:aws:s3:::
<S3 bucket name>
/*", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:cloudfront::111122223333
:distribution/<CloudFront distribution ID>
" } } } }
SSE-KMS
Jika objek dalam asal bucket S3 dienkripsi menggunakan enkripsi sisi server dengan AWS Key Management Service (SSE-KMS), Anda harus memastikan bahwa OAC memiliki izin untuk menggunakan kunci tersebut. AWS KMS Untuk memberikan izin OAC untuk menggunakan kunci KMS, tambahkan pernyataan ke kebijakan kunci KMS. Untuk informasi tentang cara mengubah kebijakan kunci, lihat Mengubah kebijakan kunci di Panduan AWS Key Management Service Pengembang.
Contoh berikut menunjukkan pernyataan kebijakan kunci KMS yang memungkinkan OAC untuk menggunakan kunci KMS.
contoh Pernyataan kebijakan kunci KMS yang memungkinkan CloudFront OAC 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 AWS Management Console AWS CloudFormation, AWS CLI, atau CloudFront API.
Hapus distribusi dengan OAC yang terpasang pada bucket S3
Jika Anda perlu menghapus distribusi dengan OAC yang terpasang pada 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.
Migrasi dari Origin Access Identity (OAI) ke Origin Access Control (OAC)
Untuk bermigrasi dari identitas akses asal lama (OAI) ke kontrol akses asal (OAC), perbarui terlebih dahulu asal bucket S3 untuk memungkinkan OAI dan OAC mengakses konten bucket. Ini memastikan bahwa CloudFront tidak pernah kehilangan akses ke bucket selama transisi. Untuk memungkinkan OAI dan OAC mengakses bucket S3, perbarui kebijakan bucket untuk menyertakan dua pernyataan, satu untuk setiap jenis prinsipal.
Contoh kebijakan bucket S3 berikut memungkinkan OAI dan OAC untuk mengakses asal S3.
contoh Kebijakan bucket S3 yang memungkinkan akses hanya-baca ke OAI dan OAC
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCloudFrontServicePrincipalReadOnly", "Effect": "Allow", "Principal": { "Service": "cloudfront.amazonaws.com" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::
<S3 bucket name>
/*", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:cloudfront::111122223333
:distribution/<CloudFront distribution ID>
" } } }, { "Sid": "AllowLegacyOAIReadOnly", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity<origin access identity ID>
" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::<S3 bucket name>
/*" } ] }
Setelah memperbarui kebijakan bucket asal S3 untuk mengizinkan akses ke OAI dan OAC, Anda dapat memperbarui konfigurasi distribusi untuk menggunakan OAC, bukan 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 Berikan izin kontrol akses asal untuk mengakses bucket S3.
Pengaturan lanjutan untuk kontrol akses asal
Fitur kontrol akses CloudFront asal mencakup pengaturan lanjutan yang ditujukan hanya untuk kasus penggunaan tertentu. Gunakan pengaturan yang disarankan kecuali Anda memiliki kebutuhan khusus untuk pengaturan lanjutan.
Kontrol akses asal berisi setelan bernama Perilaku penandatanganan (di konsol), atau SigningBehavior
(di API, CLI, dan AWS CloudFormation). Pengaturan ini menyediakan opsi berikut:
- Selalu tandatangani permintaan asal (pengaturan yang disarankan)
-
Sebaiknya gunakan pengaturan ini, bernama Permintaan tanda (disarankan) di konsol, atau
always
di API, CLI, dan. AWS CloudFormation Dengan pengaturan ini, CloudFront selalu tandatangani semua permintaan yang dikirimkan ke asal bucket S3. - Jangan pernah menandatangani permintaan asal
-
Pengaturan ini diberi nama Jangan menandatangani permintaan di konsol, atau
never
di API, CLI, dan. AWS CloudFormation Gunakan pengaturan ini untuk menonaktifkan 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 dikirimkan ke asal bucket S3.Awas
Untuk menggunakan pengaturan ini, asal bucket S3 harus dapat diakses publik. Jika Anda menggunakan setelan ini dengan asal bucket S3 yang tidak dapat diakses publik, CloudFront tidak dapat mengakses asal. Asal bucket S3 mengembalikan kesalahan ke CloudFront dan CloudFront meneruskan kesalahan tersebut ke pemirsa.
- Jangan mengganti header penampil (klien)
Authorization
-
Pengaturan ini diberi nama Jangan timpa header otorisasi di konsol, atau
no-override
di API, CLI, dan. AWS CloudFormation Gunakan pengaturan ini saat Anda CloudFront ingin menandatangani permintaan asal hanya jika permintaan penampil yang sesuai tidak menyertakanAuthorization
header. Dengan pengaturan ini, CloudFront meneruskanAuthorization
header dari permintaan penampil saat ada, tetapi menandatangani permintaan asal (menambahkan tajuknya sendiriAuthorization
) saat permintaan penampil tidak menyertakanAuthorization
header.Awas
Untuk meneruskan
Authorization
header dari permintaan penampil, Anda harus menambahkanAuthorization
header ke kebijakan cache untuk semua perilaku cache yang menggunakan asal bucket S3 yang terkait dengan kontrol akses asal ini.
Gunakan identitas akses asal (warisan, tidak disarankan)
CloudFront origin access identity (OAI) menyediakan fungsionalitas yang mirip dengan origin access control (OAC), tetapi tidak berfungsi untuk semua skenario. Inilah sebabnya mengapa kami merekomendasikan menggunakan OAC sebagai gantinya. Secara khusus, OAI tidak mendukung:
-
Bucket Amazon S3 di semua, termasuk Wilayah Wilayah AWS keikutsertaan
-
Enkripsi sisi server Amazon S3 dengan (SSE-KMS) AWS KMS
-
Permintaan dinamis (
PUT
POST
,, atauDELETE
) ke Amazon S3 -
Baru Wilayah AWS diluncurkan setelah Desember 2022
Untuk informasi tentang cara bermigrasi dari OAI ke OAC, lihat. Migrasi dari Origin Access Identity (OAI) ke Origin Access Control (OAC)
Saat membuat OAI atau menambahkannya ke distribusi dengan CloudFront konsol, Anda dapat memperbarui kebijakan bucket Amazon S3 secara otomatis untuk memberikan izin kepada 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 ember 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 CloudFront OAI izin yang diinginkan. Misalnya, jika Anda mengonfigurasi CloudFront untuk menerima dan meneruskan permintaan yang menggunakan DELETE
metode ini, konfigurasikan kebijakan bucket Anda untuk menangani DELETE
permintaan dengan tepat sehingga penonton hanya dapat menghapus file yang Anda inginkan.
Menggunakan kebijakan bucket Amazon S3
Anda dapat memberikan akses CloudFront OAI ke file di bucket Amazon S3 dengan membuat atau memperbarui kebijakan bucket dengan cara berikut:
-
Menggunakan PutBucketPolicydi Amazon S3 API.
-
Menggunakan CloudFront konsol
. Saat menambahkan OAI ke setelan asal di CloudFront konsol, Anda dapat memilih Ya, perbarui kebijakan bucket untuk memberi tahu CloudFront agar kebijakan bucket diperbarui atas nama Anda.
Jika Anda memperbarui kebijakan keranjang secara manual, pastikan bahwa Anda:
-
Tentukan OAI yang tepat sebagai
Principal
dalam kebijakan. -
Berikan izin yang diperlukan OAI untuk mengakses objek atas nama penampil.
Untuk informasi selengkapnya, silakan lihat bagian-bagian berikut ini.
Tentukan OAI sebagai Principal
kebijakan dalam bucket
Untuk menentukan OAI sebagai kebijakan bucket Amazon S3, gunakan Nama Sumber Daya Amazon (ARN) OAI, yang menyertakan ID OAI. Principal
Sebagai contoh:
"Principal": { "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity
<origin access identity ID>
" }
Temukan ID OAI di CloudFront konsol di bawah Security, Origin access, Identities (legacy). Atau, gunakan ListCloudFrontOriginAccessIdentitiesdi 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 ember. 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 Security, Origin access, Identities (legacy). Atau, gunakan ListCloudFrontOriginAccessIdentitiesdi 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
).
{ "Version": "2012-10-17", "Id": "PolicyForCloudFrontPrivateContent", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity
<origin access identity ID>
" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::<S3 bucket name>
/*" } ] }
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. CloudFront
{ "Version": "2012-10-17", "Id": "PolicyForCloudFrontPrivateContent", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity
<origin access identity ID>
" }, "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": "arn:aws:s3:::<S3 bucket name>
/*" } ] }
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 untuk menyetel Kepemilikan Objek S3 ke pemilik bucket yang diberlakukan, 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 di bucket Amazon S3 dengan membuat atau memperbarui ACL file dengan cara berikut:
-
Menggunakan PutObjectAcldi Amazon S3 API.
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 Asal, Identitas (warisan). Jika Anda menggunakan CloudFront API, gunakan nilai S3CanonicalUserId
elemen yang dikembalikan saat Anda membuat OAI, atau panggil ListCloudFrontOriginAccessIdentitiesdi 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 Amazon Simple Storage Service 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
, danPATCH
permintaan didukung tanpa kualifikasi. -
POST
permintaan tidak didukung.