Dengan enkripsi sisi klien, Anda dapat mengenkripsi data secara lokal sebelum mengunggahnya ke Object Storage Service (OSS). Hal ini memastikan bahwa hanya pemegang kunci yang berwenang yang dapat mendekripsi data, meningkatkan keamanan selama transmisi dan penyimpanan.
Peringatan
Contoh kode dalam topik ini menggunakan ID Wilayah China (Hangzhou)
cn-hangzhoudan titik akhir publiknya sebagai referensi. Jika Anda ingin mengakses OSS dari produk Alibaba Cloud lain di wilayah yang sama, gunakan titik akhir internal. Untuk informasi lebih lanjut tentang Wilayah dan titik akhir yang didukung oleh OSS, lihat Wilayah dan Titik Akhir.Saat menggunakan fitur enkripsi sisi klien, Anda bertanggung jawab atas keamanan dan integritas kunci master.
Saat menyalin atau memigrasikan data terenkripsi, Anda bertanggung jawab atas integritas metadata enkripsi.
Definisi metode
Python SDK V2 mendukung dua jenis kunci master berikut:
Kunci Master RSA yang Dikelola Pengguna
SDK menyediakan implementasi default Rivest-Shamir-Adleman (RSA). Untuk menggunakan metode ini, Anda harus memberikan kunci publik dan kunci privat dari kunci master sebagai parameter ke SDK.
Kunci Master Kustom
Jika metode kunci master RSA tidak memenuhi kebutuhan Anda, Anda dapat mengimplementasikan perilaku enkripsi dan dekripsi sendiri untuk kunci master.
Kedua metode enkripsi ini secara efektif mencegah kebocoran data dan melindungi keamanan data sisi klien Anda. Bahkan jika data terenkripsi bocor, pihak yang tidak berwenang tidak akan dapat mendekripsi data mentah.
Untuk informasi lebih lanjut tentang prinsip enkripsi sisi klien di OSS, lihat Enkripsi Sisi Klien.
Untuk menggunakan enkripsi sisi klien, Anda harus terlebih dahulu membuat instance klien enkripsi dan kemudian memanggil antarmuka yang disediakannya. Objek Anda akan secara otomatis dienkripsi dan didekripsi selama operasi yang sesuai.
class EncryptionClient:
...
def __init__(self,client: Client, master_cipher: MasterCipher, decrypt_master_ciphers: Optional[List[MasterCipher]] = None)Parameter permintaan
Parameter | Tipe | Deskripsi |
client | *Client | Sebuah instance klien non-enkripsi. |
master_cipher | MasterCipher | Instance kunci master yang digunakan untuk mengenkripsi dan mendekripsi kunci data. |
decrypt_master_ciphers | List[MasterCipher] | Instance kunci master yang digunakan untuk mendekripsi kunci data. |
Tabel berikut mencantumkan antarmuka yang disediakan oleh EncryptionClient.
Antarmuka | Deskripsi |
get_object_meta | Mendapatkan metadata parsial dari sebuah objek. |
head_object | Mendapatkan semua metadata dari sebuah objek. |
get_object | Mengunduh dan secara otomatis mendekripsi sebuah objek. |
put_object | Mengunggah dan secara otomatis mengenkripsi sebuah objek. |
initiate_multipart_upload | Menginisialisasi peristiwa unggah multipart dan konteks enkripsi multipart (EncryptionMultiPartContext). |
upload_part | Menginisialisasi peristiwa unggah multipart. Panggil antarmuka ini untuk mengunggah bagian data dan secara otomatis mengenkripsinya. Saat Anda memanggil antarmuka ini, Anda harus menetapkan konteks enkripsi multipart. |
complete_multipart_upload | Setelah semua bagian diunggah, panggil antarmuka ini untuk menggabungkannya menjadi satu file. |
abort_multipart_upload | Membatalkan peristiwa unggah multipart dan menghapus data bagian yang sesuai. |
list_parts | Mendaftar semua bagian yang berhasil diunggah untuk peristiwa unggah tertentu. |
Menggunakan kunci master RSA
Menggunakan kunci master kustom
Referensi
Untuk informasi lebih lanjut tentang prinsip enkripsi sisi klien di OSS, lihat Enkripsi Sisi Klien.
Untuk informasi lebih lanjut tentang operasi enkripsi sisi klien di Python SDK V2, lihat Panduan Pengguna.
Untuk kode sampel lengkap menggunakan kunci master RSA untuk unggah dan unduh objek sederhana, lihat Contoh GitHub.
Untuk kode sampel lengkap menggunakan kunci master berbasis KMS untuk unggah dan unduh objek sederhana, lihat Contoh GitHub.