You need to enable JavaScript to run this app.
导航

管理对象的访问权限(Browser.js SDK)

最近更新时间2024.02.04 18:31:06

首次发布时间2023.07.08 17:33:01

本文介绍如何获取和设置对象的访问权限。对象的访问权限优先级高于桶的访问权限,如果对象未设置访问权限,则遵循桶的访问权限。

注意

设置对象的读写权限前,您必须具有 tos:PutObjectACL 权限,或具备 WRITE_ACP 对象 ACL 权限,详细信息,请参见权限配置指南

ACL 说明

对象 ACL 权限包含以下类型。

访问权限

描述

访问权限值

READ

允许被授权者读取对象数据及其元数据。

enum.PermissionRead

READ_ACP

允许被授权者读取对象 ACL 。

enum.PermissionReadAcp

WRITE_ACP

允许被授权者为适用的对象编写 ACL。

enum.PermissionWriteAcp

FULL_CONTROL

允许被授权者在对象上的 READ、READ_ACP 和 WRITE_ACP 权限。

enum.PermissionFullControl

您可以在请求体中填写详细的 ACL 权限信息,或在请求头中设置访问权限。

请求头中设置访问权限

通过 x-tos-acl 请求头设置对象的读写权限包含以下类型。

访问权限

描述

访问权限值

私有

对象的所有者拥有所有权限,其他用户没有权限操作该对象。

private

公共读

对象的所有者拥有所有权限,其他用户只有该对象的读权限。

public-read

公共读写

所有用户都有该对象的读权限。

public-read-write

认证用户读

对象的所有者拥有所有权限,认证用户拥有该对象的读权限。

authenticated-read

桶所有者读

对象所有者拥有所有权限,桶所有者拥有此对象的读权限。

bucket-owner-read

桶所有者具备所有权限

桶所有者和对象所有者都拥有对象的所有操作权限。

bucket-owner-full-control

示例代码

设置对象的读写权限

以下代码通过 x-tos-acl 设置对象的读写权限。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Document</title>
  </head>
  <body>
    <button id="upload">上传</button>
    <input id="file" type="file" />
    <!-- 导入 SDK 文件 -->
    <script src="https://tos-public.volccdn.com/obj/volc-tos-public/@volcengine/tos-sdk@latest/browser/tos.umd.production.min.js"></script>
    <script type="text/javascript">
      const client = new TOS({
        // yourRegion 填写 Bucket 所在地域。以华北2(北京)为例,yourRegion 填写为 cn-beijing。
        region: yourRegion,
        // 填写 endpoint 名称。
        endpoint: yourEndpoint,
        // 从 STS 服务获取的临时访问密钥(AccessKey ID 和 AccessKey Secret)。
        accessKeyId: yourAccessKey,
        accessKeySecret: yourSecretKey,
        // 从 STS 服务获取的安全令牌(SecurityToken)。
        stsToken: yourSecurityToken,
        // 填写 Bucket 名称。
        bucket: bucketName,
      });
      const objectName = 'exampledir/putObjectobject.txt';

      const main = async () => {
        // 设置对象的访问权限为 'public-read-write'
        await client.putObjectAcl({
          bucket: bucketName,
          key: objectName,
          acl: 'public-read-write',
        });
      };

      main();
    </script>
  </body>
</html>

获取对象的读写权限

注意

获取对象的访问权限前,您必须具有 tos:GetObjectACL 权限,或具备 READ_ACP 的对象 ACL 权限,具体操作,请参见权限配置指南

以下代码用于获取对象的访问权限。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Document</title>
  </head>
  <body>
    <button id="upload">上传</button>
    <input id="file" type="file" />
    <!-- 导入 SDK 文件 -->
    <script src="https://tos-public.volccdn.com/obj/volc-tos-public/@volcengine/tos-sdk@latest/browser/tos.umd.production.min.js"></script>
    <script src="./const.js"></script>
    <script type="text/javascript">
      const client = new TOS({
        // yourRegion 填写 Bucket 所在地域。以华北2(北京)为例,yourRegion 填写为 cn-beijing。
        region: yourRegion,
        // 填写 endpoint 名称。
        endpoint: yourEndpoint,
        // 从 STS 服务获取的临时访问密钥(AccessKey ID 和 AccessKey Secret)。
        accessKeyId: yourAccessKey,
        accessKeySecret: yourSecretKey,
        // 从 STS 服务获取的安全令牌(SecurityToken)。
        stsToken: yourSecurityToken,
        // 填写 Bucket 名称。
        bucket: bucketName,
      });
      const objectName = 'exampledir/putObjectobject.txt';

      const main = async () => {
        // 查询对象的权限信息
        const { data: newData } = await client.getObjectAcl({
          bucket: bucketName,
          key: objectName,
        });
        // object info
        console.log('object acl info:', newData);
      };

      main();
    </script>
  </body>
</html>