Object Storage Service (OSS) では、オブジェクトのアクセス制御リスト (ACL) を設定できます。 このようにして、オブジェクトへのアクセスを便利に制御できます。
使用状況ノート
WebpackやBrowserifyなどのパッケージングツールを使用する場合は、npm install ali-OSSコマンドを実行して、oss SDK for Browser.jsをインストールします。
ブラウザからOSSバケットにアクセスしたいが、バケットにCORSルールが設定されていない場合、ブラウザはリクエストを拒否します。 したがって、ブラウザからバケットにアクセスする場合は、バケットのCORSルールを設定する必要があります。 詳細については、「インストール」をご参照ください。
ほとんどの場合、ブラウザではOSS SDK for Browser.jsが使用されます。 AccessKeyペアが公開されないようにするには、Security Token Service (STS) から取得した一時的なアクセス資格情報を使用してOSSにアクセスすることを推奨します。
一時的なアクセス資格情報は、AccessKeyペアとセキュリティトークンで構成されます。 AccessKeyペアは、AccessKey IDとAccessKeyシークレットで構成されます。 一時的なアクセス資格情報を取得する方法の詳細については、「一時的なアクセス権限付与にSTSを使用する」をご参照ください。
オブジェクトACL
次の表に、オブジェクトに対して構成できるACLを示します。
オブジェクトのACLは、オブジェクトが格納されているバケットのACLよりも優先されます。 たとえば、プライベートバケット内のオブジェクトのACLがpublic-readに設定されている場合、匿名ユーザーを含むすべてのユーザーがオブジェクトを読み取ることができます。
ACLタイプ | 説明 | 値 |
バケットから継承 | オブジェクトのACLは、オブジェクトが格納されているバケットのACLと同じです。 | default |
プライベート | オブジェクトの読み取りおよび書き込み操作を実行できるのは、オブジェクトの所有者だけです。 他のユーザーはオブジェクトにアクセスできません。 | 非公開 |
一般公開 | オブジェクトにデータを書き込むことができるのは、オブジェクト所有者だけです。 匿名ユーザーを含む他のユーザーは、オブジェクトのみを読み取ることができます。 警告 すべてのユーザーがインターネット経由でオブジェクトにアクセスできます。 これにより、オブジェクトへの予期しないアクセスと予期しない高い料金が発生する可能性があります。 ACLをこの値に設定するときは注意してください。 | 公開読み取り |
パブリック読み取り /書き込み | 匿名ユーザーを含むすべてのユーザーは、オブジェクトに対して読み取りおよび書き込み操作を実行できます。 警告 すべてのユーザは、インターネットを介してオブジェクトにアクセスし、オブジェクトにデータを書き込むことができる。 これにより、オブジェクトへの予期しないアクセスと予期しない高い料金が発生する可能性があります。 ユーザーが不正なデータや情報をアップロードすると、正当な権利と利益が侵害される可能性があります。 必要な場合を除き、ACLをこの値に設定しないことを推奨します。 | 公開読み取り/書き込み |
サンプルコード
デフォルトでは、オブジェクトをアップロードした後、オブジェクトのACLは、オブジェクトが格納されているバケットのACLと同じになります。 putACL
を使用して、オブジェクトのACLを変更できます。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title> ドキュメント </title>
</head>
<body>
<script src="https://gosspublic.alicdn.com/aliyun-oss-sdk-6.18.0.min.js"></script>
<script>
const client = new OSS({
// バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンをoss-cn-Hangzhouに設定します。
region: "yourRegion" 、
// STSから取得した一時的なAccessKeyペアを指定します。 AccessKeyペアは、AccessKey IDとAccessKeyシークレットで構成されます。
accessKeyId: "yourAccessKeyId" 、
accessKeySecret: "yourAccessKeySecret" 、
// STSから取得したセキュリティトークンを指定します。
stsToken: "yourSecurityToken" 、
// バケットの名前を指定します。 例: examplebucket.
bucket: "examplebucket" 、
});
async関数getACL() {
try {
result = await client.getACL("examplefile.txt");
console.log(result.acl);
wait client.putACL("examplefile.txt" 、"public-read");
result = await client.getACL("examplefile.txt");
console.log(result.acl);
} catch (e) {
console.log(e);
}
}
getACL();
</script>
</body>
</html>
参考資料
オブジェクトのACLを管理するために使用される完全なサンプルコードについては、GitHubをご覧ください。
オブジェクトのACLを設定するために呼び出すAPI操作の詳細については、「PutObjectACL」をご参照ください。
オブジェクトのACLを照会するために呼び出すAPI操作の詳細については、「GetObjectACL」をご参照ください。