Enkripsi sisi klien OSS memungkinkan Anda mengenkripsi data secara lokal sebelum mengunggahnya ke OSS. Hal ini memastikan bahwa hanya pemegang kunci yang berwenang yang dapat mendekripsi data, meningkatkan keamanan selama transmisi dan penyimpanan.
Peringatan
Kode contoh dalam topik ini menggunakan ID Wilayah China (Hangzhou),
cn-hangzhou, dan titik akhir publik secara default. Jika Anda ingin mengakses OSS dari layanan Alibaba Cloud lain di wilayah yang sama, gunakan titik akhir internal. Untuk informasi lebih lanjut tentang pemetaan antara Wilayah OSS dan titik akhir, lihat Wilayah dan Titik Akhir.Contoh-contoh dalam topik ini membaca kredensial akses dari variabel lingkungan. Untuk informasi lebih lanjut tentang cara mengonfigurasi kredensial akses, lihat Konfigurasi Kredensial Akses.
Saat menggunakan fitur enkripsi sisi klien, Anda bertanggung jawab atas integritas kunci utama.
Saat menyalin atau memigrasi data terenkripsi, Anda bertanggung jawab atas integritas metadata enkripsi.
Definisi Metode
Go SDK V2 mendukung metode berikut untuk menggunakan kunci master:
Menggunakan kunci master yang dikelola pengguna (RSA)
SDK menyediakan implementasi default dari RSA. Anda harus memberikan kunci publik dan kunci privat dari kunci master ke SDK sebagai parameter.
Menggunakan kunci master kustom
Jika metode kunci master RSA tidak memenuhi kebutuhan Anda, Anda dapat mengimplementasikan perilaku enkripsi dan dekripsi kustom untuk kunci master. Topik ini menggunakan Alibaba Cloud KMS 3.0 sebagai contoh untuk menunjukkan cara menyesuaikan enkripsi dan dekripsi kunci master.
Dengan menggunakan dua metode enkripsi ini, data klien dapat dilindungi secara efektif dari kebocoran. Bahkan jika data terenkripsi disusupi, data tersebut tidak dapat didekripsi untuk mengungkapkan data mentah.
Untuk informasi lebih lanjut tentang prinsip enkripsi sisi klien OSS, lihat Enkripsi Sisi Klien.
Untuk menggunakan enkripsi sisi klien, Anda harus terlebih dahulu membuat instance klien enkripsi dan kemudian memanggil antarmuka klien untuk melakukan operasi. Objek Anda akan dienkripsi dan didekripsi secara otomatis sebagai bagian dari permintaan.
type EncryptionClient struct {
...
}
func NewEncryptionClient(c *Client, masterCipher crypto.MasterCipher, optFns ...func(*EncryptionClientOptions)) (eclient *EncryptionClient, err error)Parameter permintaan
Parameter | Tipe | Deskripsi |
c | *Client | Sebuah instance klien non-terenkripsi |
masterCipher | crypto.MasterCipher | Instance kunci master, yang digunakan untuk mengenkripsi dan mendekripsi kunci data. |
optFns | ...func(*EncryptionClientOptions) | (Opsional) Opsi konfigurasi untuk klien enkripsi. |
Tabel berikut menjelaskan opsi EncryptionClientOptions.
Parameter | Tipe | Deskripsi |
MasterCiphers | []crypto.MasterCipher | Kelompok instance kunci master, yang digunakan untuk mendekripsi kunci data. |
Nilai Pengembalian
Nilai Pengembalian | Tipe | Deskripsi |
eclient | *EncryptionClient | Instance klien enkripsi. Parameter ini valid hanya ketika err adalah nil. |
err | error | Status pembuatan klien enkripsi. Jika operasi gagal, err tidak nil. |
Tabel berikut mencantumkan antarmuka EncryptionClient.
Antarmuka Dasar | Deskripsi |
GetObjectMeta | Mendapatkan beberapa metadata dari sebuah objek. |
HeadObject | Mendapatkan beberapa metadata dari sebuah objek. |
GetObject | Mengunduh sebuah objek dan secara otomatis mendekripsinya. |
PutObject | Mengunggah sebuah objek dan secara otomatis mengenkripsinya. |
InitiateMultipartUpload | Menginisialisasi event unggah multi-bagian dan konteks enkripsi sharding (EncryptionMultiPartContext). |
UploadPart | Menginisialisasi event unggah multi-bagian. Anda dapat memanggil antarmuka ini untuk mengunggah data bagian dan secara otomatis mengenkripsi data tersebut. Saat memanggil antarmuka ini, Anda harus menetapkan konteks enkripsi sharding. |
CompleteMultipartUpload | Setelah semua data bagian diunggah, Anda dapat memanggil antarmuka ini untuk menggabungkan bagian-bagian menjadi satu file. |
AbortMultipartUpload | Membatalkan event unggah multi-bagian dan menghapus data bagian yang sesuai. |
ListParts | Mendaftarkan semua bagian yang berhasil diunggah yang termasuk dalam event unggah tertentu. |
Antarmuka Lanjutan | Deskripsi |
NewDownloader | Membuat instance manajer unduhan. |
NewUploader | Membuat instance manajer unggahan. |
OpenFile | Membuat instance ReadOnlyFile. |
Antarmuka Pembantu | Deskripsi |
Unwrap | Mendapatkan instance klien non-terenkripsi. Anda dapat menggunakan instance ini untuk mengakses antarmuka dasar lainnya. |
Gunakan kunci master RSA
Gunakan kunci master kustom
Referensi
Untuk informasi lebih lanjut tentang prinsip enkripsi sisi klien OSS, lihat Enkripsi Sisi Klien.
Untuk informasi lebih lanjut tentang panduan pengguna Go SDK untuk enkripsi sisi klien, lihat Panduan Pengguna.
Untuk kode sampel lengkap untuk melakukan unggah dan unduh sederhana objek menggunakan kunci utama RSA, lihat Contoh GitHub.
Untuk kode sampel lengkap untuk melakukan unggah dan unduh sederhana objek menggunakan kunci utama KMS, lihat Contoh GitHub.