全部产品
Search
文档中心

Object Storage Service:Mengelola izin akses file (PHP SDK V1)

更新时间:Nov 30, 2025

Topik ini menjelaskan cara mengelola izin akses file.

Prasyarat

  • Pada topik ini, digunakan titik akhir publik wilayah China (Hangzhou). Untuk mengakses OSS dari layanan Alibaba Cloud lainnya dalam wilayah yang sama, gunakan titik akhir internal. Untuk detail mengenai wilayah dan titik akhir yang didukung, lihat Regions and endpoints.

  • 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 Create an OssClient.

  • Untuk mengatur izin akses file, Anda harus memiliki izin oss:PutObjectAcl. Untuk mengambil izin akses file, Anda harus memiliki izin oss:GetObjectAcl. Untuk informasi selengkapnya, lihat Grant custom access policies to a RAM user.

Jenis daftar kontrol akses

File memiliki empat jenis daftar kontrol akses (ACL):

Access permissions

Description

Access permission value

Inherit from Bucket

File mewarisi izin akses bucket tersebut.

default

Private

Pemilik file dan pengguna yang berwenang memiliki izin baca dan tulis untuk file tersebut. Pengguna lain tidak dapat mengakses file tersebut.

private

Public-read

Pemilik file dan pengguna yang berwenang memiliki izin baca dan tulis untuk file tersebut. Pengguna lain hanya memiliki izin baca. Gunakan izin ini dengan hati-hati.

public-read

Public-read-write

Semua pengguna memiliki izin baca dan tulis untuk file tersebut. Gunakan izin ini dengan hati-hati.

public-read-write

ACL file memiliki prioritas lebih tinggi daripada ACL bucket. Misalnya, jika sebuah bucket bersifat private tetapi sebuah file di dalam bucket tersebut diatur ke public-read-write, semua pengguna memiliki izin baca dan tulis pada file tersebut. Jika sebuah file tidak memiliki konfigurasi ACL, file tersebut akan mewarisi ACL bucket-nya.

Atur izin akses file

Kode berikut memberikan contoh cara mengatur ACL suatu objek:

<?php
if (is_file(__DIR__ . '/../autoload.php')) {
    require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
    require_once __DIR__ . '/../vendor/autoload.php';
}
use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\Core\OssException;

// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. 
$provider = new EnvironmentVariableCredentialsProvider();
// Titik akhir diatur ke China (Hangzhou) pada contoh ini. Tentukan Titik akhir yang sebenarnya.
$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
$bucket= "yourBucketName";
$object = "yourObjectName";
// Atur ACL file ke public-read. Nilai default adalah mewarisi ACL bucket.
$acl = "public-read";
try {
    $config = array(
        "provider" => $provider,
        "endpoint" => $endpoint,
        "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
        "region"=> "cn-hangzhou"
    );
    $ossClient = new OssClient($config);

    $ossClient->putObjectAcl($bucket, $object, $acl);
} catch (OssException $e) {
    printf(__FUNCTION__ . ": FAILED\n");
    printf($e->getMessage() . "\n");
    return;
}
print(__FUNCTION__ . ": OK" . "\n");
            

Dapatkan izin akses file

Kode berikut memberikan contoh cara menanyakan ACL suatu objek:

<?php
if (is_file(__DIR__ . '/../autoload.php')) {
    require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
    require_once __DIR__ . '/../vendor/autoload.php';
}
use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\Core\OssException;

// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. 
$provider = new EnvironmentVariableCredentialsProvider();
// Titik akhir diatur ke China (Hangzhou) pada contoh ini. Tentukan Titik akhir yang sebenarnya.
$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
$bucket= "yourBucketName";
$object = "yourObjectName";
try {
    $config = array(
        "provider" => $provider,
        "endpoint" => $endpoint,
        "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
        "region"=> "cn-hangzhou"
    );
    $ossClient = new OssClient($config);

    $objectAcl = $ossClient->getObjectAcl($bucket, $object);
} catch (OssException $e) {
    printf(__FUNCTION__ . ": FAILED\n");
    printf($e->getMessage() . "\n");
    return;
}
print(__FUNCTION__ . ": OK" . "\n");
var_dump($objectAcl);