OSS では、オブジェクトにアクセス権限を設定して、そのアクセス方法を制御できます。
注意事項
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 Secret で構成されます。一時的なアクセス認証情報の取得方法の詳細については、「STS を使用した一時的なアクセス権限付与」をご参照ください。
読み取り/書き込み権限の種類
オブジェクトには、次の 4 種類のアクセス制御リスト (ACL) があります:
オブジェクトのアクセス権限は、そのバケットのアクセス権限よりも優先されます。たとえば、バケットが非公開であっても、その中のオブジェクトが公開読み取りの場合、匿名ユーザーを含む誰でもそのオブジェクトを読み取ることができます。
権限の種類 | 説明 | 権限の値 |
バケットから継承 (デフォルト) | オブジェクトに独自のアクセス権限が設定されていない場合、そのバケットの ACL を継承します。オブジェクトはバケットと同じ権限を持ちます。 | default |
非公開 | オブジェクト所有者のみがオブジェクトの読み書きを行えます。他のユーザーはオブジェクトにアクセスできません。 | private |
公開読み取り | オブジェクト所有者のみがオブジェクトへの書き込みを行えます。匿名ユーザーを含む誰でもオブジェクトを読み取ることができます。 警告 インターネット上のすべてのユーザーがオブジェクトにアクセスできるため、データ漏洩や料金の急増につながる可能性があります。この権限は慎重に使用してください。 | public-read |
公開読み書き | 匿名ユーザーを含む誰でもオブジェクトの読み書きを行えます。 警告 インターネット上のすべてのユーザーがオブジェクトにアクセスしてデータを書き込めるため、データ漏洩や料金の急増につながる可能性があります。悪意のあるユーザーが不正な情報をオブジェクトに書き込んだ場合、法的な権利や利益が損なわれる可能性があります。特定のシナリオを除き、公開読み書き権限は設定しないでください。 | public-read-write |
サンプルコード
オブジェクトをアップロードすると、その ACL はデフォルトでバケットの ACL を継承します。putACL を使用して、オブジェクトの ACL を変更できます。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8" />
<title>Document</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",
authorizationV4: true,
// Security Token Service (STS) から取得した一時的な AccessKey ペア (AccessKey ID と AccessKey Secret)。
accessKeyId: "yourAccessKeyId",
accessKeySecret: "yourAccessKeySecret",
// STS から取得したセキュリティトークン (SecurityToken)。
stsToken: "yourSecurityToken",
// バケット名を指定します。例:examplebucket。
bucket: "examplebucket",
});
async function getACL() {
try {
result = await client.getACL("examplefile.txt");
console.log(result.acl);
await 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>
関連ドキュメント
オブジェクトのアクセス権限に関する完全なサンプルコードについては、「GitHub の例」をご参照ください。
オブジェクトのアクセス権限を設定する API 操作の詳細については、「PutObjectACL」をご参照ください。
オブジェクトのアクセス権限を取得する API 操作の詳細については、「GetObjectACL」をご参照ください。