OSS bucket权限设置

琉璃10个月前技术文章607

问题描述

调用oss的bucket资源,开始的时候可以访问,过几分钟再访问的时候,就提示拒绝访问

image.png

问题原因

是因为相应的bucket权限为私有,私有权限在访问文件对象时,是存在鉴权URL,存在时间有效性,所以时间过期后就会无法访问

只有该存储空间的拥有者可以对该存储空间内的文件进行读写操作,其他人无法访问该存储空间内的文件。

无法访问是指的程序中设定了只有该存储空间的拥有者可以去调用oss地址,针对用户侧是都可以访问的,只是多了一个鉴权策路


公网的话是针对用户侧来讲,程序里面是调oss的内网接口地址。如果程序和oss之间也走公网,这只是一个鉴权方式,是需要程序侧完成的。


解决思路

通过定期调用接口获取资源,可以使用SDK中的授权访问生成get请求的签名url 具体的操作步骤可参考这个文档

https://help.aliyun.com/document_detail/32016.html?spm=a2c4g.11174283.6.985.592a7da22GP6xt

解决方式

通过授权访问,使用STS以及签名URL临时授权访问OSS资源

1、使用STS临时授权

OSS可以通过阿里云STS (Security Token Service) 进行临时授权访问。阿里云STS是为云计算用户提供临时访问令牌的Web服务。通过STS,您可以为第三方应用或子用户(即用户身份由您自己管理的用户)颁发一个自定义时效和权限的访问凭证。

2、使用签名URL临时授权

2.1生成签名URL

您可以将生成的签名URL提供给访客进行临时访问。生成签名URL时,您可以通过指定URL的过期时间来限制访客的访问时长。

2.2生成以GET方法访问的签名URL

// Endpoint以杭州为例,其它Region请按实际情况填写。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";
String bucketName = "<yourBucketName>";
String objectName = "<yourObjectName>";

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

// 设置URL过期时间为1小时。
Date expiration = new Date(new Date().getTime() + 3600 * 1000);
// 生成以GET方法访问的签名URL,访客可以直接通过浏览器访问相关内容。
URL url = ossClient.generatePresignedUrl(bucketName, objectName, expiration);

// 关闭OSSClient。
ossClient.shutdown();			


私有权限的文件生成访问url是必须带过期时间的,并不能永久有效,通过OSS控制台获取文件URL时,主账号用户最长有效时间是32400秒(9小时),RAM用户(子账号用户)以及STS用户最长有效时间是3600秒(1小时)。如果要获取更长时效的文件URL,可以使用命令行工具ossutil、图形化工具ossbrowser或SDK

参考:https://help.aliyun.com/document_detail/39607.html








相关文章

oracle设置归档路径和格式

1.归档文件格式设置说明:设置归档日志名称格式:alter system set log_archive_format='arch_%t_%s_%r.arc' scope=spfile sid='*'...

MySQL优化器特性(三)表关联之BKA(Batched Key Access)优化

MySQL优化器特性(三)表关联之BKA(Batched Key Access)优化

单表range查询时,可以使用MRR优化,先对rowid进行排序,然后再回表查询数据。在表关联的时候,也可以使用类似的优化方法,先根据关联条件取出被关联表的rowid,将rowid缓存在join bu...

TEZ常见调优参数

一、设置引擎为Tez参数:参数默认值推荐值参数说明解释hive.execution.enginemr请根据具体的业务场景进行选择执行引擎选择使用tez引擎时,此值设置为tezhive.tez.log....

oracle字符集简介

一、字符集介绍字符集和国家字符集字符集在创建数据库实例时指定,可以指定字符集(CHARACTER SET)和国家字符集(NATIONAL CHARACTER SET)。1、字符集(CHARACTER...

RAC和DG的选择

RAC和DG的选择

RAC和DG的选择一、RAC1、什么是RAC实时应用集群,是负载均衡模式,两台机器同时工作参与到业务系统中,如果其中一个节点出现问题,所有的会话连接会转到另一个节点,保证业务系统正常运行,但是数据只有...

Solr常用API详细操作

Solr常用API详细操作

1. 监督集群的状态和统计返回监督器(overseer)的当前状态,各种监督器API的性能统计信息以及每种操作类型的最近10次故障/admin/collections?action=OVERSEERS...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。