Memperbarui enkripsi sisi server untuk data yang ada - Amazon Simple Storage Service

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Memperbarui enkripsi sisi server untuk data yang ada

Semua bucket Amazon S3 memiliki enkripsi yang dikonfigurasi secara default, dan objek secara otomatis dienkripsi dengan menggunakan enkripsi di sisi server dengan kunci terkelola Amazon S3 (SSE-S3). Pengaturan enkripsi default ini berlaku untuk semua objek baru di bucket Amazon S3 Anda.

Dengan menggunakan operasi UpdateObjectEncryption API, Anda dapat memperbarui jenis enkripsi sisi server dari objek terenkripsi yang ada secara atomik dalam bucket tujuan umum dari enkripsi sisi server dengan enkripsi terkelola Amazon S3 (SSE-S3) ke enkripsi sisi server dengan () kunci enkripsi (SSE-KMS). AWS Key Management Service AWS KMS Operasi UpdateObjectEncryption API menggunakan enkripsi amplop untuk mengenkripsi ulang kunci data yang digunakan untuk mengenkripsi dan mendekripsi objek Anda dengan jenis enkripsi sisi server yang baru Anda tentukan.

Amazon S3 melakukan pembaruan jenis enkripsi ini tanpa pergerakan data apa pun. Dengan kata lain, saat Anda menggunakan UpdateObjectEncryption operasi, data Anda tidak disalin, objek yang diarsipkan di S3 Glacier Flexible Retrieval atau S3 Glacier Deep Archive tidak dipulihkan, dan objek di kelas penyimpanan S3 Intelligent-Tiering tidak dipindahkan antar tingkatan. Selain itu, UpdateObjectEncryption operasi mempertahankan semua properti metadata objek, termasuk kelas penyimpanan, tanggal pembuatan, tanggal modifikasi terakhir ETag, dan properti checksum.

UpdateObjectEncryptionOperasi ini didukung untuk semua kelas penyimpanan S3 yang didukung oleh bucket tujuan umum. Anda dapat menggunakan UpdateObjectEncryption operasi untuk melakukan hal berikut:

  • Ubah objek terenkripsi dari enkripsi sisi server dengan enkripsi terkelola Amazon S3 (SSE-S3) ke enkripsi sisi server dengan () kunci enkripsi (SSE-KMS). AWS Key Management Service AWS KMS

  • Perbarui objek terenkripsi SSE-KMS tingkat objek untuk menggunakan Kunci Bucket S3, yang mengurangi lalu lintas permintaan dari Amazon S3 ke. AWS KMS AWS KMS Untuk informasi selengkapnya, lihat Mengurangi biaya SSE-KMS dengan Kunci Bucket Amazon S3.

  • Ubah kunci KMS yang dikelola pelanggan yang digunakan untuk mengenkripsi data Anda sehingga Anda dapat mematuhi standar rotasi kunci kustom.

catatan

Objek sumber yang tidak dienkripsi, atau dienkripsi dengan enkripsi sisi server dua lapis dengan AWS KMS keys (DSSE-KMS) atau kunci enkripsi yang disediakan pelanggan (SSE-C) tidak didukung oleh operasi ini.

UpdateObjectEncryptionOperasi biasanya selesai dalam milidetik terlepas dari ukuran objek atau kelas penyimpanan, termasuk S3 Glacier Flexible Retrieval atau S3 Glacier Deep Archive. Operasi ini tidak dihitung sebagai akses untuk S3 Intelligent-Tiering, sehingga objek di tingkat Akses Jarang atau tingkat Akses Instan Arsip tidak akan secara otomatis kembali ke tingkat Akses Sering jika Anda mengubah jenis enkripsi sisi server objek Anda.

UpdateObjectEncryptionadalah operasi API tingkat objek (bidang data) yang dicatat ke log AWS CloudTrail akses server Amazon S3 dan peristiwa data. Untuk informasi selengkapnya, lihat Opsi pencatatan untuk Amazon S3.

UpdateObjectEncryptionOperasi ini dihargai sama denganPUT,, COPYPOST, dan LIST permintaan (per 1.000 permintaan) dan selalu dikenakan biaya sebagai permintaan kelas penyimpanan Standar S3 terlepas dari kelas penyimpanan objek yang mendasarinya. Untuk informasi selengkapnya, lihat Harga Amazon S3.

Pembatasan dan pertimbangan

