全部产品
Search
文档中心

Object Storage Service:Kebijakan Bucket (PHP SDK V2)

更新时间:Nov 09, 2025

Kebijakan bucket memungkinkan Anda memberikan otorisasi atau membatasi akses pengguna anonim maupun teridentifikasi, seperti Akun Alibaba Cloud, Pengguna RAM, dan Peran RAM, ke sumber daya Object Storage Service (OSS) tertentu. Sebagai contoh, Anda dapat memberikan izin read-only pada sumber daya OSS tertentu kepada Pengguna RAM dari Akun Alibaba Cloud lainnya.

Catatan penggunaan

  • Sebelum mengonfigurasi kebijakan bucket, pastikan Anda memahami fitur ini. Untuk informasi lebih lanjut, lihat Kebijakan bucket.

  • Kode contoh dalam topik ini menggunakan ID wilayah cn-hangzhou untuk Wilayah Hangzhou, Tiongkok. Secara default, Titik akhir publik digunakan untuk mengakses sumber daya di bucket. Jika Anda ingin mengakses sumber daya di bucket menggunakan layanan Alibaba Cloud lainnya di wilayah yang sama dengan lokasi bucket, Anda harus menggunakan Titik akhir internal. Untuk informasi lebih lanjut tentang pemetaan antara wilayah OSS dan titik akhir, lihat Wilayah dan Titik Akhir.

  • Untuk menetapkan kebijakan bucket, Anda harus memiliki izin oss:PutBucketPolicy. Untuk mendapatkan kebijakan bucket, Anda harus memiliki izin oss:GetBucketPolicy. Untuk menghapus kebijakan bucket, Anda harus memiliki izin oss:DeleteBucketPolicy. Untuk informasi lebih lanjut, lihat Lampirkan Kebijakan Kustom ke Pengguna RAM.

Contoh

Konfigurasikan kebijakan bucket

Berikut adalah kode contoh yang menunjukkan cara mengonfigurasi kebijakan bucket:

<?php

// Masukkan file autoload untuk memuat pustaka dependen.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Tentukan parameter baris perintah.
$optsdesc = [
    "region" => ['help' => Wilayah tempat bucket berada.', 'required' => True], // (Diperlukan) Tentukan wilayah tempat bucket berada.
    "endpoint" => ['help' => Nama domain yang dapat digunakan layanan lain untuk mengakses OSS', 'required' => False], // (Opsional) Tentukan titik akhir yang dapat digunakan oleh layanan lain untuk mengakses OSS.
    "bucket" => ['help' => Nama bucket, 'required' => True], // (Diperlukan) Tentukan nama bucket.
];

// Hasilkan daftar opsi panjang untuk mengurai parameter baris perintah.
$longopts = \array_map(function ($key) {
    return "$key:"; // Tambahkan titik dua (:) di akhir setiap parameter untuk menunjukkan bahwa nilai diperlukan.
}, array_keys($optsdesc));

// Uraikan parameter baris perintah.
$options = getopt("", $longopts); 

// Periksa apakah parameter yang diperlukan telah dikonfigurasi.
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: argumen berikut diperlukan: --$key, $help"; // Tentukan bahwa parameter yang diperlukan belum dikonfigurasi.
        exit(1); 
    }
}

// Dapatkan nilai parameter baris perintah.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.

// Gunakan variabel lingkungan untuk memuat ID AccessKey dan Rahasia AccessKey.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

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

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

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

// Tentukan titik akhir jika titik akhir disediakan.
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

// Buat instance OSSClient.
$client = new Oss\Client($cfg);

// Tetapkan format kebijakan bucket ke JSON.
$policy = '{
    "Version":"1",
    "Statement":[
        {
            "Action":[
                "oss:PutObject",
                "oss:GetObject"
            ],
            "Effect":"Deny",
            "Principal":["1234567890"],
            "Resource":["acs:oss:*:1234567890:*/*"]
        }
    ]
}';

// Buat permintaan untuk mengonfigurasi kebijakan bucket dan lewati kebijakan bucket.
$request = new Oss\Models\PutBucketPolicyRequest(bucket: $bucket, policy: $policy);

// Gunakan metode putBucketPolicy untuk menentukan kebijakan bucket.
$result = $client->putBucketPolicy($request);

// Tampilkan hasil yang dikembalikan.
printf(
    'status code:' . $result->statusCode . PHP_EOL . // Kode status respons HTTP.
    'request id:' . $result-> requestId. PHP_EOL // Pengenal unik permintaan.
);

Kueri kebijakan bucket

Berikut adalah kode contoh yang menunjukkan cara menanyakan kebijakan bucket:

<?php

