OSS之访问控制
来源:互联网 发布:linux zip 压缩 编辑:程序博客网 时间:2024/06/03 19:11
1. OSS之AccessKey
OSS提供了对象存储服务,在访问OSS资源时,根据访问者的信息可分为匿名访问和带签名访问。在OSS中签名涉及的AccessKey主要有三种:
- 阿里云账号AccessKey:云账号AccessKey对拥有的资源有完全的权限,每个阿里云账号能够同时拥有不超过5个active或者inactive的AK对(AccessKeyId和AccessKeySecret);
- RAM子账号AccessKey:RAM (Resource Access Management) 是阿里云提供的资源访问控制服务;RAM账号AK指的是通过RAM被授权的AK,这组AK只能按照RAM定义的规则去访问Bucket里的资源;通过RAM,您可以集中管理您的用户(比如员工、系统或应用程序),以及控制用户可以访问您名下哪些资源的权限;
- STS账号AccessKey:STS(Security Token Service)是阿里云提供的临时访问凭证服务,STS账号AK指的是通过STS颁发的AK;
相应有三种验签方式:AK验证/RAM验证/STS验证;
2. OSS之权限控制
OSS提供了多种形式的权限控制:Bucket级别权限/Object级别权限/账号级别权限(RAM)/临时账号权限(STS),具体如下:
Bucket级别权限:三种访问权限:public-read-write/public-read/private
Object级别权限:四种访问权限:private/public-read/public-read-write/default,具体如下:
账号级别权限(RAM):阿里云账号通过RAM创建自己AccessKey的子用户时,可通过Policy的配置方式指定授权内容,Policy具体见下节;
- 临时账号权限(STS):通过阿里云STS (Security Token Service) 服务为阿里云账号(或RAM用户)提供的短期访问权限,通过STS生成的凭证包括安全令牌(SecurityToken)、临时访问密钥(AccessKeyId, AccessKeySecret),可通过Policy的配置方式指定授权内容,Policy具体见下节;
3. OSS之Policy
{ "Version": "1", "Statement": [ { "Action": [ "oss:GetBucketAcl", "oss:ListObjects" ], "Resource": [ "acs:oss:*:1775305056529849:mybucket" ], "Effect": "Allow", "Condition": { "StringEquals": { "acs:UserAgent": "java-sdk", "oss:Prefix": "foo" }, "IpAddress": { "acs:SourceIp": "192.168.0.1" } } }, { "Action": [ "oss:PutObject", "oss:GetObject", "oss:DeleteObject" ], "Resource": [ "acs:oss:*:1775305056529849:mybucket/file*" ], "Effect": "Allow", "Condition": { "IpAddress": { "acs:SourceIp": "192.168.0.1" } } } ]}
这是一个授权的Policy,用户用这样的一个Policy通过RAM或STS服务向其他用户授权。Policy当中有一个Statement(一条Policy当中可以有多条Statement)。Statement里面规定了相应的Action、Resource、Effect和Condition。
这条Policy把用户自己名下的mybucket和mybucket/file*这些资源授权给相应的用户,并且支持GetBucketAcl、GetBucket、PutObject、GetObject和DeleteObject这几种操作。Condition中的条件表示UserAgent为“java-sdk”,源ip为“192.168.0.1”的时候鉴权才能通过,被授权的用户才能访问相关的资源。Prefix这个Condtion是在GetBucket(ListObjects)的时候起作用的,关于这个字段的解释详见OSS的API文档。
具体项含义请转官网:访问控制
4. OSS之访问实例
使用AppServer来做数据中转和数据隔离:
如上图所示,只有AppServer能访问云服务,ClientApp的每次读写数据都需要通过AppServer,AppServer来保证不同用户数据的隔离访问,对于该种使用方式,使用阿里云账号或者RAM账号提供的密钥来进行签名验证访问;避免出现安全问题,通常不使用阿里云账号;使用STS让用户直接访问OSS:
- App用户登录。App用户和云账号无关,它是App的终端用户,AppServer支持App用户登录。对于每个有效的App用户来说,需要AppServer能定义出每个App用户的最小访问权限;
- AppServer请求STS服务获取一个安全令牌(SecurityToken)。在调用STS之前,AppServer需要确定App用户的最小访问权限(用Policy语法描述)以及授权的过期时间。然后通过扮演角色(AssumeRole)来获取一个代表角色身份的安全令牌,角色管理与使用相关内容请参考RAM用户指南中的角色管理;
- STS返回给AppServer一个有效的访问凭证,包括一个安全令牌;(SecurityToken)、临时访问密钥(AccessKeyId, AccessKeySecret)以及过期时间;
- AppServer将访问凭证返回给ClientApp。ClientApp可以缓存这个凭证。当凭证失效时,ClientApp需要向AppServer申请新的有效访问凭证。比如,访问凭证有效期为1小时,那么ClientApp可以每30分钟向AppServer请求更新访问凭证;
- ClientApp使用本地缓存的访问凭证去请求Aliyun Service API。云服务会感知STS访问凭证,并会依赖STS服务来验证访问凭证,正确响应用户请求;
5. 参考
- 访问控制
- 临时账号权限(STS)
- 快速搭建移动应用直传服务
- OSS之访问控制
- OSS库对频率访问的控制
- HBase 之访问控制
- HBase 之访问控制
- swift之访问控制
- PHP之OSS
- CCNA之访问控制列表
- windows之 访问控制模型
- Swift学习之 访问控制
- C++访问控制之protected
- Java之访问权限控制
- 操作系统学习之访问控制
- 《ThinkInJava》之访问权限控制
- Tengine之IP访问控制
- C++ 之 访问控制与访问控制的继承
- 阿里云权限控制&&oss共享方案
- oss 访问文件缩写@150h_150w_2e
- LOGSTASH+ELASTICSEARCH+KIBANA处理OSS访问日志
- HDU-2017中国大学生程序设计竞赛-网络选拔赛-1005-CaoHaha's staff
- corresponds to your MySQL server version for the right syntax to use near错误原因之一
- BZOJ 1086 [SCOI 2005] 王室联邦
- Java 中的锁 -Lock 接口解析
- java 控制台输入(标准输入法)以及Scanner的用法、以及Console的用法
- OSS之访问控制
- HDOJ1232 并查集入门题
- jvm源码阅读笔记[1]:如何触发一次CMS回收
- 贪心算法--Dijkstra算法(单源最短路径算法)
- C
- java condition 使用及分析
- 国内Ubuntu下载地址
- 查询和索引的优化
- simpleAdapter讲解