Saat menggunakan UpdateObjectEncryption operasi, pembatasan dan pertimbangan berikut berlaku:

  • UpdateObjectEncryptionOperasi tidak mendukung objek yang tidak dienkripsi atau objek yang dienkripsi dengan enkripsi sisi server dua lapis dengan (DSSE-KMS) atau kunci enkripsi yang disediakan pelanggan AWS KMS keys (SSE-C). Selain itu, Anda tidak dapat menentukan SSE-S3 sebagai permintaan jenis enkripsi baru yang diminta. UpdateObjectEncryption

  • Anda dapat menggunakan UpdateObjectEncryption operasi untuk memperbarui objek dalam bucket yang mengaktifkan Versi S3. Untuk memperbarui jenis enkripsi versi tertentu, Anda harus menentukan ID versi dalam UpdateObjectEncryption permintaan Anda. Jika Anda tidak menentukan ID versi, UpdateObjectEncryption permintaan akan bertindak pada versi objek saat ini. Untuk informasi selengkapnya tentang Penentuan Versi S3, lihat Mempertahankan beberapa versi objek dengan Versi S3.

  • UpdateObjectEncryptionOperasi gagal pada objek apa pun yang memiliki mode retensi Kunci Objek S3 atau penahanan hukum yang diterapkan padanya. Jika objek memiliki periode retensi mode tata kelola atau penahanan hukum, Anda harus terlebih dahulu menghapus status Kunci Objek pada objek sebelum mengeluarkan permintaan. UpdateObjectEncryption Anda tidak dapat menggunakan UpdateObjectEncryption operasi dengan objek yang memiliki periode retensi mode kepatuhan Object Lock yang diterapkan padanya. Untuk informasi lebih lanjut tentang S3 Object Lock, lihat Mengunci objek dengan Object Lock.

  • UpdateObjectEncryptionpermintaan pada bucket sumber dengan replikasi langsung diaktifkan tidak akan memulai peristiwa replika di bucket tujuan. Jika Anda ingin mengubah jenis enkripsi objek di bucket sumber dan tujuan, Anda harus memulai UpdateObjectEncryption permintaan terpisah pada objek di bucket sumber dan tujuan.

  • Secara default, semua UpdateObjectEncryption permintaan yang menentukan kunci KMS yang dikelola pelanggan dibatasi untuk kunci KMS yang dimiliki oleh pemilik bucket. Akun AWS Jika Anda menggunakan AWS Organizations, Anda dapat meminta kemampuan untuk menggunakan yang AWS KMS keys dimiliki oleh akun anggota lain dalam organisasi Anda dengan menghubungi AWS Dukungan.

  • Jika Anda menggunakan Replikasi Batch S3 untuk mereplikasi kumpulan data lintas wilayah dan objek Anda sebelumnya memiliki jenis enkripsi sisi server yang diperbarui dari SSE-S3 ke SSE-KMS, Anda mungkin memerlukan izin tambahan. Di bucket wilayah sumber, Anda harus memiliki kms:decrypt izin. Kemudian, Anda akan memerlukan kms:encrypt izin kms:decrypt dan untuk bucket di wilayah tujuan.

  • Anda harus memberikan ARN kunci KMS lengkap dalam UpdateObjectEncryption permintaan Anda. Anda tidak dapat menggunakan nama alias atau alias ARN. Anda dapat menentukan ARN Kunci KMS lengkap di AWS KMS Console atau menggunakan AWS KMS API. DescribeKey

Izin yang diperlukan

Untuk melakukan UpdateObjectEncryption operasi, Anda harus memiliki izin berikut:

  • s3:PutObject

  • s3:UpdateObjectEncryption

  • kms:Encrypt

  • kms:Decrypt

  • kms:GenerateDataKey

  • kms:ReEncrypt*

Jika Anda menggunakan AWS Organizations, untuk menggunakan operasi ini dengan kunci KMS yang dikelola pelanggan dari orang lain Akun AWS dalam organisasi Anda, Anda harus memiliki izin. organizations:DescribeAccount Anda juga harus meminta kemampuan untuk menggunakan yang AWS KMS keys dimiliki oleh akun anggota lain dalam organisasi Anda dengan menghubungi AWS Dukungan.

Untuk melakukan UpdateObjectEncryption operasi, tambahkan kebijakan AWS Identity and Access Management (IAM) berikut ke peran IAM Anda. Untuk menggunakan kebijakan ini, ganti amzn-s3-demo-bucket dengan nama bucket tujuan umum Anda, dan ganti yang lain user input placeholders dengan informasi Anda sendiri.

{ "Version": "2012-10-17", "Statement": [{ "Sid": "AllowUpdateObjectEncryption", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:UpdateObjectEncryption", "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey", "kms:ReEncrypt*", "organizations:DescribeAccount" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*", "arn:aws:kms:us-east-1:111122223333:key/01234567-89ab-cdef-0123-456789abcdef" ] } ] }

Memperbarui enkripsi dalam jumlah besar

Untuk memperbarui jenis enkripsi sisi server lebih dari satu objek Amazon S3 dengan satu permintaan, Anda dapat menggunakan Operasi Batch S3. Anda dapat menyediakan Operasi Batch S3 dengan daftar objek yang akan dioperasikan, atau Anda dapat mengarahkan Operasi Batch untuk menghasilkan metadata objek berdasarkan daftar objek, termasuk awalan, kelas penyimpanan, tanggal pembuatan, jenis enkripsi, ARN kunci KMS, atau status Kunci Bucket S3. Operasi Batch S3 akan memanggil masing-masing operasi API untuk melakukan operasi tertentu. Satu pekerjaan Operasi Batch dapat melakukan operasi tertentu pada miliaran objek dalam bucket yang berisi petabyte data. Untuk informasi selengkapnya tentang Operasi Batch, lihatMelakukan operasi objek secara massal dengan Operasi Batch.

