详细解答可以参考官方帮助文档
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();
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。