全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网
对象存储 OSS

使用STS访问

更新时间:2017-06-13 11:43:48

OSS可以通过阿里云STS服务,临时进行授权访问。更多有关STS的内容请参考:阿里云STS

使用STS时请按以下步骤进行:

  1. 在官网控制台创建子账号,参考OSS STS
  2. 在官网控制台创建STS角色并赋予子账号扮演角色的权限,参考OSS STS
  3. 使用子账号的AccessKeyId/AccessKeySecret向STS申请临时token。
  4. 使用临时token中的认证信息创建OSS的Client。
  5. 使用OSS的Client访问OSS服务。

在使用STS访问OSS时,需要设置:sts_token参数,如下面的例子所示:

  1. require 'aliyun/sts'
  2. require 'aliyun/oss'
  3. sts = Aliyun::STS::Client.new(
  4. access_key_id: '<子账号的AccessKeyId>',
  5. access_key_secret: '<子账号的AccessKeySecret>')
  6. token = sts.assume_role('<role-arn>', '<session-name>')
  7. client = Aliyun::OSS::Client.new(
  8. endpoint: '<endpoint>',
  9. access_key_id: token.access_key_id,
  10. access_key_secret: token.access_key_secret,
  11. sts_token: token.security_token)
  12. bucket = client.get_bucket('my-bucket')

在向STS申请临时token时,还可以指定自定义的STS Policy。这样申请的临时权限是所扮演角色的权限与Policy指定的权限的交集。下面的例子将通过指定STS Policy申请对my-bucket的只读权限,并指定临时token的过期时间为15分钟:

  1. require 'aliyun/sts'
  2. require 'aliyun/oss'
  3. sts = Aliyun::STS::Client.new(
  4. access_key_id: '<子账号的AccessKeyId>',
  5. access_key_secret: '<子账号的AccessKeySecret>')
  6. policy = Aliyun::STS::Policy.new
  7. policy.allow(['oss:Get*'], ['acs:oss:*:*:my-bucket/*'])
  8. token = sts.assume_role('<role arc>', '<session name>', policy, 15 * 60)
  9. client = Aliyun::OSS::Client.new(
  10. endpoint: 'ENDPOINT',
  11. access_key_id: token.access_key_id,
  12. access_key_secret: token.access_key_secret,
  13. sts_token: token.security_token)
  14. bucket = client.get_bucket('my-bucket')

更详细的用法和参数说明请参考API文档

本文导读目录