开发者社区 问答 正文

Ruby-SDK之如何实现使用STS访问?

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参数,如下面的例子所示: require 'aliyun/sts'
require 'aliyun/oss'
sts = Aliyun::STS::Client.new(
  access_key_id: '<子账号的AccessKeyId>',
  access_key_secret: '<子账号的AccessKeySecret>')
token = sts.assume_role('<role-arn>', '<session-name>')
client = Aliyun::OSS::Client.new(
  endpoint: '<endpoint>',
  access_key_id: token.access_key_id,
  access_key_secret: token.access_key_secret,
  sts_token: token.security_token)
bucket = client.get_bucket('my-bucket')


在向STS申请临时token时,还可以指定自定义的STS Policy。这样申请的临时权限是[backcolor=transparent]所扮演角色的权限与Policy指定的权限的交集。下面的例子将通过指定STS Policy申请对my-bucket的只读权限,并指定临时token的过期时间为15分钟: require 'aliyun/sts'
require 'aliyun/oss'
sts = Aliyun::STS::Client.new(
  access_key_id: '<子账号的AccessKeyId>',
  access_key_secret: '<子账号的AccessKeySecret>')
policy = Aliyun::STS::Policy.new
policy.allow(['oss:Get*'], ['acs:oss:*:*:my-bucket/*'])
token = sts.assume_role('<role arc>', '<session name>', policy, 15 * 60)
client = Aliyun::OSS::Client.new(
  endpoint: 'ENDPOINT',
  access_key_id: token.access_key_id,
  access_key_secret: token.access_key_secret,
  sts_token: token.security_token)
bucket = client.get_bucket('my-bucket')


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

展开
收起
青衫无名 2017-10-19 13:55:21 2256 分享 版权
阿里云 AI 助理回答

阿里云STS(Security Token Service)服务为用户提供了一种临时授权访问阿里云资源的方式,这对于需要按需或有限时间权限访问如OSS(对象存储服务)等资源的场景非常有用。您提到的流程和代码示例很好地概述了如何使用STS来安全地控制对OSS的访问。下面是对关键步骤和概念的简要总结:

1. 创建子账号

  • 在阿里云控制台创建RAM(Resource Access Management)子账号,这是为了实现更细粒度的权限管理。

2. 创建STS角色并授权

  • 创建一个RAM角色,并给这个角色分配特定的权限策略,比如允许访问某个OSS bucket。
  • 授予子账号扮演这个角色的权限,这样子账号就可以通过STS服务获取到该角色定义的临时权限。

3. 申请临时Token

  • 使用子账号的AccessKey ID和AccessKey Secret向STS服务发起请求,以获取包含临时AccessKey ID、AccessKey Secret和Security Token的临时凭证。这一步可以通过指定的角色和自定义Policy来进一步限制权限范围和有效期。

4. 使用临时凭证访问OSS

  • 利用从STS获得的临时凭证配置OSS客户端,包括endpoint、access_key_id、access_key_secret以及sts_token参数。
  • 之后,就可以通过这个OSS客户端进行受限的资源访问操作,权限受限于STS Policy和角色原本的权限交集。

自定义STS Policy示例

  • 您展示了如何在申请临时token时加入自定义Policy,例如只允许对特定bucket进行读取操作,并设定token的有效时间为15分钟。这确保了最小权限原则,提高了安全性。

API文档与参考资料

  • 阿里云提供了详细的API文档,其中包含了各个语言SDK的使用方法、参数说明及错误码解释,是进行具体开发和配置时的重要参考。

总之,通过STS服务,您可以灵活且安全地管理OSS资源的访问权限,特别是在需要临时或第三方访问时,这种方式能够有效提升系统的安全性与灵活性。记得在实际应用中根据业务需求调整角色权限和STS Policy,确保遵循最小权限原则。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答