全部产品
Search
文档中心

Object Storage Service:Enkripsi sisi server (Python SDK V2)

更新时间:Dec 06, 2025

OSS mendukung enkripsi sisi server untuk data yang diunggah. Saat Anda mengunggah data, OSS akan mengenkripsinya dan menyimpan data terenkripsi tersebut. Saat Anda mengunduh data, OSS secara otomatis mendekripsi data yang tersimpan dan mengembalikan data aslinya. Header respons HTTP menunjukkan bahwa data tersebut telah dienkripsi di server.

Catatan

  • Sebelum mengonfigurasi enkripsi sisi server, pastikan Anda memahami fitur ini. Untuk informasi selengkapnya, lihat Server-side encryption.

  • Kode contoh dalam topik ini menggunakan ID wilayah China (Hangzhou) cn-hangzhou sebagai contoh. Secara default, titik akhir publik digunakan. Jika Anda ingin mengakses OSS dari produk Alibaba Cloud lainnya di wilayah yang sama, Anda dapat menggunakan titik akhir internal. Untuk informasi selengkapnya tentang wilayah dan titik akhir yang didukung OSS, lihat Regions and endpoints.

  • Dalam topik ini, kredensial akses diambil dari variabel lingkungan. Untuk informasi selengkapnya tentang cara mengonfigurasi kredensial akses, lihat Configure access credentials.

  • Untuk mengonfigurasi enkripsi bucket, Anda harus memiliki izin oss:PutBucketEncryption. Untuk mengambil konfigurasi enkripsi bucket, Anda harus memiliki izin oss:GetBucketEncryption. Untuk menghapus konfigurasi enkripsi bucket, Anda harus memiliki izin oss:DeleteBucketEncryption. Untuk informasi selengkapnya, lihat Grant custom permissions to a RAM user.

Kode contoh

Konfigurasi enkripsi bucket

Anda dapat menggunakan kode berikut untuk mengatur metode enkripsi default untuk sebuah bucket. Setelah konfigurasi ini diterapkan, objek apa pun yang diunggah ke bucket tanpa metode enkripsi yang ditentukan akan dienkripsi menggunakan metode enkripsi default bucket tersebut.

import argparse
import alibabacloud_oss_v2 as oss

# Buat parser argumen command line untuk menerima parameter yang dimasukkan pengguna.
parser = argparse.ArgumentParser(description="put bucket encryption sample")

# Tambahkan argumen command line --region, yang menentukan wilayah tempat bucket berada. Argumen ini wajib diisi.
parser.add_argument('--region', help='The region in which the bucket is located.', required=True)

# Tambahkan argumen command line --bucket, yang menentukan nama bucket. Argumen ini wajib diisi.
parser.add_argument('--bucket', help='The name of the bucket.', required=True)

# Tambahkan argumen command line --endpoint, yang menentukan nama domain yang dapat digunakan layanan lain untuk mengakses OSS. Argumen ini opsional.
parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS')

# Tambahkan argumen command line --sse_algorithm, yang menentukan metode enkripsi sisi server default. Nilai default-nya adalah 'KMS'.
# Nilai yang valid: KMS (enkripsi menggunakan KMS), AES256 (enkripsi menggunakan AES-256), dan SM4 (enkripsi menggunakan algoritma kriptografi Tiongkok SM4).
parser.add_argument('--sse_algorithm', help='The default server-side encryption method. Valid values: KMS, AES256, and SM4.', default='KMS')

# Tambahkan argumen command line --kms_master_key_id, yang menentukan ID kunci utama ketika SSEAlgorithm diatur ke KMS dan CMK tertentu digunakan untuk enkripsi.
# Jika Anda tidak menggunakan CMK tertentu, biarkan parameter ini kosong.
parser.add_argument('--kms_master_key_id', help='The CMK ID that is specified when SSEAlgorithm is set to KMS and a specified CMK is used for encryption. In other cases, leave this parameter empty.', default='')

# Tambahkan argumen command line --kms_data_encryption, yang menentukan algoritma yang digunakan untuk mengenkripsi objek.
# Nilai default-nya adalah 'SM4'. Parameter ini hanya berlaku ketika SSEAlgorithm diatur ke KMS.
parser.add_argument('--kms_data_encryption', help='The algorithm that is used to encrypt objects. If this parameter is not specified, objects are encrypted using AES256. This parameter is valid only when SSEAlgorithm is set to KMS. Valid value: SM4', default='SM4')

def main():
    # Uraikan argumen command line.
    args = parser.parse_args()

    # Muat kredensial (AccessKeyId dan AccessKeySecret) dari variabel lingkungan.
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Muat konfigurasi default SDK.
    cfg = oss.config.load_default()

    # Atur penyedia kredensial.
    cfg.credentials_provider = credentials_provider

    # Atur wilayah tempat bucket berada.
    cfg.region = args.region

    # Jika titik akhir kustom disediakan, atur dalam konfigurasi.
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # Inisialisasi client OSS menggunakan objek konfigurasi.
    client = oss.Client(cfg)

    # Panggil metode put_bucket_encryption untuk mengatur konfigurasi enkripsi bucket.
    result = client.put_bucket_encryption(
        oss.PutBucketEncryptionRequest(
            bucket=args.bucket,  # Tentukan nama bucket tujuan.
            server_side_encryption_rule=oss.ServerSideEncryptionRule(
                apply_server_side_encryption_by_default=oss.ApplyServerSideEncryptionByDefault(
                    kms_master_key_id=args.kms_master_key_id,  # ID kunci utama. Parameter ini hanya berlaku ketika SSEAlgorithm diatur ke KMS.
                    kms_data_encryption=args.kms_data_encryption,  # Algoritma enkripsi objek. Parameter ini hanya berlaku ketika SSEAlgorithm diatur ke KMS.
                    sse_algorithm=args.sse_algorithm,  # Algoritma enkripsi sisi server, seperti KMS, AES256, atau SM4.
                ),
            ),
        )
    )

    # Cetak kode status dan ID permintaan dari hasil operasi.
    print(f'status code: {result.status_code}, '  # Kode status HTTP, yang menunjukkan apakah permintaan berhasil.
          f'request id: {result.request_id}')     # ID permintaan, yang digunakan untuk melacak log permintaan dan debugging.


