版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
详细解答可以参考官方帮助文档
OSS可以通过阿里云STS服务,临时进行授权访问。使用STS时请按以下步骤进行:
在使用STS访问OSS时,需要设置stsToken参数,如下面的例子所示:
let OSS = require('ali-oss');let STS = OSS.STS;let sts = new STS({accessKeyId: '<子账号的AccessKeyId>',accessKeySecret: '<子账号的AccessKeySecret>'});async function assumeRole () {try {let token = yield sts.assumeRole('<role-arn>', '<policy>', '<expiration>', '<session-name>');let client = new OSS({region: '<region>',accessKeyId: token.credentials.AccessKeyId,accessKeySecret: token.credentials.AccessKeySecret,stsToken: token.credentials.SecurityToken,bucket: '<bucket-name>'});} catch (e) {console.log(e);}}assumeRole();
在向STS申请临时token时,还可以指定自定义的STS Policy。这样申请的临时权限是所扮演角色的权限与Policy指定的权限的交集。下面的例子将通过指定STS Policy申请对my-bucket的只读权限,并指定临时token的过期时间为15分钟:
let OSS = require('ali-oss');let STS = OSS.STS;let sts = new STS({accessKeyId: '<子账号的AccessKeyId>',accessKeySecret: '<子账号的AccessKeySecret>'});let policy = {"Statement": [{"Action": ["oss:Get*"],"Effect": "Allow","Resource": ["acs:oss:*:*:my-bucket/*"]}],"Version": "1"};async function assumeRole () {try {let token = await sts.assumeRole('<role-arn>', policy, 15 * 60, '<session-name>');let client = new OSS({region: '<region>',accessKeyId: token.credentials.AccessKeyId,accessKeySecret: token.credentials.AccessKeySecret,stsToken: token.credentials.SecurityToken,bucket: '<bucket-name>'});} catch (e) {console.log(e);}}assumeRole();