OSS bucket权限设置

琉璃2年前技术文章1510

问题描述

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








相关文章

Nginx性能优化

Nginx性能优化

       前言:Nginx作为高性能web服务器,即使不特意调整配置参数也可以处理大量的并发请求。 以下的Nginx配置参数作为参考,具体需根据线上业务情况进行调整。一、worker进程work...

大数据即席查询-Kylin

大数据即席查询-Kylin

一、Kylin 定义 Apache Kylin 是一个开源的分布式分析引擎,提供 Hadoop/Spark 之上的 SQL 查询接口 及多维分析(OLAP)能力以支持超大规模数据,最初由 eBay I...

Yarn调度器对比

1)Hadoop调度器重要分为三类:FIFO 、Capacity Scheduler(容量调度器)和Fair Sceduler(公平调度器)。Apache默认的资源调度器是容量调度器;CDH...

 大数据集群监控配置操作指导(三)Flink监控开启jmx

大数据集群监控配置操作指导(三)Flink监控开启jmx

官网的关于 flnk+prometheus的文章https://flink.apache.org/features/2019/03/11/prometheus-monitoring.htmlprome...

MySQL运维实战(3.3) 管理数据库(database)

数据库使用create database语句创建数据库。创建数据库的账号需要有create权限。创建数据库用户拥有create权限才能创建数据库。-- 例子:创建dba用户,拥有创建数据库名...

grafana7 监控https证书过期时间

grafana7 监控https证书过期时间

使用 Grafana 7 中new table visualization功能,使用Prometheus监视证书的到期日期,并使用Grafana进行展示。所有证书一目了然:证书到期之前的剩余时间,HT...

发表评论    

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