阅读1134 返回首页    go 阿里云


使用STS访问__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云

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时,需要设置stsToken参数,如下面的例子所示:


var OSS = require('ali-oss');
var STS = OSS.STS;
var co = require('co');

var sts = new STS({
  accessKeyId: '<子账号的AccessKeyId>',
  accessKeySecret: '<子账号的AccessKeySecret>'
});

co(function* () {
  var token = yield sts.assumeRole(
    '<role-arn>', '<policy>', '<expiration>', '<session-name>');

  var client = new OSS({
    region: '<region>',
    accessKeyId: token.credentials.AccessKeyId,
    accessKeySecret: token.credentials.AccessKeySecret,
    stsToken: token.credentials.SecurityToken,
    bucket: '<bucket-name>'
  });
}).catch(function (err) {
  console.log(err);
});

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

var OSS = require('ali-oss');
var STS = OSS.STS;
var co = require('co');

var sts = new STS({
  accessKeyId: '<子账号的AccessKeyId>',
  accessKeySecret: '<子账号的AccessKeySecret>'
});

var policy = {
  "Statement": [
    {
      "Action": [
        "oss:Get*"
      ],
      "Effect": "Allow",
      "Resource": ["acs:oss:*:*:my-bucket/*"]
    }
  ],
  "Version": "1"
};

co(function* () {
  var token = yield sts.assumeRole(
    '<role-arn>', policy, 15 * 60, '<session-name>');

  var client = new OSS({
    region: '<region>',
    accessKeyId: token.credentials.AccessKeyId,
    accessKeySecret: token.credentials.AccessKeySecret,
    stsToken: token.credentials.SecurityToken,
    bucket: '<bucket-name>'
  });
}).catch(function (err) {
  console.log(err);
});

最后更新:2016-11-23 16:04:10

  上一篇:go 自定义域名绑定__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云
  下一篇:go 设置访问权限(ACL)__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云