【OSS最佳实践】浅谈OSS权限控制

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,内容安全 1000次 1年
对象存储 OSS,恶意文件检测 1000次 1年
简介: OSS的权限控制可以分为OSS本身的权限控制及账户级别权限控制;OSS本身的权限又可以针对bucket级别及object级别进行设置;账户级别权限控制可细分为:主账户、子账户、STS临时账户对OSS的权限控制;本文将对以上内容进行展开介绍并且介绍常见问题及排查思路;

一、OSS本身的权限控制

1.权限类型

Bucket目前有三种访问权限:public-read-write,public-read和private;Object目前有四种访问权限:default,public-read-write,public-read和private;对于权限的详细介绍看访问控制中的bucket级别权限及object级别权限的内容介绍;

2.权限设定与获取

Bucket级别及object级别的权限设置及获取均可以通过API/SDK/控制台等进行操作;

API:

Put Bucket ACL
PutBucket
GetBucketACL
PutObject
PutObjectACL
GetObjectACL

SDK:

Java SDK--Bucket
JavaSDK--Object

控制台:

Bucket:控制台—>OSS-->选择具体的bucket—>基础设置
1

Object:控制台—>OSS-->选择具体的bucket-->文件管理—>点击具体文件
2

3.常见问题

1)如何批量设置objectacl

调用listobject接口遍历需要设置的object,结合putobjectacl接口进行设置即可,参考Java—管理文件 ;

2)上传object过程中如何设置object acl

Java:

ObjectMetadata meta = new ObjectMetadata();
meta.setObjectAcl(CannedAccessControlList.PublicReadWrite);

Python:

bucket.put_object('remote.txt', 'content of object', headers={'x-oss-object-acl': permission})

str permission: 可以是oss2.OBJECT_ACL_DEFAULT、oss2.OBJECT_ACL_PRIVATE、oss2.OBJECT_ACL_PUBLIC_READ或oss2.OBJECT_ACL_PUBLIC_READ_WRITE。
参考:python Git源码
PHP:

$options = array(
        OssClient::OSS_HEADERS => array(
            'Expires' => '2012-10-01 08:00:00',
            'Content-Disposition' => 'attachment; filename="xxxxxx"',
            ‘OSS_OBJECT_ACL’=>’ public-read’
    ));
    try{
        $ossClient->putObject($bucket, $object, $content, $options);
    } catch(OssException $e) {
        printf(__FUNCTION__ . ": FAILED\n");
        printf($e->getMessage() . "\n");
        return;
}

读写权限,可选值 ['default', 'private', 'public-read', 'public-read-write']
参考:PHP Git源码

3)bucket设置为私有,能否防止恶意下载

不能防止,一但对应资源的签名url对外暴露,在签名url有效期内就可以通过签名url下载对应的资源;

4)bucket私有,如何获取资源的链接

参考:https://help.aliyun.com/knowledge_detail/65898.html

5)bucket私有,获取到的资源链接是否具有时效性

有时效性,一但过期就不可被访问

6)获取到的资源链接是否可以永久有效

将bucket改为公共读/公共读写,获取到的object链接一般都是永久有效的,但是如果bucket私有要获取永久有效的链接,不支持也没意义(私有本身就是为了保证数据安全性,一定期限内可访问,一定程度上防止恶意下载,链接有效时间过长也就失去了对应的意义)。

二、账户级别权限控制

账户分为主账户、子账户及STS临时账户,其中主账户有OSS的全部权限,子账户及STS临时账户可以进行细粒度的权限划分控制,授权OSS的部分权限;
子账户创建参考:OSS细粒度权限控制—子账户创建部分的内容
STS临时账户创建:STS临时授权访问
OSS支持的权限:访问控制

1.子账户及STS临时账户的业务场景

1)子账户业务场景

子账户可以用于企业内部细粒度的OSS权限划分,如:管理员拥有OSS的全部权限;部分业务人员只拥有其业务应用的bucket的权限,其他bucket无权限;部分业务人员只有bucket的只读权限;部分业务人员只有bucket下某个目录的操作权限等;
子账户的创建便于企业内部的权限划分及回收,不建议将子账户应用于实际的业务服务端,控制客户的权限,服务端的权限控制建议自建数据库表进行权限控制;

2)临时账户业务场景