Operasi Batch S3 memiliki fitur melacak progres, mengirimkan notifikasi, dan menyimpan laporan penyelesaian terperinci dari semua tindakan, menyediakan pengalaman yang dikelola sepenuhnya, dapat diaudit, dan nirserver. Anda dapat menggunakan Operasi Batch S3 melalui konsol Amazon S3 AWS Command Line Interface ,AWS CLI( AWS SDKs), atau Amazon S3 REST API. Untuk informasi selengkapnya, lihat Perbarui enkripsi objek.

Memperbarui enkripsi untuk objek

Anda dapat memperbarui jenis enkripsi sisi server untuk objek melalui AWS Command Line Interface (AWS CLI) AWS SDKs, atau Amazon S3 REST API.

Memperbarui enkripsi untuk suatu objek

Untuk menjalankan perintah berikut, Anda harus AWS CLI menginstal dan mengkonfigurasi. Jika Anda belum menginstal, lihat Menginstal atau memperbarui ke versi terbaru dari AWS CLI Panduan AWS Command Line Interface Pengguna. AWS CLI

Atau, Anda dapat menjalankan AWS CLI perintah dari konsol dengan menggunakan AWS CloudShell. AWS CloudShell adalah shell berbasis browser dan pra-otentikasi yang dapat Anda luncurkan langsung dari file. Konsol Manajemen AWS Untuk informasi lebih lanjut, lihat Apa itu CloudShell? dan Memulai dengan AWS CloudShell di Panduan AWS CloudShell Pengguna.

Untuk memperbarui enkripsi untuk suatu objek dengan menggunakan AWS CLI

Untuk menggunakan perintah contoh berikut, ganti user input placeholders dengan informasi Anda sendiri.

  1. Gunakan perintah berikut untuk memperbarui enkripsi untuk satu objek (index.html) di bucket tujuan umum Anda (misalnya,amzn-s3-demo-bucket) untuk menggunakan SSE-KMS dengan Kunci Bucket S3:

    aws s3api update-object-encryption \ --bucket amzn-s3-demo-bucket \ --key index.html \ --object-encryption '{"SSEKMS": { "KMSKeyArn": "arn:aws:kms:us-east-1:111122223333:key/f12a345a-678e-9bbb-1025-62e317037583", "BucketKeyEnabled": true }}'
    catatan

    Anda harus menentukan Nama Sumber Daya AWS KMS key Amazon (ARN) lengkap. ID kunci KMS dan alias kunci KMS tidak didukung.

  2. Jalankan head-object perintah untuk melihat jenis enkripsi yang diperbarui dari objek Anda:

    aws s3api head-object --bucket amzn-s3-demo-bucket --key index.html

Anda dapat mengirim permintaan REST untuk memperbarui enkripsi objek. Untuk informasi selengkapnya, lihat UpdateObjectEncryption.

Anda dapat menggunakan AWS SDKs untuk memperbarui enkripsi untuk suatu objek. Untuk informasi selengkapnya, lihat daftar yang didukung SDKs.

Java
contoh

AWS SDK for Java 2.x Contoh berikut memperbarui jenis enkripsi ke SSE-KMS untuk objek dalam bucket tujuan umum.

public void updateObjectEncryption(String bucketName, String objectKey, String versionId, String kmsKeyArn, boolean bucketKeyEnabled) { // Create the target object encryption type. ObjectEncryption objectEncryption = ObjectEncryption.builder() .ssekms(SSEKMSEncryption.builder() .kmsKeyArn(kmsKeyArn) .bucketKeyEnabled(bucketKeyEnabled) .build()) .build(); // Create the UpdateObjectEncryption request. UpdateObjectEncryptionRequest request = UpdateObjectEncryptionRequest.builder() .bucket(bucketName) .key(objectKey) .versionId(versionId) .objectEncryption(objectEncryption) .build(); // Update the object encryption. try { getS3Client().updateObjectEncryption(request); logger.info("Object encryption updated to SSE-KMS for {} in bucket {}", objectKey, bucketName); } catch (S3Exception e) { logger.error("Failed to update to object encryption: {} - Error code: {}", e.awsErrorDetails().errorMessage(), e.awsErrorDetails().errorCode()); throw e; } }
Python
contoh

AWS SDK untuk Python (Boto3) Contoh berikut menunjukkan cara memperbarui jenis enkripsi ke SSE-KMS untuk objek dalam bucket tujuan umum.

response = client.update_object_encryption( Bucket='string', Key='string', VersionId='string', ObjectEncryption={ 'SSEKMS': { 'KMSKeyArn': 'string', 'BucketKeyEnabled': True|False } } )