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

使用STS访问

更新时间:2017-06-08 18:03:32

OSS可以通过阿里云STS服务,临时进行授权访问。使用STS时请按以下步骤进行:

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

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

  1. var OSS = require('ali-oss');
  2. var STS = OSS.STS;
  3. var co = require('co');
  4. var sts = new STS({
  5. accessKeyId: '<子账号的AccessKeyId>',
  6. accessKeySecret: '<子账号的AccessKeySecret>'
  7. });
  8. co(function* () {
  9. var token = yield sts.assumeRole(
  10. '<role-arn>', '<policy>', '<expiration>', '<session-name>');
  11. var client = new OSS({
  12. region: '<region>',
  13. accessKeyId: token.credentials.AccessKeyId,
  14. accessKeySecret: token.credentials.AccessKeySecret,
  15. stsToken: token.credentials.SecurityToken,
  16. bucket: '<bucket-name>'
  17. });
  18. }).catch(function (err) {
  19. console.log(err);
  20. });

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

  1. var OSS = require('ali-oss');
  2. var STS = OSS.STS;
  3. var co = require('co');
  4. var sts = new STS({
  5. accessKeyId: '<子账号的AccessKeyId>',
  6. accessKeySecret: '<子账号的AccessKeySecret>'
  7. });
  8. var policy = {
  9. "Statement": [
  10. {
  11. "Action": [
  12. "oss:Get*"
  13. ],
  14. "Effect": "Allow",
  15. "Resource": ["acs:oss:*:*:my-bucket/*"]
  16. }
  17. ],
  18. "Version": "1"
  19. };
  20. co(function* () {
  21. var token = yield sts.assumeRole(
  22. '<role-arn>', policy, 15 * 60, '<session-name>');
  23. var client = new OSS({
  24. region: '<region>',
  25. accessKeyId: token.credentials.AccessKeyId,
  26. accessKeySecret: token.credentials.AccessKeySecret,
  27. stsToken: token.credentials.SecurityToken,
  28. bucket: '<bucket-name>'
  29. });
  30. }).catch(function (err) {
  31. console.log(err);
  32. });
本文导读目录