STS临时账户的定义为子账户扮演了某个角色而获取到了临时的权限,这样的账户叫做临时账户,故对应的子账户得拥有扮演对应角色的权限,而角色得拥有OSS的权限;临时账户拥有的权限是角色权限及创建临时账户policy权限的交集;
STS临时账户一般应用于移动端sdk或者web 端 ,OSS IOS/Android SDK初始化client就通过STS临时账户进行,JS web sdk可以通过STS临时账户操作OSS资源;或者如果企业客户要临时授权给第三方用户操作bucket的权限,也可以生成临时账户供其使用;临时账户具有时效性,最长3600秒过期,过期时间可控且权限粒度可控,具有较高的安全性;

2.子账户及STS临时账户调用OSS的常见问题

参考:子账户及STS临时账户调用常见问题

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
目录
相关文章
|
2月前
|
存储 Cloud Native Serverless
云原生最佳实践系列 7:基于 OSS Object FC 实现非结构化文件实时处理
阿里云OSS对象存储方案利用函数计算FC,在不同终端请求时实时处理OSS中的原图,减少衍生图存储,降低成本。
|
SQL 存储 监控
通过sdk查看oss投递(新版)延迟情况最佳实践
在投递任务中,日志服务会将运行日志写入到给定的logstore中,因而可以使用SDK来查看投递任务的当前状态,并进行批量查询,以了解多个Project和投递任务的状态。下面以查看oss投递的延迟为例,介绍客户提供操作步骤和常见的使用场景,以帮助客户更加方便地监控和管理投递任务。
通过sdk查看oss投递(新版)延迟情况最佳实践
|
存储 数据采集 运维
Alibaba Cloud Lens for OSS最佳实践
——其冀 阿里云智能产品专家
Alibaba Cloud Lens for OSS最佳实践
|
安全 对象存储 数据安全/隐私保护
对象存储 OSS 权限控制功能|学习笔记
快速学习对象存储 OSS 权限控制功能
894 0
|
存储 SQL 机器学习/深度学习
OSS加速器最佳实践-总述篇
OSS加速器最佳实践(总述篇)本最佳实践提供OSS加速器相关的信息和适合的场景,面向对oss和数据湖相关技术有一定了解的开发者。     大家可以通过这俩篇先做一些了解相关文档:《配置OSS加速器》https://help.aliyun.com/document_detail/190726.html《OSS加速器介绍》https://developer.aliyun.com/article/780
OSS加速器最佳实践-总述篇
|
SQL 分布式计算 关系型数据库
Hive 数仓迁移 JindoFS/OSS 数据湖最佳实践
Hive 数仓是大多数迁移客户都会遇到的场景。在迁移过程中,不建议同时在新集群进行业务升级(比如从 Hive on MR 迁移到 Hive on Tez 或 Spark SQL等),这些业务升级可以在迁移完成后进行。1. 元数据同步Hive 元数据是对于 Hive 表来说非常关键,除了表结构信息,里面还记录着 Hive 表与底层文件系统的关联关系,许多上层服务都依赖 Hive 元数据提供服务。a.
617 0
|
对象存储
云速搭部署OSS及资源包最佳实践
本实践通过云速搭设计一个 OSS 的架构,通过 OSS 提供的路径可以下载相应的文件。
云速搭部署OSS及资源包最佳实践
|
存储 分布式计算 MaxCompute
使用MaxCompute LOAD命令批量导入OSS数据最佳实践—STS方式LOAD开启KMS加密OSS数据
MaxCompute使用load overwrite或load into命令将外部存储的数据(如:oss)导入到MaxCompute前的授权操作。
951 0
|
存储 SQL 分布式计算
基于湖仓一体架构使用MaxCompute对OSS湖数据分析预测最佳实践
本篇最佳实践先创建EMR集群作为数据湖对象,Hive元数据存储在DLF,外表数据存储在OSS。然后使用阿里云数据仓库MaxCompute以创建外部项目的方式与存储在DLF的元数据库映射打通,实现元数据统一。最后通过一个毒蘑菇的训练和预测demo,演示云数仓MaxCompute如何对于存储在EMR数据湖的数据进行加工处理以达到业务预期。
基于湖仓一体架构使用MaxCompute对OSS湖数据分析预测最佳实践
|
存储 缓存 边缘计算
最佳实践:使用阿里云CDN加速OSS访问
用户直接访问OSS资源,访问速度会受到OSS的下行带宽以及Bucket地域的限制。如果通过CDN来访问OSS资源,带宽上限更高,并且可以将OSS的资源缓存至就近的CDN节点,通过CDN节点进行分发,访问速度更快,且费用更低。如果采用动静分离的网站架构,就能够解决海量用户访问的性能瓶颈问题。
1716 0
最佳实践:使用阿里云CDN加速OSS访问