すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:バケット ACL の管理 (PHP SDK V1)

最終更新日:Nov 30, 2025

Object Storage Service (OSS) のバケットは、オブジェクトを格納するためのコンテナーです。すべてのオブジェクトはバケットに格納されます。このトピックでは、バケットのアクセス制御リスト (ACL) を設定および取得する方法について説明します。

注意事項

  • このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。同じリージョン内の他の Alibaba Cloud サービスから OSS にアクセスする場合は、内部エンドポイントを使用してください。サポートされているリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。

  • このトピックでは、OSS エンドポイントを使用して OSSClient インスタンスを作成します。カスタムドメイン名またはセキュリティトークンサービス (STS) を使用して OSSClient インスタンスを作成する方法については、「OssClient の作成」をご参照ください。

  • バケットの ACL を設定するには、oss:PutBucketAcl 権限が必要です。バケットの ACL を取得するには、oss:GetBucketAcl 権限が必要です。詳細については、「RAM ユーザーへのカスタムアクセスポリシーの付与」をご参照ください。

バケットの ACL の設定

バケットには、次の 3 種類の ACL があります:

ACL

説明

メソッド

private

バケットのオーナーと承認されたユーザーのみが、バケット内のオブジェクトに対する読み書き権限を持ちます。他のユーザーはオブジェクトにアクセスできません。

OssClient::OSS_ACL_TYPE_PRIVATE

public-read

バケットのオーナーと承認されたユーザーは、バケット内のオブジェクトに対する読み書き権限を持ちます。他のユーザーは読み取り権限のみを持ちます。この権限は慎重に使用してください。

OssClient::OSS_ACL_TYPE_PUBLIC_READ

public-read-write

すべてのユーザーがバケット内のオブジェクトに対する読み書き権限を持ちます。この権限は慎重に使用してください。

OssClient::OSS_ACL_TYPE_PUBLIC_READ_WRITE

次のコードは、バケットの ACL を設定する方法を示しています:

<?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;

// 環境変数からアクセス認証情報を取得します。このサンプルコードを実行する前に、環境変数 OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET が設定されていることを確認してください。
$provider = new EnvironmentVariableCredentialsProvider();
// 例として中国 (杭州) リージョンを使用します。実際の エンドポイント に置き換えてください。
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// バケット名を指定します。
$bucket= "yourBucketName";
// バケットの ACL を private (非公開) に設定します。
$acl = OssClient::OSS_ACL_TYPE_PRIVATE;
try {
    $config = array(
        "provider" => $provider,
        "endpoint" => $endpoint,
        "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
        "region"=> "cn-hangzhou"
    );
    $ossClient = new OssClient($config);

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

バケットの ACL の取得

次のコードは、バケットの ACL を取得する方法の例を示しています:

<?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;

// 環境変数からアクセス認証情報を取得します。このサンプルコードを実行する前に、環境変数 OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET が設定されていることを確認してください。
$provider = new EnvironmentVariableCredentialsProvider();
// 例として中国 (杭州) リージョンを使用します。実際の エンドポイント に置き換えてください。
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// バケット名を指定します。
$bucket= "yourBucketName";

try {
    $config = array(
        "provider" => $provider,
        "endpoint" => $endpoint,
        "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
        "region"=> "cn-hangzhou"
    );
    $ossClient = new OssClient($config);
    // バケットの ACL を取得します。
    $res = $ossClient->getBucketAcl($bucket);
} catch (OssException $e) {
    printf(__FUNCTION__ . ": FAILED\n");
    printf($e->getMessage() . "\n");
    return;
}
print(__FUNCTION__ . ": OK" . "\n");
print('acl: ' . $res);

関連ドキュメント

  • バケット ACL を管理するための完全なサンプルコードについては、「GitHub」をご参照ください。

  • バケット ACL を設定する API 操作の詳細については、「PutBucketAcl」をご参照ください。

  • バケット ACL を取得する API 操作の詳細については、「GetBucketAcl」をご参照ください。