OSS bucket权限设置

琉璃2年前技术文章2305

问题描述

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








相关文章

ES组件集成nlpSQL模块

ES组件集成nlpSQL模块

查看sql插件github https://github.com/NLPchina/elasticsearch-sql 安装cd elasticsearch #进入目录可以先去下载...

Kubernetes日志收集

Kubernetes日志收集

关于容器日志Docker的日志分为两类,一类是Docker引擎日志;另一类是容器日志。引擎日志一般都交给了系统日志,不同的操作系统会放在不同的位置。本文主要介绍容器日志,容器日志可以理解是运行在容器内...

ubuntu20.04服务器安全策略设定

ubuntu20.04服务器安全策略设定

密码策略1、经核查,服务器用户身份标识唯一,口令存储在服务器中采用SHA512算法,服务器配置口令复杂度,口令要求8位以上,字母、数字、特殊字符组成,口令180天定期更换。# SHA512算法查看ca...

MySQL 切换主备(三)

MySQL 切换主备(三)

三、切换主备:3.1、确认主库角色查看 vip 状态,目前在主库上面。3.2、确认备库角色此时备库read_only=1只读不写查看数据库读写状态:show global variables like...

 MySQL运维实战(1.2)安装部署:使用二进制安装部署

MySQL运维实战(1.2)安装部署:使用二进制安装部署

一般在生产环境,我们会使用二进制安装的方式安装MySQL。使用二进制安装,在处理单机多实例、升级MySQL等场景下更加方便。如果有特殊的需求(比如要打一些patch),我们还可以自己编译二进制。1、下...

MySQL DDL 风险评估

MySQL DDL 风险评估

一、前言变更是数据库离不开的话题,从 MySQL 5.6 开始,推出 online DDL 即变更期间不锁表,本篇文章介绍 MySQL 变更对数据库的影响如何去判断。二、DDL 风险提示1. 变更速查...

发表评论    

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