全部产品
Search
文档中心

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

更新时间:Dec 06, 2025

Layanan Penyimpanan Objek (OSS) menyediakan enkripsi sisi server untuk data yang diunggah. Saat Anda mengunggah data, OSS akan mengenkripsi dan menyimpannya. Saat Anda mengunduh data tersebut, OSS secara otomatis mendekripsinya dan mengembalikan data aslinya. Header respons HTTP menunjukkan bahwa data tersebut telah dienkripsi di sisi server.

Catatan penggunaan

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

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

  • 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 Attach a custom policy to a RAM user.

Contoh

Konfigurasikan enkripsi bucket

Anda dapat menggunakan kode berikut untuk mengatur metode enkripsi default untuk sebuah bucket. Setelah dikonfigurasi, semua objek yang diunggah ke bucket tanpa metode enkripsi yang ditentukan akan dienkripsi menggunakan metode enkripsi default bucket tersebut.

<?php

// Impor file autoloader untuk memuat dependensi.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Definisikan deskripsi argumen command line.
$optsdesc = [
    "region" => ['help' => 'Wilayah tempat bucket berada', 'required' => True], // Wajib. Wilayah tempat bucket berada.
    "endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS', 'required' => False], // Opsional. Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.
    "bucket" => ['help' => 'Nama bucket', 'required' => True], // Wajib. Nama bucket.
];

// Hasilkan daftar opsi panjang untuk mengurai argumen command line.
$longopts = \array_map(function ($key) {
    return "$key:"; // Titik dua (:) setelah setiap parameter menunjukkan bahwa nilai diperlukan.
}, array_keys($optsdesc));

// Uraikan argumen command line.
$options = getopt("", $longopts); 

// Periksa apakah ada argumen wajib yang tidak diberikan.
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: the following arguments are required: --$key, $help"; // Beri tahu pengguna bahwa argumen wajib tidak diberikan.
        exit(1); 
    }
}

// Ambil nilai argumen command line.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.

// Muat kredensial (AccessKeyId dan AccessKeySecret) dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// Gunakan konfigurasi default SDK.
$cfg = Oss\Config::loadDefault();

// Atur penyedia kredensial.
$cfg->setCredentialsProvider($credentialsProvider);

// Atur wilayah.
$cfg->setRegion($region);

// Jika titik akhir disediakan, atur titik akhir tersebut.
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

// Buat instans client OSS.
$client = new Oss\Client($cfg);

// Buat objek permintaan untuk mengatur konfigurasi enkripsi bucket. Gunakan algoritma enkripsi KMS dan tentukan SM4 sebagai metode enkripsi data.
$request = new Oss\Models\PutBucketEncryptionRequest(
    bucket: $bucket, 
    serverSideEncryptionRule: new Oss\Models\ServerSideEncryptionRule(
        applyServerSideEncryptionByDefault: new Oss\Models\ApplyServerSideEncryptionByDefault(
            sseAlgorithm: 'KMS', // Gunakan algoritma enkripsi KMS.
            kmsDataEncryption: 'SM4' // Metode enkripsi data adalah SM4.
    ))
);

// Panggil metode putBucketEncryption untuk mengatur konfigurasi enkripsi bucket.
$result = $client->putBucketEncryption($request);

// Cetak respons.
printf(
    'status code:' . $result->statusCode . PHP_EOL . // Kode status respons HTTP.
    'request id:' . $result->requestId // Pengidentifikasi unik permintaan.
);

Ambil konfigurasi enkripsi bucket

Anda dapat menggunakan kode berikut untuk mengambil konfigurasi enkripsi bucket.

<?php

// Impor file autoloader untuk memuat dependensi.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Definisikan deskripsi argumen command line.
$optsdesc = [
    "region" => ['help' => 'Wilayah tempat bucket berada', 'required' => True], // Wajib. Wilayah tempat bucket berada.
    "endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS', 'required' => False], // Opsional. Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.
    "bucket" => ['help' => 'Nama bucket', 'required' => True], // Wajib. Nama bucket.
];

