OSS bucket权限设置

琉璃2年前技术文章1708

问题描述

调用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








相关文章

Hive优化之配置参数的优化(一)

Hive优化之配置参数的优化(一)

 Hive是大数据领域常用的组件之一,主要是大数据离线数仓的运算,关于Hive的性能调优在日常工作和面试中是经常涉及的一个点,因此掌握一些Hive调优是必不可少的一项技能。影响Hive效率的...

kafka节点数规划

按磁盘容量规划节点数Kafka的数据存放在本地磁盘,建议使用SAS盘,提供较高磁盘IO,以提高Kafka吞吐量。在本规划基于的硬件规格下,单节点平均吞吐量参考值为读300MB/s,写150MB/s。数...

MySQL gh-ost DDL 变更工具

MySQL gh-ost DDL 变更工具

1. MDL 锁介绍MySQL 的锁可以分为四类:MDL 锁、表锁、行锁、GAP 锁,其中除了 MDL 锁是在 Server 层加的之外,其它三种都是在 InnoDB 层加的。下面主要介绍一下:MDL...

MySQL运维实战(4.9) SQL_MODE之NO_UNSIGNED_SUBTRACTION

在mysql数据库中,unsigned表示不存负数,如果unsigned类型的字段作运算,得到的结果为负数,SQL会报错。mysql> create table t...

开源大数据集群部署(二十)Trino部署

开源大数据集群部署(二十)Trino部署

2.9.1 解压trino的包到opt目录cd /root/bigdata tar -xzvf trino-server-389.tar.gz -C /opt/ ln -s /opt/trino-...

xtrabackup报错记录

xtrabackup报错记录

报错记录报错一:报错显示需要依赖,但是当我们执行 yum install -y libstdc++ 显示已是最新版本,且通过 yum 安装 一般会将依赖包都直接安装成功。这时候可以核实一下安装包和当前...

发表评论    

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