// Masukkan file autoload untuk memuat pustaka dependen.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Tentukan parameter baris perintah.
$optsdesc = [
    "region" => ['help' => Wilayah tempat bucket berada.', 'required' => True], // (Diperlukan) Tentukan wilayah tempat bucket berada.
    "endpoint" => ['help' => Nama domain yang dapat digunakan layanan lain untuk mengakses OSS', 'required' => False], // (Opsional) Tentukan titik akhir yang dapat digunakan oleh layanan lain untuk mengakses OSS.
    "bucket" => ['help' => Nama bucket, 'required' => True], // (Diperlukan) Tentukan nama bucket.
];

// Hasilkan daftar opsi panjang untuk mengurai parameter baris perintah.
$longopts = \array_map(function ($key) {
    return "$key:"; // Tambahkan titik dua (:) di akhir setiap parameter untuk menunjukkan bahwa nilai diperlukan.
}, array_keys($optsdesc));

// Uraikan parameter baris perintah.
$options = getopt("", $longopts); 

// Periksa apakah parameter yang diperlukan telah dikonfigurasi.
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: argumen berikut diperlukan: --$key, $help"; // Tentukan bahwa parameter yang diperlukan belum dikonfigurasi.
        exit(1); 
    }
}

// Dapatkan nilai parameter baris perintah.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.

// Gunakan variabel lingkungan untuk memuat ID AccessKey dan Rahasia AccessKey.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

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

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

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

// Tentukan titik akhir jika titik akhir disediakan.
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

// Buat instance OSSClient.
$client = new Oss\Client($cfg);

// Buat permintaan untuk menanyakan kebijakan bucket.
$request = new Oss\Models\GetBucketPolicyRequest(bucket: $bucket);

// Gunakan metode getBucketPolicy untuk menanyakan kebijakan bucket.
$result = $client->getBucketPolicy($request);

// Tampilkan hasil yang dikembalikan.
printf(
    'status code:' . $result->statusCode . PHP_EOL . // Kode status respons HTTP.
    'request id:' . $result->requestId . PHP_EOL . // Pengenal unik permintaan.
    'policy:' . $result->body // Isi dari kebijakan bucket.
);

Hapus kebijakan bucket

Berikut adalah kode contoh yang menunjukkan cara menghapus kebijakan bucket:

<?php

// Masukkan file autoload untuk memuat pustaka dependen.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Tentukan parameter baris perintah.
$optsdesc = [
    "region" => ['help' => Wilayah tempat bucket berada.', 'required' => True], // (Diperlukan) Tentukan wilayah tempat bucket berada.
    "endpoint" => ['help' => Nama domain yang dapat digunakan layanan lain untuk mengakses OSS', 'required' => False], // (Opsional) Tentukan titik akhir yang dapat digunakan oleh layanan lain untuk mengakses OSS.
    "bucket" => ['help' => Nama bucket, 'required' => True], // (Diperlukan) Tentukan nama bucket.
];

// Hasilkan daftar opsi panjang untuk mengurai parameter baris perintah.
$longopts = \array_map(function ($key) {
    return "$key:"; // Tambahkan titik dua (:) di akhir setiap parameter untuk menunjukkan bahwa nilai diperlukan.
}, array_keys($optsdesc));

// Uraikan parameter baris perintah.
$options = getopt("", $longopts); 

// Periksa apakah parameter yang diperlukan telah dikonfigurasi.
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: argumen berikut diperlukan: --$key, $help"; // Tentukan bahwa parameter yang diperlukan belum dikonfigurasi.
        exit(1); 
    }
}

// Dapatkan nilai parameter baris perintah.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.

// Gunakan variabel lingkungan untuk memuat ID AccessKey dan Rahasia AccessKey.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

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

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

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

// Tentukan titik akhir jika titik akhir disediakan.
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

// Buat instance OSSClient.
$client = new Oss\Client($cfg);

// Buat permintaan untuk menghapus kebijakan bucket.
$request = new Oss\Models\DeleteBucketPolicyRequest(bucket: $bucket);

// Gunakan metode deleteBucketPolicy untuk menghapus kebijakan bucket.
$result = $client->deleteBucketPolicy($request);

// Tampilkan hasil yang dikembalikan.
printf(
    'status code:' . $result->statusCode . PHP_EOL . // Kode status respons HTTP.
    'request id:' . $result-> requestId. PHP_EOL // Pengenal unik permintaan.
);

Referensi

  • Untuk kode contoh lengkap yang digunakan untuk mengonfigurasi kebijakan bucket, kunjungi GitHub.

  • Untuk informasi lebih lanjut tentang operasi API yang dapat Anda panggil untuk mengonfigurasi kebijakan bucket, lihat PutBucketPolicy.

  • Untuk kode contoh lengkap yang digunakan untuk menanyakan kebijakan bucket, kunjungi GitHub.

  • Untuk informasi lebih lanjut tentang operasi API yang dapat Anda panggil untuk menanyakan kebijakan bucket, lihat GetBucketPolicy.

  • Untuk kode contoh lengkap yang digunakan untuk menghapus kebijakan bucket, kunjungi GitHub.

  • Untuk informasi lebih lanjut tentang operasi API yang dapat Anda panggil untuk menghapus kebijakan bucket, lihat DeleteBucketPolicy.