if __name__ == "__main__":
    # Titik masuk program. Panggil fungsi main untuk menjalankan logika.
    main()

Ambil konfigurasi enkripsi bucket

Anda dapat menggunakan kode berikut untuk mengambil konfigurasi enkripsi bucket.

import argparse
import alibabacloud_oss_v2 as oss

# Buat parser argumen command line untuk menerima parameter yang dimasukkan pengguna.
parser = argparse.ArgumentParser(description="get bucket encryption sample")

# Tambahkan argumen command line --region, yang menentukan wilayah tempat bucket berada. Argumen ini wajib diisi.
parser.add_argument('--region', help='The region in which the bucket is located.', required=True)

# Tambahkan argumen command line --bucket, yang menentukan nama bucket. Argumen ini wajib diisi.
parser.add_argument('--bucket', help='The name of the bucket.', required=True)

# Tambahkan argumen command line --endpoint, yang menentukan nama domain yang dapat digunakan layanan lain untuk mengakses OSS. Argumen ini opsional.
parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS')

def main():
    # Uraikan argumen command line.
    args = parser.parse_args()

    # Muat kredensial (AccessKeyId dan AccessKeySecret) dari variabel lingkungan.
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Muat konfigurasi default SDK.
    cfg = oss.config.load_default()

    # Atur penyedia kredensial.
    cfg.credentials_provider = credentials_provider

    # Atur wilayah tempat bucket berada.
    cfg.region = args.region

    # Jika titik akhir kustom disediakan, atur dalam konfigurasi.
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # Inisialisasi client OSS menggunakan objek konfigurasi.
    client = oss.Client(cfg)

    # Panggil metode get_bucket_encryption untuk mendapatkan konfigurasi enkripsi bucket.
    result = client.get_bucket_encryption(
        oss.GetBucketEncryptionRequest(
            bucket=args.bucket,  # Tentukan nama bucket tujuan.
        )
    )

    # Cetak kode status dan ID permintaan dari hasil operasi.
    print(f'status code: {result.status_code}, '
          f'request id: {result.request_id}, '
    )


if __name__ == "__main__":
    # Titik masuk program. Panggil fungsi main untuk menjalankan logika.
    main()

Hapus konfigurasi enkripsi bucket

Anda dapat menggunakan kode berikut untuk menghapus konfigurasi enkripsi bucket.

import argparse
import alibabacloud_oss_v2 as oss

# Buat parser argumen command line untuk menerima parameter yang dimasukkan pengguna.
parser = argparse.ArgumentParser(description="delete bucket encryption sample")

# Tambahkan argumen command line --region, yang menentukan wilayah tempat bucket berada. Argumen ini wajib diisi.
parser.add_argument('--region', help='The region in which the bucket is located.', required=True)

# Tambahkan argumen command line --bucket, yang menentukan nama bucket. Argumen ini wajib diisi.
parser.add_argument('--bucket', help='The name of the bucket.', required=True)

# Tambahkan argumen command line --endpoint, yang menentukan nama domain yang dapat digunakan layanan lain untuk mengakses OSS. Argumen ini opsional.
parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS')

def main():
    # Uraikan argumen command line.
    args = parser.parse_args()

    # Muat kredensial (AccessKeyId dan AccessKeySecret) dari variabel lingkungan.
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Muat konfigurasi default SDK.
    cfg = oss.config.load_default()

    # Atur penyedia kredensial.
    cfg.credentials_provider = credentials_provider

    # Atur wilayah tempat bucket berada.
    cfg.region = args.region

    # Jika titik akhir kustom disediakan, atur dalam konfigurasi.
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # Inisialisasi client OSS menggunakan objek konfigurasi.
    client = oss.Client(cfg)

    # Panggil metode delete_bucket_encryption untuk menghapus konfigurasi enkripsi bucket.
    result = client.delete_bucket_encryption(
        oss.DeleteBucketEncryptionRequest(
            bucket=args.bucket,  # Tentukan nama bucket tujuan.
        )
    )

    # Cetak kode status dan ID permintaan dari hasil operasi.
    print(f'status code: {result.status_code}, '  # Kode status HTTP, yang menunjukkan apakah permintaan berhasil.
          f'request id: {result.request_id}')     # ID permintaan, yang digunakan untuk melacak permintaan.


if __name__ == "__main__":
    # Titik masuk program. Panggil fungsi main untuk menjalankan logika.
    main()

Referensi

  • Untuk informasi lebih lanjut tentang operasi API untuk mengonfigurasi enkripsi sisi server, lihat PutBucketEncryption.

  • Untuk informasi lebih lanjut tentang operasi API untuk mendapatkan konfigurasi enkripsi sisi server, lihat GetBucketEncryption.

  • Untuk informasi lebih lanjut tentang operasi API untuk menghapus konfigurasi enkripsi sisi server, lihat DeleteBucketEncryption.