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

Object Storage Service:ファイルのアクセス権限の管理 (PHP SDK V1)

最終更新日:Nov 30, 2025

このトピックでは、ファイルのアクセス権限を管理する方法について説明します。

前提条件

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

  • このトピックでは、OSS エンドポイントを使用して OSSClient インスタンスを作成します。カスタムドメイン名または Security Token Service (STS) を使用して OSSClient インスタンスを作成する場合は、「OssClient の作成」をご参照ください。

  • ファイルのアクセス権限を設定するには、oss:PutObjectAcl 権限が必要です。ファイルのアクセス権限を取得するには、oss:GetObjectAcl 権限が必要です。詳細については、「RAM ユーザーへのカスタムアクセスポリシーの付与」をご参照ください。

アクセス制御リストの種類

ファイルには、4 種類のアクセス制御リスト (ACL) があります:

アクセス権限

説明

アクセス権限の値

バケットから継承

ファイルはバケットのアクセス権限を継承します。

default

非公開

ファイル所有者と認可されたユーザーは、ファイルの読み書き権限を持ちます。他のユーザーはファイルにアクセスできません。

private

公開読み取り

ファイル所有者と認可されたユーザーは、ファイルの読み書き権限を持ちます。他のユーザーは読み取り権限のみを持ちます。この権限は注意して使用してください。

public-read

公開読み書き

すべてのユーザーがファイルの読み書き権限を持ちます。この権限は注意して使用してください。

public-read-write

ファイルの ACL は、バケットの ACL よりも優先されます。たとえば、バケットが非公開であっても、バケット内のファイルが公開読み書きに設定されている場合、すべてのユーザーがそのファイルの読み書き権限を持ちます。ファイルに ACL が設定されていない場合、ファイルはそのバケットの 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 = "http://oss-cn-hangzhou.aliyuncs.com";
$bucket= "yourBucketName";
$object = "yourObjectName";
// ファイルの ACL を public-read に設定します。デフォルトでは、バケットの ACL を継承します。
$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");
            

ファイルのアクセス権限の取得

次のコードは、オブジェクトの 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 = "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);