Layanan Penyimpanan Objek (OSS) menyediakan enkripsi sisi server untuk data Anda. Saat Anda mengunggah data, OSS mengenkripsinya sebelum menyimpannya. Saat Anda mengunduh data, OSS secara otomatis mendekripsinya dan mengembalikan data mentah. Header respons HTTP menunjukkan bahwa data tersebut telah dienkripsi di server.
Catatan penggunaan
Sebelum mengonfigurasi enkripsi sisi server, pastikan Anda memahami fitur ini. Untuk informasi selengkapnya, lihat Server-side encryption.
Pada topik ini, titik akhir publik Wilayah China (Hangzhou) digunakan. Jika Anda ingin mengakses OSS dari layanan Alibaba Cloud lainnya yang berada di wilayah yang sama dengan OSS, gunakan titik akhir internal. Untuk informasi selengkapnya mengenai wilayah dan titik akhir OSS, lihat Regions and endpoints.
Pada topik ini, kredensial akses diperoleh dari variabel lingkungan. Untuk informasi selengkapnya tentang cara mengonfigurasi kredensial akses, lihat Configure access credentials using OSS SDK for Python 1.0.
Pada topik ini, instans OSSClient dibuat menggunakan titik akhir OSS. Jika Anda ingin membuat instans OSSClient menggunakan nama domain kustom atau Security Token Service (STS), lihat Initialization.
Untuk mengonfigurasi enkripsi bucket, Anda harus memiliki izin
oss:PutBucketEncryption. Untuk mengambil konfigurasi enkripsi bucket, Anda harus memiliki izinoss:GetBucketEncryption. Untuk menghapus konfigurasi enkripsi bucket, Anda harus memiliki izinoss:DeleteBucketEncryption. Untuk informasi selengkapnya, lihat Grant custom access policies to RAM users.
Konfigurasi enkripsi bucket
Anda dapat menggunakan kode berikut untuk mengatur metode enkripsi default untuk sebuah bucket. Setelah dikonfigurasi, setiap objek yang diunggah ke bucket tanpa metode enkripsi tertentu akan dienkripsi menggunakan metode default tersebut:
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
from oss2.models import ServerSideEncryptionRule
# Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Tentukan Endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di Wilayah China (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Tentukan wilayah tempat Endpoint berada, misalnya cn-hangzhou. Perhatikan bahwa parameter ini wajib untuk tanda tangan V4.
region = "cn-hangzhou"
# Tentukan nama bucket, misalnya examplebucket.
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
# Buat konfigurasi enkripsi bucket. Contoh ini menggunakan enkripsi AES256.
rule = ServerSideEncryptionRule()
rule.sse_algorithm = oss2.SERVER_SIDE_ENCRYPTION_AES256
# Atur ID kunci KMS. Anda dapat mengatur parameter ini jika menggunakan KMS untuk enkripsi. Untuk menggunakan kunci tertentu dalam enkripsi, masukkan ID CMK yang ditentukan. Jika Anda menggunakan CMK yang dikelola OSS untuk enkripsi, biarkan parameter ini kosong. Parameter ini harus kosong saat Anda menggunakan enkripsi AES256.
rule.kms_master_keyid = ""
# Konfigurasikan enkripsi bucket.
result = bucket.put_bucket_encryption(rule)
# Tampilkan kode respons HTTP.
print('http response code:', result.status)Dapatkan konfigurasi enkripsi bucket
Kode berikut mengambil konfigurasi enkripsi sebuah bucket:
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Tentukan Endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di Wilayah China (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Tentukan wilayah tempat Endpoint berada, misalnya cn-hangzhou. Perhatikan bahwa parameter ini wajib untuk tanda tangan V4.
region = "cn-hangzhou"
# Tentukan nama bucket, misalnya examplebucket.
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
# Dapatkan konfigurasi enkripsi bucket.
result = bucket.get_bucket_encryption()
# Cetak konfigurasi enkripsi yang diperoleh.
print('sse_algorithm:', result.sse_algorithm)
print('kms_master_keyid:', result.kms_master_keyid) # Jika bucket dienkripsi menggunakan AES256, kms_master_keyid bernilai None.Hapus konfigurasi enkripsi bucket
Kode berikut menghapus konfigurasi enkripsi sebuah bucket:
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Tentukan Endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di Wilayah China (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Tentukan wilayah tempat Endpoint berada, misalnya cn-hangzhou. Perhatikan bahwa parameter ini wajib untuk tanda tangan V4.
region = "cn-hangzhou"
# Tentukan nama bucket, misalnya examplebucket.
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
# Hapus konfigurasi enkripsi bucket.
result = bucket.delete_bucket_encryption()
# Tampilkan kode status HTTP.
print('http status:', result.status)Referensi
Untuk kode contoh lengkap mengenai enkripsi sisi server, lihat GitHub.
Untuk informasi selengkapnya mengenai operasi API yang digunakan untuk mengonfigurasi enkripsi sisi server, lihat PutBucketEncryption.
Untuk informasi selengkapnya mengenai operasi API yang digunakan untuk mengambil konfigurasi enkripsi sisi server, lihat GetBucketEncryption.
Untuk informasi selengkapnya mengenai operasi API yang digunakan untuk menghapus konfigurasi enkripsi sisi server, lihat DeleteBucketEncryption.