腾讯云对象存储跨账号授权策略设置

跨账号授权概述

腾讯云对象存储资源默认都是私有的,若拥有者希望将资源共享给他人,可以通过跨账号授权的方式,将腾讯云对象存储资源授权给他人访问,下面提供下面跨账号授权访问腾讯云对象存储资源的方式。

  • 基于BucketPolicy实现跨账号访问腾讯云对象存储。BucketPolicy是基于资源的授权策略,相比于IAMPolicy,BucketPolicy操作简单,支持在控制台直接进行图形化配置。BucketPolicy支持向其他账号的IAM子用户、匿名用户等授予带特定IP条件限制与Referer的访问权限。详细介绍描述请参见基于BucketPolicy的权限控制。

设置方式:

  • API/SDK:

PutBucketPolicy

DeleteBucketPolicy

GetBucketPolicy

  • 控制台设置:

1.登陆腾讯云对象存储控制台-空间管理-点击需要授权的Bucket-空间设置-权限设置-自定义权限

2.编辑器中,直接编辑。Bucketpolicy(合法json),大小限制16KB。

Bucketpolicy策略示例

1.授权跨账号对指定文件的读写权限

场景:企业帐号A,该账号拥有一个对象Object1,在名为Bucket1的存储空间的dir1目录下。另外一个企业帐号(accoutID:123334444455),需要拥有上述对象的读写权限。

{"Version":"2012-10-17","Id":"BucketId","Statement":[{"Sid":"OtherAccountAllow","Effect":"Allow","Principal":{"AWS":["arn:aws:iam::123334444455:root"]},"Action":["s3:GetObject","s3:PutObject"],"Resource":"arn:aws:s3:::Bucket1/dir1/Object1"}]}
#2.授权子账号对特定Bucket的读写权限

场景:企业帐号A(accoutID:123456789012),该账号拥有名为Bucket1的存储空间,希望授权其名为user1子账号的读写任何对象空间权限。

{"Version":"2012-10-17","Id":"BucketId","Statement":[{"Sid":"SubAccountAllow","Effect":"Allow","Principal":{"AWS":["arn:aws:iam::123456789012:user/user1"]},"Action":["s3:GetObject","s3:PutObject"],"Resource":"arn:aws:s3:::Bucket1/"}]}
#3.授权跨账号的子账号对指定文件的读写权限

企业帐号A(accoutID:123456789012),该账号拥有名为Bucket1的存储空间。另外一个企业帐号B(accoutID:123334444455)名为子账号user2,需要拥有企业帐号A,Bucket1中dir1目录下对象的读写权限。

这里涉及权限传递,首先企业帐号A需要利用BucketPolicy授予企业帐号B读取该目录下对象的权利。其次,子账号user2必须通过IAMpolicy显式的被授予访问Bucket1中dir1目录的权限。

步骤1:企业帐号A(accoutID:123456789012)通过Bucketpolicy为企业帐号B(accoutID:123334444455)授予读取Bucket1中dir1目录下对象的读写权限。

{"Version":"2012-10-17","Id":"BucketId","Statement":[{"Sid":"OtherAccountAllow","Effect":"Allow","Principal":{"AWS":["arn:aws:iam::123334444455:root"]},"Action":["s3:GetObject","s3:PutObject"],"Resource":"arn:aws:s3:::Bucket1/dir1/"}]}

步骤2:企业帐号(accoutID:123334444455)必须通过IAMpolicy显示的授予子账号user2访问Bucket1中dir1目录的权限。

{"Statement":[{"Action":["oss:GetObject","oss:PutObject","oss:AbortMultipartUpload"],"Effect":"Allow","Resource":["jrn:oss:::Bucket1/dir/"]}],"Version":"3"}