详情页标题前

阿里云对象存储OSSJava管理文件访问权限-云淘科技

详情页1

Bucket级别ACL以外,OSS还提供了Object级别的ACL。您可以在上传Object时设置相应的ACL,也可以在Object上传后的任意时间内根据自己的业务需求随时修改ACL。

注意事项

  • 本文以华东1(杭州)外网Endpoint为例。如果您希望通过与OSS同地域的其他阿里云产品访问OSS,请使用内网Endpoint。关于OSS支持的Region与Endpoint的对应关系,请参见访问域名和数据中心。
  • 本文以从环境变量读取访问凭证为例。如何配置访问凭证,请参见Java配置访问凭证。

  • 本文以OSS域名新建OSSClient为例。如果您希望通过自定义域名、STS等方式新建OSSClient,请参见新建OSSClient。
  • 要设置Object访问权限,您必须具有oss:PutObjectAcl权限;要获取Object访问权限,您必须具有oss:GetObjectAcl权限。具体操作,请参见为RAM用户授权自定义的权限策略。

读写权限类型

Object包含以下4种读写权限:

说明

Object的访问权限优先级高于Bucket的访问权限。例如,Bucket的访问权限为私有,而Object的访问权限是公共读,则任何人(包括匿名用户)都可以对该Object进行读操作。

权限类型

描述

权限值

继承Bucket(默认权限)

当Object未设置访问权限时,该Object遵循Bucket的读写权限,即Bucket是什么权限,Object就是什么权限。

CannedAccessControlList.Default

私有

只有Object的拥有者可以对该Object进行读写操作,其他人无法访问该Object。

CannedAccessControlList.Private

公共读

只有该Object的拥有者可以对该Object进行写操作,任何人(包括匿名访问者)都可以对该Object进行读操作。

警告

互联网上任何用户都可以对该Object进行访问,这有可能造成您数据的外泄以及费用激增,请谨慎操作。

CannedAccessControlList.PublicRead

公共读写

任何人(包括匿名访问者)都可以对该Object进行读写操作。

警告

互联网上任何用户都可以对该Object进行访问,并且向该Object写入数据。这有可能造成您数据的外泄以及费用激增,如果被人恶意写入违法信息还可能会侵害您的合法权益。除特殊场景外,不建议您配置公共读写权限。

CannedAccessControlList.PublicReadWrite

设置Object访问权限

以下代码用于设置指定Object的访问权限:

import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.CannedAccessControlList;

public class Demo {
    public static void main(String[] args) throws Exception {
        // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // 填写Bucket名称,例如examplebucket。
        String bucketName = "examplebucket";
        // 填写不包含Bucket名称在内的Object完整路径,例如testfolder/exampleobject.txt。
        String objectName = "testfolder/exampleobject.txt";

        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);

        try {
            // 设置Object的访问权限为公共读。
            ossClient.setObjectAcl(bucketName, objectName, CannedAccessControlList.PublicRead);
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + "such as not being able to access the network.");
            System.out.println("Error Message:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}            

获取Object访问权限

以下代码用于获取指定Object的访问权限:

import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.ObjectAcl;

public class Demo {
    public static void main(String[] args) throws Exception {
        // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // 填写Bucket名称,例如examplebucket。
        String bucketName = "examplebucket";
        // 填写不包含Bucket名称在内的Object完整路径,例如testfolder/exampleobject.txt。
        String objectName = "testfolder/exampleobject.txt";

        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);

        try {
            // 获取Object的访问权限。
            ObjectAcl objectAcl = ossClient.getObjectAcl(bucketName, objectName);
            System.out.println(objectAcl.getPermission().toString());
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + "such as not being able to access the network.");
            System.out.println("Error Message:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}            

相关文档

  • 关于Object访问权限的完整示例代码,请参见GitHub示例。

  • 关于设置Object访问权限的API接口说明,请参见PutObjectACL。

  • 关于获取Object访问权限的API接口说明,请参见GetObjectACL。

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/158033.html

(0)
上一篇 2023年12月10日
下一篇 2023年12月10日
详情页2

相关推荐

  • 阿里云对象存储OSSPython跨域资源共享-云淘科技

    跨域资源共享CORS(Cross-Origin Resource Sharing)简称跨域访问,是HTML5提供的标准跨域解决方案,允许Web应用服务器进行跨域访问控制,确保跨域数据传输的安全性。 注意事项 本文以华东1(杭州)外网Endpoint为例。如果您希望通过与OSS同地域的其他阿里云产品访问OSS,请使用内网Endpoint。关于OSS支持的Reg…

    阿里云对象存储 2023年12月10日
  • 阿里云日志服务SLS变量-云淘科技

    变量是值的占位符,您可以在查询分析语句中使用变量。通过变量,您可以创建更具交互性和动态性的仪表盘。 功能入口 说明 不支持在Logstore查询分析页面的查询分析语句中设置变量。 登录日志服务控制台。 进入仪表盘页面。 在Project列表区域,单击目标Project。 在左侧导航栏中,选择仪表盘 > 仪表盘列表。 在仪表盘列表中,单击目标仪表盘。 在…

    阿里云日志服务SLS 2023年12月10日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云大数据开发治理平台 DataWorks数据源权限管理-云淘科技

    本文为您汇总数据源权限管理相关的问题。 哪些角色可以管理数据源的权限? 是否支持再次分享已被分享的数据源? 数据源的创建者是否有权控制该数据源? 什么是私有模式的数据源? 哪些用户能够收回数据源的分享权限? 如何检查数据源分享关系的移除、关联情况? 分享数据源后,其资源组的连通状态是否会被同步分享? 分享数据源后,引用过该数据源的任务关联信息是否会被同步分享…

  • 阿里云对象存储OSS第三方数据源迁移到 OSS-云淘科技

    您可以使用阿里云在线迁移服务将第三方数据源,如亚马逊AWS、谷歌云等数据轻松迁移至阿里云对象存储OSS。 使用在线迁移服务,您只需在控制台填写源数据地址和目标OSS地址信息,并创建迁移任务即可。启动迁移后,您可以通过控制台管理迁移任务,查看迁移进度、流量等信息;也可以生成迁移报告,查看迁移文件列表、错误文件列表。具体各个数据源的迁移操作,请参见在线迁移服务使…

    阿里云对象存储 2023年12月10日
  • 阿里云对象存储OSSPython设置对象标签-云淘科技

    OSS支持使用对象标签(Object Tagging)对存储空间(Bucket)中的文件(Object)进行分类,您可以针对相同标签的Object设置生命周期规则、访问权限等。 背景信息 设置对象标签时,请注意以下事项: 您可以在上传Object时设置对象标签,也可以对已上传Object设置对象标签。设置对象标签时,如果对象已有标签,则覆盖原标签。关于设置对…

    阿里云对象存储 2023年12月10日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。