// Hasilkan daftar opsi panjang untuk mengurai argumen command line.
$longopts = \array_map(function ($key) {
    return "$key:"; // Titik dua (:) setelah setiap parameter menunjukkan bahwa nilai diperlukan.
}, array_keys($optsdesc));

// Uraikan argumen command line.
$options = getopt("", $longopts); 

// Periksa apakah ada argumen wajib yang tidak diberikan.
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: the following arguments are required: --$key, $help"; // Beri tahu pengguna bahwa argumen wajib tidak diberikan.
        exit(1); 
    }
}

// Ambil nilai argumen command line.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.

// Muat kredensial (AccessKeyId dan AccessKeySecret) dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// Gunakan konfigurasi default SDK.
$cfg = Oss\Config::loadDefault();

// Atur penyedia kredensial.
$cfg->setCredentialsProvider($credentialsProvider);

// Atur wilayah.
$cfg->setRegion($region);

// Jika titik akhir disediakan, atur titik akhir tersebut.
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

// Buat instans client OSS.
$client = new Oss\Client($cfg);

// Buat objek permintaan untuk mendapatkan konfigurasi enkripsi bucket.
$request = new Oss\Models\GetBucketEncryptionRequest(bucket: $bucket);

// Panggil metode getBucketEncryption untuk mendapatkan konfigurasi enkripsi bucket.
$result = $client->getBucketEncryption($request);

// Cetak respons.
printf(
    'status code:' . $result->statusCode . PHP_EOL . // Kode status respons HTTP.
    'request id:' . $result->requestId . PHP_EOL . // Pengidentifikasi unik permintaan.
    'encryption:' . var_export($result->serverSideEncryptionRule, true) // Konfigurasi enkripsi.
);

Hapus konfigurasi enkripsi bucket

Anda dapat menggunakan kode berikut untuk menghapus konfigurasi enkripsi bucket.

<?php

// Impor file autoloader untuk memuat dependensi.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Definisikan deskripsi argumen command line.
$optsdesc = [
    "region" => ['help' => 'Wilayah tempat bucket berada', 'required' => True], // Wajib. Wilayah tempat bucket berada.
    "endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS', 'required' => False], // Opsional. Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.
    "bucket" => ['help' => 'Nama bucket', 'required' => True], // Wajib. Nama bucket.
];

// Hasilkan daftar opsi panjang untuk mengurai argumen command line.
$longopts = \array_map(function ($key) {
    return "$key:"; // Titik dua (:) setelah setiap parameter menunjukkan bahwa nilai diperlukan.
}, array_keys($optsdesc));

// Uraikan argumen command line.
$options = getopt("", $longopts); 

// Periksa apakah ada argumen wajib yang tidak diberikan.
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: the following arguments are required: --$key, $help"; // Beri tahu pengguna bahwa argumen wajib tidak diberikan.
        exit(1); 
    }
}

// Ambil nilai argumen command line.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.

// Muat kredensial (AccessKeyId dan AccessKeySecret) dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// Gunakan konfigurasi default SDK.
$cfg = Oss\Config::loadDefault();

// Atur penyedia kredensial.
$cfg->setCredentialsProvider($credentialsProvider);

// Atur wilayah.
$cfg->setRegion($region);

// Jika titik akhir disediakan, atur titik akhir tersebut.
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

// Buat instans client OSS.
$client = new Oss\Client($cfg);

// Buat objek permintaan untuk menghapus konfigurasi enkripsi bucket.
$request = new Oss\Models\DeleteBucketEncryptionRequest(bucket: $bucket);

// Panggil metode deleteBucketEncryption untuk menghapus konfigurasi enkripsi bucket.
$result = $client->deleteBucketEncryption($request);

// Cetak respons.
printf(
    'status code:' . $result->statusCode . PHP_EOL . // Kode status respons HTTP.
    'request id:' . $result->requestId // Pengidentifikasi unik permintaan.
);

Referensi